Như Phần 1 trong loạt bài này đã trình bày, sử dụng XML (và khái niệm tiền bối của nó, Ngôn ngữ Đánh dấu Tổng quát Chuẩn, hoặc SGML) dành cho tài liệu cho phép bạn phân tách nội dung của một tài liệu — những từ và dữ liệu thực sự mà nó chứa — từ biểu diễn của nó — theo cách mà nội dung được hiển thị theo định dạng đầu ra cụ thể hoặc trên thiết bị đầu ra riêng. Sự phân tách này cho phép bạn tập trung vào nội dung của tài liệu đó hơn là làm thế nào để thông tin sẽ được sử dụng hoặc biểu diễn. Phần 2 thảo luận về những cơ chế khác nhau cho phép bạn tổ chức tài liệu XML vào những đơn vị thông tin nhỏ hơn (được biết đến như là (sự phân mảnh (chunking)) một cách rộng rãi, để tạo những tài liệu lớn hơn hoặc những tài liệu cho các người dùng khác nhau bằng việc xâu chuỗi những mảnh thông tin khác nhau lại với nhau hoặc những mảnh thông tin giống nhau trong những chuỗi khác nhau.
Sự phát triển tự nhiên quá nhanh của XML như là môi trường tài liệu độc
lập-phần mềm mà tạo điều kiện tái sử dụng thông tin là cần thiết cho việc
tùy biến thông tin sao cho nội dung của nó biến đổi tùy theo người dùng và
định dạng đầu ra cụ thể. Việc tái sử dụng này thường được biết đến như là
tài liệu đơn nguồn, bởi vì một tập đơn những tệp tin đầu vào có
thể thỏa mãn các yêu cầu của đa người dùng hoặc nhiều định dạng đầu ra.
Một vài yêu cầu đơn nguồn được gắn một cách tự động bằng các công cụ mà
công cụ đó sản xuất đầu ra theo những định dạng khác nhau. Ví dụ, việc sản
sinh đầu ra PDF cho một tài liệu DocBook XML có chứa một liên kết đến các
tài nguyên mở rộng (sử dụng thành phần <ulink>) nhúng cả siêu liên kết đến thông tin đó và URL
thực sự của nó trong đầu ra, trong khi việc sản sinh đầu ra HTML từ cùng
tài liệu XML chỉ đơn giản là nhúng một liên kết vào đầu ra HTML đó.
Việc chuyển đổi một phần tử đơn theo các cách khác nhau cho những định dạng đầu ra khác nhau là một bước đi đúng cho tài liệu đơn nguồn, nhưng nó không cho phép tùy biến nội dung tài liệu trên những yêu cầu biểu diễn của nó. Có thể tùy biến nội dung thực sự của một tài liệu dựa trên định dạng đầu ra đích của nó là một yêu cầu khá phổ biến đối với tài liệu hiện đại. Thật may mắn, điều này được nhúng một cách dễ dàng bằng sự kết hợp giữa việc tiền xử lý và tận dụng ưu điểm của khía cạnh mềm dẻo trong thiết kế của các định dạng tài liệu chẳng hạn như DocBook XML.
Các thuộc tính và phần tử DocBook
Những phần tử XML sử dụng cặp tên-giá trị được gọi là các thuộc tính để cung cấp thông tin thêm về một thể hiện của một phần tử. Điển hình, những thuộc tính mà xác định một cách duy nhất các thể hiện của cùng một phần tử trong một tài liệu XML hoặc xác định hành vi được cụ thể hóa cho các thể hiện của một phần tử. Các thuộc tính được chứa trong phạm vi của một phần tử và có cú pháp:
<attribute_name="value"> |
Ví dụ, thuộc tính phổ biến nhất cho những phần tử XML là thuộc tính id, thuộc tính này xác định duy nhất một thể hiện
của một phần tử XML cho trước, như trong ví dụ sau đây:
<section id="introduction"> |
Trong tài liệu XML, các thuộc tính id hỗ trợ
việc tham chiếu chéo thông qua những phần tử chẳng hạn như các phần tử
<xref> và <link>. Đây là những ví dụ của những tham chiếu đến phần
tử <section> được sử dụng trong ví dụ
trước đó:
<xref linkend="introduction"/> <link linkend="introduction">introduction to this document</link> |
Một ví dụ của thuộc tính mà xác định hành vi được cụ thể hóa cho một phần
tử là thuộc tính role của phần tử <emphasis>:
<emphasis role="bold">example</emphasis> |
Nội dung nằm bên trong phần tử <emphasis>
được trả lại theo kiểu chữ nghiêng trong những định dạng biểu diễn chẳng
hạn như PDF hoặc HTML. Việc chỉ thị thuộc tính role="bold" thay đổi việc trả về của phần tử này từ chữ
nghiêng sang chữ đậm.
Những hướng tiếp cận khác cho tùy biến tài liệu
Về mặt lịch sử, những ngôn ngữ đánh dấu được hướng tới sản xuất tài liệu hỗ trợ mức độ tùy biến nào đó của một tập những phần tử mà chúng hỗ trợ. Việc tạo những phần tử tùy biến mà có thể được sử dụng theo những cách riêng với một công cụ cho trước là một đặc trưng của Ngôn ngữ Đánh dấu Tổng Quát gốc, hoặc GML, thế hệ trước của SGML (xem Tài nguyên để có thêm thông tin). Như gợi ý của các từ viết tắt, điểm khác nhau chính giữa GML và SGML là sự tiêu chuẩn hóa của tập những phần tử được biểu diễn ở một định nghĩa kiểu tài liệu cho trước.
Sau đó, cho dù SGML và các kiểu tài liệu XML được thiết kế để sử dụng một chuẩn, một tập phần tử được định nghĩa trước, nó vẫn có thể thêm vào những định nghĩa phần tử tùy biến bằng cách tham chiếu đến các tài nguyên mở rộng xác định những phần tử đó. Tuy nhiên, việc thêm những định nghĩa phần tử tùy biến vào một DTD hoặc lược đồ đang tồn tại là một ý tưởng tồi vì nhiều lý do khác nhau, quan trọng nhất là:
- Các tài liệu sử dụng những phần tử không chuẩn không còn phù hợp với những kiểu tài liệu chuẩn chẳng hạn như DocBook hoặc DITA.
- Việc mở rộng một DTD hoặc lược đồ giới hạn những cơ hội cho việc trao đổi tài liệu với những cơ quan hoặc công ty khác nhau mà những nơi này sử dụng các DTDs hoặc lược đồ tiêu chuẩn. Thậm chí nếu bạn cũng trao đổi các định nghĩa cho những phần tử không chuẩn của bạn, khối lượng việc tùy biến sẽ bị yêu cầu nhiều hơn cho sự trao đổi tài liệu thành công.
- Những công cụ được thiết kế để làm việc với các kiểu tài liệu chuẩn sẽ phải được mở rộng để hỗ trợ những phần tử mới. Mặc dù làm như vậy là khá dễ dàng với những công cụ nguồn mở, sự mở rộng này có thể là không thể được với những công cụ thuộc quyền sở hữu riêng, những công cụ nguồn đóng.
Bài viết này thảo luận về việc sử dụng một bước tiền xử lý để loại bỏ văn bản một cách có điều kiện mà không áp dụng cho một người dùng hoặc định dạng đầu ra cụ thể. Một vài công cụ tài liệu XML đồ họa cung cấp một giải pháp tương đương bằng việc cho phép bạn thiết lập các biến sử dụng trong suốt tiến trình sản sinh đầu ra. Bài viết này tập trung vào hướng tiếp cận phổ biến hơn của việc tiền xử lý mà có thể được sử dụng trong một phạm vi rộng lớn của những công cụ tài liệu XML nguồn mở hơn là vào những cơ chế hỗ trợ bằng những công cụ tài liệu cụ thể.
Những thuộc tính phổ biến cho các phần tử DocBook
Như người dùng có thể mong đợi, các phần tử XML khác nhau có các thuộc tính khác nhau dựa trên kiểu và tác dụng của phần tử cụ thể. Tuy nhiên, những lược đồ tài liệu XML và DTD chẳng hạn như kiểu tài liệu DocBook mà là trọng tâm của loạt bài viết này cũng định nghĩa một tập các thuộc tính phổ biến (xem Tài nguyên để biết thêm thông tin), tập này có thể được sử dụng trên bất kỳ phần tử XML nào và được sử dụng để nhận dạng thông tin cụ thể biểu diễn - hoặc đích - cụ thể cho một phần tử cho trước. Các ví dụ phổ biến của những thuộc tính này bao gồm:
arch: Được thiết kế để nhận dạng hệ thống máy tính hoặc kiến trúc bộ xử lý mà nội dung bên trong một thể hiện cho trước của một phần tử áp dụng vàoaudience: Được thiết kế để nhận dạng người dùng mà nội dung bên trong một thể hiện cho trước của một phần tử áp dụng vàocondition: Được thiết kế cho việc tùy biến nội dung cụ thể theo địa phương, theo ứng dụng cụ thểos: Được thiết kế để nhận dạng hệ điều hành máy tính mà nội dung bên trong một thể hiện cho trước của một phần tử áp dụng vàorevision: Được thiết kế để nhận dạng một phần mềm cụ thể hoặc việc sửa lại tài liệu mà nội dung bên trong một thể hiện cho trước của một phần tử áp dụng vàovendor: Được thiết kế để nhận dạng đại lý phần cứng hoặc phần mềm mà nội dung bên trong một thể hiện cho trước của một phần tử áp dụng vào
Xác định một tập các giá trị hợp lệ cho bất kỳ thuộc tính nào, sau đó thực
thi một tiền xử lý để loại bỏ những phần tử mà có những giá trị khác với
thuộc tính đó cung cấp một phương pháp dễ dàng để điều kiện hóa tài
liệu của bạn. Những thuộc tính mà bạn quyết định sử dụng cho việc tùy biến
là hoàn toàn tùy thuộc vào bạn, nhưng việc chọn lựa phụ thuộc vào những
thuộc tính nào ứng dụng tốt nhất cho kiểu nội dung mà bạn muốn điều kiện
hóa và lý do cho việc tùy biến đó. Bài viết này sử dụng thuộc tính condition chung như một ví dụ của điều kiện hóa
tổng quát cho định dạng đầu ra/biểu diễn cho trước.
Hai phần tiếp theo giải thích làm thế nào để sử dụng các thuộc tính để nhận dạng tùy theo điều kiện những phần tử cụ thể hoặc các phân đoạn nội dung bên trong một phần tử.
Bao hàm toàn bộ các phần tử một cách có điều kiện
Những thuộc tính phổ biến đã thảo luận trong phần
trước cung cấp một cách dễ dàng để xác định các phần của các tài
liệu của bạn mà bạn muốn liên kết với những người dùng và định dạng đầu ra
cụ thể. Đoạn này sử dụng thuộc tính condition
như là một ví dụ, nhưng bạn có thể sử dụng bất kỳ phần tử phổ biến nào đã
thảo luận trong những đoạn trước với điều kiện là chúng không được sử dụng
ngay từ đầu trên trang web của bạn.
Một kiểu phổ biến của nội dung được điều kiện hóa là văn bản mà xuất hiện trong một tài liệu khi nó được định dạng để dùng trong những định dạng biểu diễn khác nhau. Ví dụ, những tài liệu mà được thiết kế để sử dụng trực tuyến thường chứa những liên kết tới đoạn tiếp theo ở phần cuối của mỗi đoạn để điều hướng một cách đơn giản cho người đọc. Những liên kết này có thể thấy như sau:
<para> To proceed to the next section of this tutorial, click <link linkend="link-to-next-section">here</link>. </para> |
Mặc dù hữu dụng trong các tài liệu trực tuyến,
thông tin này vừa dư thừa vừa khó hiểu khi tài liệu tương tự được đinh
dạng như là tài liệu Adobe® PostScript® hoặc PDF. Để
xác định phần tài liệu này chỉ để sử dụng khi tài liệu được định dạng cho
biểu diễn trực tuyến, bạn có thể thêm thuộc tính condition="online" vào phần tử <para>, như trong ví dụ sau đây:
<para condition="online"> To proceed to the next section of this tutorial, click <link linkend="link-to-next-section">here</link>. </para> |
Thêm tiền xử lý vào tiến trình định dạng tài liệu
Thật là tốt nếu việc bổ sung các thuộc tính vào phần tử cho trước đã thảo
luận trong phần trước thực hiện đúng
đối với những công cụ tài liệu của bạn, nhưng trường hợp đó thực sự hiếm.
Để tận dụng ưu điểm của kiểu điều kiện này, bạn cần viết một tập lệnh XSL
nhỏ để loại bỏ phần kia của tài liệu của bạn khi bạn đang định dạng nó cho
những định dạng biểu diễn khác. Ví dụ 1 thể hiện một
ví dụ của tập lệnh XSL để loại bỏ những phần tử nội dung mà có thuộc tính
condition với giá trị không phải là print.
Ví dụ 1. Tập lệnh tiền xử lý cho đầu ra in ấn
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xi="http://www.w3.org/2003/XInclude">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:preserve-space elements="*"/>
<xsl:template match="*|@*">
<xsl:variable name="_element">
<xsl:value-of select="name()" />
</xsl:variable>
<xsl:variable name="_condition">
<xsl:value-of select="@condition" />
</xsl:variable>
<xsl:choose>
<xsl:when test="$_condition = ''">
<xsl:copy>
<xsl:apply-templates select="@* | * | text() | comment()" />
</xsl:copy>
</xsl:when>
<xsl:when test="$_condition = 'print'">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:message> Skipping <xsl:value-of select="$_element"/></xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
|
Chú ý: Tập lệnh này được viết để có thể đọc được, không hoa văn. Tất nhiên bạn có thể đơn giản hóa nó.
Tiếp tục với ví dụ trước, tập lệnh này trong Ví dụ 1
loại bỏ những phần tử mà thuộc tính condition
của nó xác định chúng như là đích cho những định dạng đầu ra khác. Đích
này lấy ra nội dung đã biểu diễn trong ví dụ "online-only" trước đó, bởi
vì thuộc tính condition của nó có giá trị online. Phần đầu tiên của tập lệnh xử lý mỗi phần
tử và gán tên của phần tử và giá trị bất kỳ cho thuộc tính condition vào các biến có liên quan. Phần còn lại
của tập lệnh tùy theo điều kiện đưa ra nội dung dựa trên giá trị của thuộc
tính condition. Nếu thuộc tính condition không tồn tại hoặc thuộc tính có giá
trị print, phần tử bên trong được sao chép đến
đầu ra của tập lệnh. Nếu thuộc tính condition
có bất kỳ giá trị khác, phần tử liên quan bị loại khỏi đầu ra, và xử lý
trước đó.
Để tích hợp một tập lệnh dễ dàng chẳng hạn như đưa vào tiến trình sản xuất tài liệu của bạn, bạn thêm nó vào một phần của Makefile để sản xuất tài liệu PDF hoặc PostScript. Để làm được như vậy, bạn sử dụng tập lệnh này cho xử lý tài liệu đầu vào của bạn, gửi một lần nữa đầu ra của nó vào một tệp tin, sau đó bạn định dạng cái nào thích hợp.
Ví dụ 2 đưa ra tập lệnh XSL tương tự, tùy biến để loại
bỏ những phần tử nội dung có thuộc tính condition với giá trị không phải là online. Thêm tập lệnh này vào một tệp đích Makefile cho tài
liệu trực tuyến cho phép chứa những phần tử chẳng hạn như những phần tử
trong các ví dụ mã lệnh trước đó chỉ nhận giá
trị trực tuyến (online).
Ví dụ 2. Tiền xử lý tập lệnh cho đầu ra trực tuyến
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xi="http://www.w3.org/2003/XInclude">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:preserve-space elements="*"/>
<xsl:template match="*|@*">
<xsl:variable name="_element">
<xsl:value-of select="name()" />
</xsl:variable>
<xsl:variable name="_condition">
<xsl:value-of select="@condition" />
</xsl:variable>
<xsl:choose>
<xsl:when test="$_condition = ''">
<xsl:copy>
<xsl:apply-templates select="@* | * | text() | comment()" />
</xsl:copy>
</xsl:when>
<xsl:when test="$_condition = 'online'">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:message> Skipping <xsl:value-of select="$_element"/></xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
|
So sánh mã XSL trong Ví dụ 1 và Ví dụ
2 thấy rằng chúng chỉ khác nhau ở một từ đơn, điều này làm cho
chúng thích hợp tốt với quá trình đơn giản hóa thông qua hỗ trợ các tham
số (stringparam) đã cung cấp trong XSL và do đó
trong xsltproc. Tôi để phần này như là một bài
tập, vì mục tiêu của những ví dụ này là rõ ràng, đây không phải là lớp học
cấp tốc về việc viết XSL.
Bao hàm các phân đoạn nội dung một cách có điều kiện
Những ví dụ trong phần trước cũng thích hợp để lấy hoặc loại ra toàn bộ phần tử dựa trên một giá trị thuộc tính. Tuy nhiên, hầu hết tài liệu XML được điều kiện hóa đòi hỏi việc điều kiện hóa những loại văn bản trong phần tử khác nhau. Phổ biến nhất, bạn có thể cần tùy biến nội dung cụ thể vào một đoạn. Điều này được thực hiện dễ dàng theo hai cách sau:
- Các phần tử điều kiện hóa có thể xuất hiện bên trong một đoạn
- Sử dụng phần tử
<phrase>để điều kiện hóa các phần của văn bản bên trong một đoạn
Để những phần tử điều kiện hóa có thể xuất hiện bên trong một đoạn, hãy
thêm thuộc tính mà bạn đang sử dụng cho điều kiện và một giá trị thích hợp
cho phần tử thích hợp bên trong một đoạn. Ví dụ, đoạn tài liệu trình bày
trong Ví dụ 3 cung cấp một phần tử điều kiện <mediaobject> bên trong một đoạn (đã định
dạng để có thể đọc được).
Ví dụ 3. Một phần tử mediaobject được điều kiện hóa
<para>
To create a new file, click the <emphasis
role="bold">Add</emphasis> icon
(<mediaobject>
<imageobject audience="online">
<imagedata fileref="add.gif"/>
</imageobject>
<imageobject audience="print">
<imagedata fileref="../../images/add.gif" />
</imageobject>
</mediaobject>)
beside the <emphasis role="bold">New File</emphasis> menu entry.
</para>
|
Mặc dù chủ yếu được sử dụng như là một ví dụ ở đây, điều kiện hóa phần tử
<mediaobject> cho phép bạn chỉ ra
những đường dẫn khác nhau đến vị trí đồ họa trong những định dạng biểu
diễn khác nhau. Trong trường hợp này, các tài liệu trực tuyến tìm kiếm đồ
họa trong vị trí tập trung trên máy chủ Web cho trước hoặc máy chủ Web ảo,
trong khi những tài liệu in ấn định vị đồ họa trên một thư mục riêng cho
những mục đích định dạng.
Việc sử dụng phần tử <phrase> để xác định
những đoạn của văn bản được điều kiện hóa là cái gì đó thú vị hơn. Với
phần tử <phrase>, bạn có thể thấy một
phạm vi cụ thể hoặc khoảng văn bản mà nhỏ hơn một đoạn và phù hợp hoàn
toàn với việc điều kiện hóa tài liệu. Ví dụ 4 (đã
định dạng để có thể đọc được) trình bày một ví dụ về điều kiện hóa một từ
đơn để làm cho văn bản rõ ràng hơn đối với một định dạng biểu diễn cho
trước.
Ví dụ 4. Điều kiện hóa một từ đơn
<p>
See the
<link linkend="target-id">
introduction to this
<phrase audience="online">portion</phrase>
<phrase audience="print">chapter</phrase>
of the documentation
</link>
for more information.
</p>
|
Sức mạnh và tính linh động của XML, tập các chuẩn đang tồn tại, và một tập phong phú các công cụ để làm việc và chuyển đổi các tài liệu XML cung cấp một môi trường mạnh cho việc tạo và dùy trì tài liệu. Những thuộc tính và kỹ thuật đã thảo luận trong bài viết này làm cho ta dễ dàng tạo ra tài liệu có điều kiện, tài liệu đó có thể chứa nội dung khác nhau nhắm tới những người dùng, những hệ thống máy tính, hoặc những định dạng biểu diễn cụ thể. Nếu bạn thêm một giai đoạn tiền xử lý đơn giản hoặc tập các biến để sử dụng trong tiến trình sản xuất tài liệu của bạn, bạn có thể tạo và duy trì tài liệu đơn nguồn để sản xuất đầu ra chuyên dụng. Chức năng này rõ ràng cung cấp một giải pháp hữu ích và mềm dẻo cho vấn đề đơn giản hóa sự phát triển và duy trì tài liệu truyền thống trong khi vẫn phục vụ tốt nhất các yêu cầu của tập cụ thể của những người dùng của tài liệu đó.
| Mô tả | Tên | Kích thước | Phương thức tải |
|---|---|---|---|
| Sample XSL script for print output | conditional-print.zip | 1KB | HTTP |
| Sample XSL script for online output | conditional-online.zip | 1KB | HTTP |
Học tập
- Sản
xuất tài liệu và tái sử dụng thông tin trong XML, Phần 1: Xuất bản tài
liệu sử dụng XML (William von Hagen, developerWorks, Tháng ba
2009): Dễ dàng lắp ráp một hệ thống xuất bản XML vào bất kỳ hệ thống
UNIX® hoặc Linux™. Tổ hợp miễn phí, các gói
nguồn mở với XML cho tái sử dụng thông tin có hiệu quả và sản xuất các tài
liệu theo nhiều định dạng từ một tập các tài liệu nguồn.
- Sản
xuất tài liệu và tái sử dụng thông tin trong XML, Phần 2: Tái sử dụng
thông tin trong tài liệu XML (William von Hagen, developerWorks,
Tháng ba 2009): Cấu trúc các tài liệu XML và các phân đoạn để sử dụng lại.
Với XInclude, bao gồm cả những đoạn tài liệu mở rộng, và với XPointer, bao
gồm cả những đoạn tài liệu nhỏ vào tài liệu lớn hơn trong Phần 2 của loạt
ba bài viết này.
- DocBook:
The Definitive Guide (DocBook: Hướng dẫn cuối cùng): Tìm kiếm
thông tin đầy đủ về đánh dấu DocBook trong SGML và XML. Văn bản đầy đủ của
cuốn sách này sẵn có trực tuyến, nhưng nó cũng đáng để mua một bản sao nếu
bạn xuất bản công việc nghiêm trọng đối với DocBook.
- DocBook XSL: The
Complete Guide (DocBook XSL: Hướng dẫn đầy đủ): Đọc thông tin cuối
cùng về những bảng tính mẫu DocBook và việc xuất bản. Văn bản đầy đủ của
cuốn sách này sẵn có trực tuyến nhưng hãy xem xét việc mua một bản sao nếu
công việc xuất bản quan trọng đối với bạn.
- Những thuộc tính phổ biến: Xem danh sách của tập phổ biến những
phần tử DocBook XML.
- GML: Đọc những mục cập nhật của Wikipedia về Ngôn ngữ Đánh dấu Tổng
quát hóa.
- IBM XML
certification: Tìm hiểu làm thế nào để bạn có thể trở thành một
Người phát triển được cấp chứng chỉ của IBM (IBM-Certified Developer) về
XML và những công nghệ liên quan.
- XML technical library (Thư viện công nghệ XML): Xem
developerWorks XML Zone với một phạm vi rộng lớn những bài viết công nghệ
và những kinh nghiệm, những bài viết, các chuẩn và IBM Redbooks.
- Các sự kiện kỹ thuật
developerWorks và web quảng bá: Trở lại hiện tại với những công
nghệ trong những phiên này.
- Kho sách về công nghệ: Trình duyệt những cuốn sách về XML,
DocBook, và những chủ đề công nghệ khác.
- developerWorks podcasts: Lắng
nghe những bài phỏng vấn và thảo luận thú vị giành cho những người phát
triển phần mềm.
Lấy sản phẩm và công nghệ
- 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. (Thực hiện DocBook Project site > file
releases và chọn docbook-xsl.)
- nXML mode: Nếu bạn
có kế hoạch soạn thảo các tài liệu XML trong hệ soạn thảo văn bản Emacs
(và bạn nên làm), hãy tải về phiên bản mới nhất của chế độ XML cho
Emacs.
-
Những phiên bản đánh giá sản phẩm
của IBM: Tải về hoặc khảo sát các bản dùng thử trực
tuyến trên IBM SOA Sandbox và nắm trong tay những công cụ phát
triển ứng dụng và những sản phẩm phần mềm trung gian từ DB2®,
Lotus®, Rational®, Tivoli®, và
WebSphere®.
Thảo luận
- Những diễn đàn thảo luận về XML: Tham gia vào bất kỳ các cuộc
thảo luận có liên quan đến XML.
- developerWorks XML zone: Chia sẻ suy nghĩ của bạn: Sau khi bạn
đọc bài viết này, hãy gửi những ý kiến và suy nghĩ của bạn trên diễn đàn
này. Những người biên tập XML kiểm soát diễn đàn và chào mừng ý kiến của
bạn.
- developerWorks blogs: Kiểm tra
những blog này và tham gia vào cộng đồng
developerWorks.
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