Sản xuất tài liệu và sử dụng lại thông tin trong XML, Phần 1: Xuất bản tài liệu bằng cách sử dụng XML

Tạo, định dạng và xuất bản các tài liệu bằng cách sử dụng các tiêu chuẩn XML và các công cụ mã nguồn mở

XML cung cấp một cách để nhận biết các mục dữ liệu và các thành phần con trong bất kỳ tập hợp dữ liệu có cấu trúc nào, nhưng nguồn gốc của nó khởi đầu từ việc phát triển và sản xuất tài liệu. Các tiêu chuẩn mở, mạnh mẽ để đánh dấu tài liệu XML và một tập hợp phong phú các công cụ sẵn có miễn phí để phân tích cú pháp tài liệu XML và chuyển đổi định dạng đã làm cho việc cài đặt và định cấu hình một môi trường đầy đủ để phát triển và định dạng tài liệu trên bất kỳ hệ thống UNIX® hay Linux®.

William von Hagen, Quản trị hệ thống, Tác giả, WordSmiths

William von Hagen đã là một tác giả và là một quản trị viên các hệ thống UNIX từ suốt hơn 20 năm qua và một người ủng hộ Linux từ năm 1993. Bill là tác giả hoặc đồng tác giả của các cuốn sách về các chủ đề như là Ubuntu Linux, Xen Virtualization, GNU Compiler Collection (GCC), SUSE Linux, Mac OS X, các hệ thống tệp tin Linux và SGML. Ông cũng đã viết rất nhiều bài viết cho các ấn phẩm Linux và Mac OS X và các trang web



28 08 2009

XML, đánh dấu và làm tài liệu

XML được thiết kế như là một cơ cấu để nhận biết nội dung có cấu trúc bên trong một tập hợp dữ liệu bằng cách bao bọc các phần phân cấp khác nhau của dữ liệu đó trong các thẻ văn bản để nhận biết vai trò của phần văn bản mà các thẻ này phân định ra trong hệ thống phân cấp đó. Các thẻ văn bản này, được gọi là cái đánh dấu, các thẻ hoặc đúng hơn là các phần tử, tuân theo một cấu trúc định trước. Cấu trúc này là riêng cho các kiểu dữ liệu khác nhau và được biết đến như một lược đồ hay, trong quá khứ, một DTD. Các lược đồ được viết bằng XML, trong khi các DTD có cú pháp riêng của chúng.

Các từ viết tắt thường sử dụng

  • DTD: Document Type Definition - Định nghĩa kiểu tài liệu.
  • HTML: Hypertext Markup Language - Ngôn ngữ đánh dấu siêu văn bản.
  • XHTML: Extensible Hypertext Markup Language - Ngôn ngữ đánh dấu siêu văn bản mở rộng.
  • XML: Extensible Markup Language -Ngôn ngữ đánh dấu mở rộng.
  • XSL: Extensible Stylesheet Language - Ngôn ngữ định kiểu mở rộng.

Ý tưởng về ngôn ngữ đánh dấu, và vậy thì chính XML, có nguồn gốc của nó từ trong các hệ thống sản xuất tài liệu mà ở đó các tệp tin văn bản chứa các lệnh xử lý hay các mã nhận dạng (identifier) cấu trúc cho các phần khác nhau của tài liệu. Các tệp tin văn bản này sau đó có thể được xử lý bằng phần mềm biết cách diễn giải các lệnh này và sản xuất kết quả đầu ra được định dạng dành cho một thiết bị đầu ra cụ thể. Sự tiến triển của các ngôn ngữ đánh dấu để làm tài liệu đã ngày càng tăng thêm sự trừu tượng hóa việc đánh dấu được sử dụng như thế nào.

Các ngôn ngữ đánh dấu ban đầu đã sử dụng các lệnh định dạng để chỉ rõ các chi tiết mức thấp như là các thay đổi phông và cỡ phông chữ. Những điều này đã phát triển nhanh chóng thành cách đánh dấu chung hơn để nhận dạng các thành phần cấu trúc và thành phần logic ví dụ như các thuật ngữ được làm nổi bật, các đoạn văn bản, các danh sách, các tiêu đề và v.v.

Các ngôn ngữ đánh dấu hiện đại hơn, chẳng hạn như Standard Generalized Markup Language (SGML- Ngôn ngữ đánh dấu tổng quát hóa tiêu chuẩn) và XML, đã phổ biến rộng rãi cách đánh dấu cấu trúc trừu tượng hơn như là các sách, các chương, các mục và v.v.. SGML cũng đã thêm các khái niệm về một DTD để cho phép các công cụ SGML kiểm tra sự tuân thủ theo đúng các tập hợp phần tử đánh dấu cụ thể và các bối cảnh trong đó các phần tử này có thể xuất hiện trong cấu trúc của một kiểu tài liệu cụ thể.

XML rõ ràng đã giải phóng việc đánh dấu ra khỏi lĩnh vực làm tài liệu, mở rộng việc sử dụng nó cho bất kỳ kiểu dữ liệu có cấu trúc nào và bổ sung thêm yêu cầu về nội dung chính xác về ngữ pháp và cú pháp (well-formed), ở đây cả hai thẻ mở và đóng cho mỗi phần tử phải có mặt. Mặc dù những phiên bản ban đầu của đặc tả XML đã thừa kế các DTD từ SGML, các phiên bản sau này của đặc tả kỹ thuật đã đưa vào sử dụng các lược đồ (schema) để xác định cấu trúc của dữ liệu XML. Các lược đồ là tương đương với các DTD nhưng chính chúng được viết bằng XML và cung cấp một mô hình linh động hơn để định nghĩa các phần tử hợp lệ, các kiểu dữ liệu của chúng và bối cảnh trong đó chúng có thể xuất hiện trong một tài liệu XML.

Ý tưởng tách nội dung của một tài liệu (các từ hay dữ liệu thực sự mà nó có chứa) khỏi cách trình bày của nó (cách thức nó được hiển thị theo một định dạng kết quả cụ thể hoặc trên một thiết bị đầu ra cụ thể) là ý tưởng then chốt đằng sau các ngôn ngữ đánh dấu hiện đại và cụ thể là SGML và XML.

Mặc dù XML làm cho dễ dàng tạo ra các DTD và các lược đồ cho các ứng dụng và các ngành công nghiệp cụ thể, một trong những lợi thế to lớn của nó trong lĩnh vực làm tài liệu là sự tồn tại một số các DTD và các lược đồ tiêu chuẩn dành cho việc đánh dấu tài liệu. Nổi tiếng nhất trong số này là DocBook, Text Encoding Initiative (TEI), XHTML và các lược đồ và các DTD được sử dụng bởi Darwin Information Typing Architecture (DITA-Kiến trúc định kiểu thông tin Darwin). Bài viết này tập trung vào DocBook, một lược đồ được biết đến nhiều nhất và được sử dụng rộng rãi nhất để đánh dấu tài liệu.

Tổng quan về quy trình xuất bản các tài liệu XML

Vì chú trọng vào việc phân tách nội dung khỏi cách trình bày, XML vốn đã là một cơ cấu "viết một lần, đọc nhiều lần", làm dễ dàng cho việc tái sử dụng thông tin trong nhiều tài liệu hoặc tùy chỉnh thông tin cho một định dạng kết quả đầu ra hoặc những người đọc cụ thể. Các bài viết khác trong loạt này sẽ nghiên cứu các chủ đề này chi tiết hơn.

Trong bối cảnh của bài viết này, thuật ngữ xuất bản (publishing) quy về việc chuyển đổi một tài liệu từ một tệp tin văn bản có chứa đánh dấu DocBook thành một hay nhiều tệp tin kết quả đầu ra theo một định dạng trình bày cụ thể, ví dụ như HTML, Adobe®'s Portable Document Format (PDF), PostScript, Microsoft®'s Rich Text Format (RTF) và v.v.. Việc tạo ra kết quả HTML từ các tài liệu XML là một quá trình một-bước, sử dụng một ứng dụng đơn lẻ để tạo ra kết quả HTML. Quá trình để sản xuất ra kết quả PDF, PostScript hoặc RTF chỉ cần đòi hỏi thêm một bước nữa:

  1. Phân giải bất kỳ các tệp tin bao gồm thêm hoặc tham chiếu ra ngoài, có trong tài liệu DocBook và sử dụng một bảng định kiểu XSL để tạo ra một phiên bản của tài liệu đó theo định dạng Đối tượng định dạng (Formatting Object -FO).
  2. Đối với kết quả đầu ra PDF, PostScript hoặc RTF, chuyển đổi phiên bản FO của tài liệu DocBook thành một tệp tin đầu ra theo định dạng được chỉ rõ.

Nhiều công cụ mã nguồn mở có sẵn để thực hiện các phép chuyển đổi này, nhưng bài viết này tập trung vào ba công cụ mà tôi đã thấy là cung cấp các giải pháp linh hoạt nhất và có ích nhất. Bảng 1 mô tả những công cụ này.

Bảng 1. Các công cụ chuyển đổi mã nguồn mở được trình bày trong bài viết này
Công cụMô tả
fopMột ứng dụng Java™ để chuyển đổi đầu vào XML thành các định dạng kết quả đầu ra như là PDF, PostScript, RTF và vv. Bạn cần phải cài đặt một Java Virtual Machine (JVM-Máy ảo Java) trên hệ thống của bạn để thực hiện ứng dụng này.
xmltoMột kịch bản lệnh shell Bourne-Again đơn giản và một bộ các bảng định kiểu có liên quan để tạo ra kết quả đầu ra HTML từ dữ liệu đầu vào XML. Kịch bản lệnh này yêu cầu một số tiện ích mã nguồn mở khác, ví dụ như findmktemp của GNU.
xsltprocMột ứng dụng biên dịch, sử dụng các bảng định kiểu XSL để chuyển đổi dữ liệu đầu vào XML thành định dạng kết quả đầu ra XML khác. Để thực hiện phép chuyển đổi này, bạn cũng cần phải cài đặt các bảng định kiểu XSL DocBook. Trong khi fop có thể chấp nhận dữ liệu đầu vào XML DocBook nếu có một bảng định kiểu thích hợp, việc sử dụng một trình chuyển đổi XML thành FO độc lập ví dụ như là xsltproc làm đơn giản hoá việc gỡ rối khi có vấn đề trong các tệp đầu vào DocBook của bạn.

Mấy phần dưới đây giải thích làm thế nào để tải về và cài đặt các ứng dụng này. Một phần tiếp sau đó cung cấp một kịch bản lệnh shell để buộc tất cả chúng lại với nhau và cung cấp một số các tùy chọn tiện lợi để chỉ rõ các định dạng kết quả, bảng định kiểu tùy chỉnh và v.v.

Lấy về và cài đặt phần mềm cần thiết

Xem Tài nguyên để có các thông tin tìm ở đâu để nhận được các gói cung cấp phần mềm và các bảng định kiểu đã thảo luận trong phần trước.

Lưu ý: Nếu bạn sử dụng một hệ thống Linux, có nhiều khả năng là các tiện ích xmltoxsltproc đã được cài đặt trên hệ thống của bạn rồi hay ít nhất cũng là chúng sẵn có trong các kho lưu trữ hay đĩa cài đặt của bản phân phối của bạn. Bạn cũng phải cài đặt một JVM hiện có để chạy fop— Trình biên dịch GNU (GNU Compiler) cho Java không cung cấp tất cả các khả năng mà fop yêu cầu.

Nhiều gói trong số các gói này cài đặt phần mềm ở các vị trí cụ thể để cho phần mềm quản lý gói trong hệ thống của bạn có thể theo dõi và cập nhật phần mềm khi cần thiết. Điều này không đúng với các bảng định kiểu XSL DocBook và Formatting Objects Processor (FOP- Trình xử lý các đối tượng định dạng) của Apache; chúng được tải về như các tệp tin lưu trữ, có chứa một thư mục gốc mức cao nhất và nhiều thư mục con.

Để thống nhất một môi trường định dạng và phân tích cú pháp của tài liệu, một ý tưởng tốt là cài đặt bất kỳ gói phần mềm nào mà không bị buộc cứng với đường dẫn tên (pathname) vào trong một thư mục còn chưa tồn tại, ví dụ /home/doc. Điều này mang lại một vị trí duy nhất, nơi bạn có thể tìm kiếm các tệp tin có liên quan, nâng cấp phần mềm khi cần thiết và thu thập thêm các công cụ và các bảng định kiểu mà bạn có thể phát triển hoặc tích lũy.

Đối với các gói phần mềm đã thảo luận trong phần trước để làm việc với kịch bản lệnh thống nhất được cung cấp trong phần kế tiếp, hãy thực hiện các lệnh trong Liệt kê 1 với tư cách người dùng root trên hệ thống Linux hay UNIX của bạn.

Liệt kê 1. Các lệnh để thực hiện công việc fop, xmltoxsltproc với kịch bản lệnh thống nhất
      mkdir /home/doc
      mkdir /home/doc/bin
      mkdir /home/doc/external
      mkdir /home/doc/external/SAVE
      mkdir /home/doc/XSL

Sau khi tải về các tệp tin nén (.zip) cho FOP và các bảng định kiểu XSL DocBook, đặt chúng trong thư mục /home/doc/external, di chuyển tới thư mục đó và giải nén các nội dung của chúng tại đây, sử dụng các lệnh trong Liệt kê 2.

Liệt kê 2. Các lệnh để trích xuất FOP và các bảng định kiểu XSL DocBook
      cd /home/doc/external
      unzip fop-0.95-bin.zip
      unzip docbook-xsl-1.74.3.zip
      chmod 755 fop-0.95/fop

Để kiểm tra xem tất cả các gói phần mềm cần thiết được cài đặt trên hệ thống của bạn chưa, hãy thực hiện các lệnh trong Liệt kê 3.

Liệt kê 3. Các lệnh để kiểm tra tất cả các gói phần mềm cần thiết được cài đặt
      xmlto --version
      xsltproc --version
      java --version

Nếu các ứng dụng xmltoxsltproc và một JVM đã được cài đặt đúng trên hệ thống của bạn và nằm trong đường dẫn thực thi, mỗi lệnh trong các lệnh đó sẽ trả về thông tin phiên bản của ứng dụng đó.

Viết một kịch bản lệnh trình bao bọc (wrapper) để xuất bản tài liệu

Bây giờ tất cả các phần mềm cần thiết để xuất bản DocBook đã được cài đặt trên hệ thống của bạn, tất cả những gì bạn phải làm là ghi nhớ tất cả các tùy chọn cần thiết và thi hành mọi việc theo đúng trình tự. Một cách khác là bạn có thể viết một kịch bản lệnh trình bao bọc đơn giản để buộc nối đúng đắn mọi việc này với nhau và cung cấp một số quyền kiểm soát trên toàn bộ quá trình xuất bản, giống như hiển thị trong Liệt kê 4, Liệt kê 5Liệt kê 6.

Kịch bản lệnh này tạo ra kết quả đầu ra HTML, PDF, hoặc RTF dựa trên các đối số mà bạn cung cấp. Khi tạo ra kết quả PDF hoặc RTF, nó sử dụng một quá trình hai bước để sinh ra kết quả PDF, đầu tiên thực thi xsltproc để tạo ra tệp tin FO từ đầu vào DocBook của bạn, sử dụng bảng định kiểu XSL được chỉ rõ trong biến driverfile để nhận biết các quy tắc chuyển đổi. Sau đó kịch bản lệnh trình bao bọc sử dụng ứng dụng fop để tạo ra định dạng kết quả đích từ tệp tin đó. Mỗi một trong các bước này bắt giữ các thông báo từ các ứng dụng được sử dụng (xsltprocfop) ghi vào trong các tệp tin tên là xsltproc.out và fop.out. Kịch bản lệnh sử dụng các tệp tin lệnh trung gian này để giám sát quá trình chuyển đổi và nắm bắt thông tin gỡ rối tiềm năng nếu có vấn đề phát sinh.

Liệt kê 4 Liệt kê 4 hiển thị đoạn đầu của kịch bản lệnh trình bao bọc mẫu, định nghĩa một thông báo cách sử dụng sẽ được hiển thị nếu bạn thực thi kịch bản lệnh không có đối số hoặc số lượng các đối số không đúng. Nó cũng đặt ra một số giá trị mặc định cho kịch bản lệnh và sau đó phân tích cú pháp các đối số dòng lệnh bằng cách sử dụng hàm getopt của shell Bash chuẩn. (Liệt kê 7 cho thấy kết quả in ra thông báo cách sử dụng này).

Liệt kê 4. Phần khởi tạo của kịch bản lệnh trình bao bọc đơn giản
#! /bin/bash 
#
# Simple script to generate HTML output from a DocBook file using 
# xmlto, or to generate PDF/RTF output by generating a fo file, 
# and then using Apache's FOP to format that.
#
# wvh@vonhagen.org
#

function usage {
        echo "Usage: $0 [OPTIONS] document-name"
        echo "  -D : produce draft mode document" 
        echo "  -d : use specified xsl driver (requires name of XSL file) "
        echo "  -h : generate HTML output (requires output directory name)"
        echo "  -k : attempt PDF generation even if xsltproc errors were encountered"
        echo "  -n : suppress TOC" 
        echo "  -r : produce RTF output rather than PDF" 
        exit 1
}

dir=`dirname $0`

XSLTPROC="xsltproc"
PATH=$dir/../external/fop-0.95:${PATH}

if [ $# == 0 ] ; then
        usage
        exit 
fi

driverfile="$dir/../external/docbook-xsl-1.74.3/fo/docbook.xsl"
# driverfile="$dir/../XSL/generic-print-driver.xsl"
draft="no"
keepgoing="no"
RTFoutput="no"
HTMLoutput="no"

while getopts ":d:h:Dknr" opt
do
  case $opt in
      d  ) 
           driverfile=$OPTARG
           echo "Using driver file: $driverfile"
           if [ ! -f $driverfile ] ; then
               echo "  Driver file not found"
               exit 1
           fi
           ;;
      D  )
           draft="yes"
           echo "Producing Draft Mode Document"
           ;;
      h  )
           HTMLdir=$OPTARG
           HTMLoutput="yes"
           echo "Producing HTML output to $HTMLdir instead of PDF"
           if [ -d $HTMLdir ] ; then
               echo "  Output directory $HTMLdir already exists"
               exit 1
           fi
           ;;
      k  )
           keepgoing="yes"
           echo "Will not stop if errors are encountered"
            ;;
      n  ) 
           notoc="--stringparam generate.toc ''"
           echo "Suppressing TOC..."
            ;;
      r  )
           RTFoutput="yes"
           echo "Producing RTF output rather than PDF"
            ;;
      \? ) 
           usage
           exit 1;;
  esac
done
shift $(($OPTIND - 1))

if [ ! -f $1 ] ; then
        echo "  Input file $1 not found - exiting."
        exit 
fi

Liệt kê 5 hiển thị phần kịch bản lệnh sử dụng ứng dụng xmlto để tạo ra HTML khi sản xuất HTML hoặc ứng dụng xsltproc để tạo ra kết quả FO từ tệp tin đầu vào XML khi bạn sản xuất ra kết quả PDF hoặc RTF. Kết quả từ bước chuyển đổi XML thành FO được ghi vào một tệp tin tạm thời có tên là xsltproc.out, tệp tin này làm đơn giản hoá việc gỡ rối nếu ứng dụng xsltproc bắt gặp các lỗi trong tệp tin đầu vào của bạn. Nếu có bất kỳ biến thể nào của từ error được phát hiện trong tệp tin này, kịch bản lệnh sẽ ra khỏi chế độ chạy thi hành sau khi nó tạo ra tệp tin FO. Sau đó bạn có thể kiểm tra tệp tin xsltproc.out, tệp tin này sẽ giúp bạn nhận ra và giải quyết vấn đề. Như trong Liệt kê 4, bạn cũng có thể chỉ rõ tùy chọn dòng lệnh -k để bắt buộc kịch bản lệnh tiếp tục ngay cả khi một số lỗi được phát hiện trong quá trình xử lý xsltproc.

Liệt kê 5. Tạo ra kết quả FO từ tệp tin đầu vào XML
doc_base=`basename $1 .xml`

echo "Processing base name: $doc_base"

if [ x$HTMLoutput != "xno" ] ; then
     xmlto -o $HTMLdir html $1
     exit
fi

echo "  Generating FO file:  $doc_base.fo"

$XSLTPROC --output $doc_base".fo" \
          --stringparam draft.mode $draft \
          --stringparam fop1.extensions 1 \
          --xinclude \
          $notoc \
          $driverfile \
          $1 1> xsltproc.out 2> xsltproc.out

probs=`grep -i error xsltproc.out | wc -l | sed -e 's; ;;g'`

if [ x$probs != "x0" ] ; then
          echo ""
          echo "PROBLEMS:"
          echo ""
          cat xsltproc.out
          echo ""
          if [ x$keepgoing = "xno" ] ; then
                  exit
          fi
fi

echo "    Fixing FO file references to system images..."
cat $doc_base".fo" | sed -e "s;\"url(\.\./external/;\"url($dir/\.\./external/;g" > $$
mv $$ $doc_base".fo"

Liệt kê 6 cho thấy giai đoạn cuối cùng của kịch bản lệnh có sử dụng ứng dụng fop để tạo ra kết quả PDF hoặc RTF từ một tệp tin FO. Như trong quá trình chuyển đổi XML thành FO, kết quả của bước chuyển đổi FO thành PDF/rtf được ghi vào một tệp tin tạm thời có tên là fop.out, tệp tin này làm đơn giản hoá việc gỡ rối nếu ứng dụng fop bắt gặp các lỗi trong tệp tin FO. Nếu việc tạo ra PDF/rtf không thành công, bạn có thể kiểm tra tệp tin fop.out, tệp này sẽ giúp bạn nhận ra và giải quyết vấn đề. Như trong Liệt kê 4, bạn cũng có thể chỉ rõ tùy chọn dòng lệnh -k để bắt buộc kịch bản lệnh để tiếp tục ngay cả khi một số lỗi được phát hiện trong quá trình xử lý xsltproc.

Liệt kê 6. Tạo ra kết quả PDF hoặc RTF từ tệp tin FO
if [ x$RTFoutput = "xno" ] ; then
    echo "  Generating PDF file: $doc_base"".pdf"
        fop -fo $doc_base".fo" -pdf $doc_base".pdf" 1> fop.out 2> fop.out
else
    echo "  Generating RTF file: $doc_base"".rtf"
        fop -fo $doc_base".fo" -rtf $doc_base".rtf" 1> fop.out 2> fop.out
fi

probs=`grep -i Exception fop.out | wc -l | sed -e 's; ;;g'`

if [ x$probs != "x0" ] ; then
        echo ""
        echo "EXCEPTION OCCURRED DURING PROCESSING:"
        echo ""
        cat fop.out
        echo ""
fi

Bạn có thể tải về một bản sao của kịch bản lệnh mẫu này, được gọi là xml-format.sh (xem xml-format.zip trong phần Tải về). Để cài đặt kịch bản lệnh này trên hệ thống của bạn, hãy tải về tệp tin zip và giải nén thành xml-format.sh vào thư mục /home/doc/bin. Sử dụng lệnh sau đây để đảm bảo chắc chắn kịch bản lệnh này có thể thực hiện:

      chmod 755 /home/doc/bin/xml-format.sh

Cuối cùng, hãy chắc chắn rằng thư mục /home/doc/bin nằm trong đường dẫn thực thi của bạn bằng cách chỉnh sửa tệp ~/.bashrc của bạn, thêm dòng sau đây vào cuối tệp tin đó hoặc bằng cách thi hành chính dòng lệnh này như là một lệnh tại dấu nhắc của phiên shell trên hệ thống của bạn:

      export PATH=/home/doc/bin:${PATH}

Nếu bạn thêm lệnh này vào tệp tin ~ /.Bashrc của bạn, chạy lệnh source đối với tệp tin này trong phiên đăng nhập hiện tại của bạn thì các thay đổi mới có tác dụng trong phiên shell hiện tại. Để làm điều này, thi hành lệnh sau đây:

      source ~/.bashrc

Xuất bản một tài liệu DocBook

Thực thi kịch bản lệnh xml-format.sh không có đối số sẽ hiển thị các thông tin tóm tắt về kịch bản lệnh cần được sử dụng như thế nào, như trong Liệt kê 7.

Liệt kê 7. Kết quả từ kịch bản lệnh xml-format.sh khi thực thi không có đối số
      Usage: xml-format.sh [OPTIONS] document-name
        -D : produce draft mode document
        -d : use specified xsl driver (requires name of XSL file) 
        -h : generate HTML output (requires output directory name)
        -k : attempt PDF generation even if xsltproc errors were encountered
        -n : suppress TOC
        -r : produce RTF output rather than PDF

Để tạo ra phiên bản PDF của một tài liệu DocBook, chỉ cần thi hành kịch bản lệnh với tên của tài liệu đó, như trong ví dụ sau:

      xml-format.sh sample-document.xml

Để tạo ra phiên bản HTML của một tài liệu DocBook bằng cách sử dụng kịch bản lệnh này, bạn phải sử dụng tùy chọn -h và chỉ rõ tên của thư mục đích chứa các tệp tin kết quả HTML. Ví dụ, để tạo ra một phiên bản HTML của một tài liệu DocBook trong thư mục HTML-output (có liên quan đến thư mục làm việc hiện tại của bạn, nếu cần), thi hành các lệnh sau đây:

      xml-format.sh -h HTML-output sample-document.xml

Thêm một tầng tuỳ biến XSL cho kết quả PDF

Theo mặc định, kịch bản lệnh xml-format.sh được cung cấp cùng với bài viết này sử dụng các bảng định kiểu kết quả mặc định được cung cấp trong gói XSL DocBook. Để thêm tuỳ chỉnh của riêng bạn, bạn có thể tạo bảng định kiểu của riêng mình để trước hết nạp bảng định kiểu XSL DocBook mặc định và sau đó cung cấp các giá trị tùy chỉnh cho các tham số bất kỳ mà bạn muốn ghi đè lên. Một ví dụ của một tầng tuỳ chỉnh được cung cấp trong bảng định kiểu generic-print-driver.xsl (xem generic-print-driver.xsl trong phần Tải về).

Để sử dụng bảng định kiểu khác với kịch bản lệnh xml-format.sh, bạn có thể sử dụng tùy chọn -d để chỉ rõ tên đường dẫn đầy đủ hoặc tên đường dẫn liên quan tới bảng định kiểu mà bạn muốn sử dụng hoặc bạn có thể thay đổi giá trị của biến driverfile trong kịch bản lệnh xml-format.sh. Kịch bản lệnh mẫu bao gồm một dòng để cho phép bạn sử dụng kịch bản lệnh ví dụ generic-print-driver.xsl. Đơn giản chỉ cần thêm dấu chú thích đối với giá trị trước đó của biến driverfile và không chú thích ở dòng tiếp theo, nơi chứa định nghĩa mới.

Tóm tắt

Sức mạnh và sự linh hoạt của XML, các bộ các tiêu chuẩn hiện có và một bộ công cụ phong phú để làm việc với và để chuyển đổi các tài liệu XML giúp bạn dễ dàng cài đặt và định cấu hình một bộ công cụ cho riêng mình để tạo ra kết quả đầu ra theo các định dạng khác nhau từ các tài liệu XML. Mặc dù nhiều công cụ thương mại có sẵn để chỉnh sửa và định dạng các tài liệu XML, việc tạo ra một bộ công cụ cho riêng mình để làm điều này giúp bạn hiểu rõ hơn về quy trình và bạn không thể hạ giá thấp hơn.

Tài nguyên

Học tập

  • DocBook: The Definitive Guide: Tìm thông tin đầy đủ về đánh dấu DocBook trong SGML và XML. Toàn bộ nội dung của cuốn sách này hiện có sẵn trực tuyến, nhưng thật đáng mua một bản in nếu bạn đang làm công việc xuất bản nghiêm túc với DocBook.
  • DocBook XSL: The Complete Guide: Đọc thông tin đáng tin cậy về các bảng định kiểu và công việc xuất bản DocBook. Toàn bộ nội dung của cuốn sách này hiện có sẵn trực tuyến, nhưng thật đáng mua một bản in nếu bạn đang làm công việc xuất bản nghiêm túc với DocBook.
  • What is XSL-FO? (G. Ken Holman, O'Reilly xml.com, 03.2002): Hãy đọc kỹ một giới thiệu tuyệt vời về đặc tả đối tượng định dạng XSL.
  • OASIS DocBook Technical Committee: Nhận thông tin về các phiên bản hiện tại và tương lai của tiêu chuẩn DocBook. Trang web OASIS cung cấp rất nhiều thông tin về XML và các tiêu chuẩn mở.
  • DocBook-related mailing lists at OASIS: Cùng tham gia các cuộc thảo luận chung về việc đánh dấu và các ứng dụng DocBook để xử lý và định dạng các tài liệu DocBook.
  • XML Schema 1.1, Part 1: An introduction to XML Schema 1.1 (Neil Delima, Sandy Gao. Michael Glavassevich, Khaled Noaman; developerWorks; 12.2008): Nhận thông tin chi tiết về việc định nghĩa và tổ chức lược đồ XML.
  • DTD, XML Schema, and DSD: Tìm một so sánh tốt về các DTD và các lược đồ và trỏ đến An Introduction to XML and Web Technologies, một cuốn sách tốt thực hiện theo tiêu đề của nó.
  • IBM XML certification: Tìm hiểu cách bạn có thể trở thành một nhà phát triển có chứng chỉ IBM về XML và các công nghệ liên quan.
  • XML technical library: Xem Vùng XML developerWorks với rất nhiều các bài viết và các lời khuyên kỹ thuật, các hướng dẫn, các tiêu chuẩn và các sách đỏ của IBM.
  • developerWorks technical events and webcasts: Theo sát công nghệ trong các phiên này.
  • developerWorks podcasts: Nghe các cuộc phỏng vấn và các cuộc thảo luận thú vị dành cho các nhà phát triển phần mềm.

Lấy sản phẩm và công nghệ

  • Apache FOP: Tải về phiên bản mới nhất cho hệ điều hành của bạn. Nhấn vào Tải về ở bên trái.
  • xsltproc: Tải về phiên bản mới nhất cho các hệ thống UNIX và Linux.
  • DocBook DTD: Tải về phiên bản mới nhất và bắt đầu.
  • DocBook XSL Stylesheets: Tải về phiên bản mới nhất. (Đi đến DocBook Project site > file releases và chọn docbook-xsl.)
  • xmlto: Tải về phiên bản mới nhất nếu nó chưa có sẵn trên hệ thống của bạn. Tùy thuộc vào phiên bản của UNIX hay Linux mà bạn đang chạy, bạn có thể cũng cần phải tải về và cài đặt Bash, the Bourne-Again shell, GNU find and friendsmktemp.
  • IBM Java SDK: Tải về bộ dung cụ của các nhà phát triển này cho nền tảng của bạn. Bạn có thể cần phải tải về và cài đặt SDK Java của IBM để cài đặt và sử dụng trình định dạng FOP Apache trên một số bản phân phối Unix và Linux.
  • IBM product evaluation versions: Tải về hoặc khám phá dùng thử trực tuyến trong Sandbox SOA của IBM và nhận các công cụ phát triển ứng dụng thực hành và các sản phẩm phần mềm trung gian từ DB2®, Lotus®, Rational®, Tivoli® và WebSphere®.

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở
ArticleID=423605
ArticleTitle=Sản xuất tài liệu và sử dụng lại thông tin trong XML, Phần 1: Xuất bản tài liệu bằng cách sử dụng XML
publish-date=08282009