Nếu phải tiên đoán kỹ thuật tin học nào chắc chắn sẽ thịnh hành trong tương lai, ta không cần phải học chiêm tinh cũng nhắc đến XML. Vì hiện nay cả Microsoft lẫn phái đối lập (Sun, Oracles, IBM v.v..) đều ôm chầm lấy XML và dùng nó trong mọi ứng dụng.
Có lẽ bạn đã dùng qua HTML để viết các trang Web (xem Đại Cương về HTML). Trong một trang Web ta dùng những Tag Pairs (cặp nhãn hiệu mở đóng) để đánh dấu như <BODY> và </BODY>. Hãy quan sát một trang Web dưới đây:
Trong HTML Web page các Tag Pair đều được định nghĩa trước và không chứa đựng ý nghĩa gì về dữ kiện mà chúng kẹp bên trong, trừ trường hợp cho TITLE. Thí dụ H1 có nghĩa display hàng chữ bên trong (Tiển Em Đi) theo cở lớn nhất, nhưng hàng chữ ấy có thể là bất cứ thứ gì, không nhất thiết phải là tựa đề của bài thơ ở đây. Còn XML thì cho phép ta tự do đặt tên các Tag Pair để dùng khi cần. Nếu tính ra, Dynamic HTML có đến khoảng 400 Tags mà nếu muốn dùng ta phải nhớ hết. Trong khi đó, XML không có giới hạn về con số Tags và ta không cần phải nhớ Tag nào cả. Ý nghĩa của các Tag rất linh động và ta có thể sắp xếp các tags của XML theo loại cho hợp lý. Thí dụ muốn làm một trang XML về gia phả ta cần những Tag diễn tả nhân vật, ngày sanh, ngày tử, chỗ chôn, gia đình, cưới, ly dị .v.v..<HTML>
<HEAD>
<TITLE>Seeing you off</Title>
</HEAD>
<body>
<H1>Tiển Em Đi</H1>
Người đi một nửa hồn tôi chết,<BR>
Một nửa hồn kia đợi lãnh quà.<BR>
</BODY>
</Html>
Khi muốn trình bày các dữ kiện của một trang XML theo kiểu nào ta dùng một Style Sheet cho nó. Thí dụ ta muốn trình bày cùng một trang XML với những dữ kiện về giá cả khẩu phần trên một PC và một Mobile Phone (điện thoại di động), ta sẽ dùng hai Style Sheet khác nhau, một cho PC, cái kia cho Mobile Phone.
Trong trường hợp nầy, XML tiện ở chỗ khi giá cả khẩu phần thay đổi trên thị trường ta không cần phải làm một trang HTML mới cho chúng, chỉ tiếp tục dùng cùng một Style Sheet với dữ kiện mới.
Đi xa hơn nữa, sự trình bày không nhất thiết phải trên một màn ảnh cho người ta xem, nó có thể dưới hình thức âm thanh hay multimedia (vừa hình ảnh, vừa âm thanh). Tưởng tượng trong tuổi già bạn nằm trên Bãi Sau (Vũng Tàu) nghe đọc truyện Kiếm Hiệp của Kim Dung qua kỹ thuật dùng XML chứa truyện bằng Unicode cho chữ Việt và một Style Sheet biến chữ Việt nhận từ Internet qua Mobile Phone thành âm thanh, có nhiều giọng nam, nữ và khi nào trong Style Sheet có dùng BOLD thì người đọc nói lớn hơn.
Một công ty xây cất có thể dùng một chương trình chạy tự động (Robot) để dọ giá những vật liệu tư từ các công ty cung cấp qua cách dùng XML. Đây là khởi đầu cho việc giao dịch kinh doanh tự động (Business-To-Business hay B2B).
Có một quy ước về cách dùng XML để trao đổi dữ kiện đã được triển khai gọi là "Open Financial Exchange Format (OFX)". Người ta thiết kế OFX để cho các chương trình tài chánh như Microsoft Money và Quicken trao đổi dữ kiện hay gởi các dữ kiện tài chánh đến nhà băng .v.v..
Vì XML là một chuẩn công cộng, không thuộc về một công ty nào, nên người dùng không sợ phải đụng chạm ai về copyright, ba-tăng, hay bị giới hạn cách sử dụng .v.v..Thí dụ như với XML ta có thể tránh phải lệ thuộc hoàn toàn vào MSWord khi gởi một tài liệu vì sợ đầu kia người ta không có MSWord. Miễn là tất cả các Word Processors đều đọc, viết XML được, ta có thể dùng XML làm phương tiện trao đổi các tài liệu. Người dùng ở mỗi nơi có thể tự do chọn một Word Processor theo sở thích.
XML không những cho bạn định nghĩa các phần của tài liệu mà còn đặt qui ước về sự liên hệ của các phần ấy. Thí dụ bạn đang làm một trang Web để ghi tên những người bạn cần liên lạc, bạn có thể đòi hỏi cho mỗi người đều bắt buộc phải có số điện thoại và Email. Để khi đánh dữ kiện vào bạn sẽ không thiếu chi tiết nào.
Cuối cùng XML sẽ trở thành như một cơ sở dữ kiện với dạng phổ thông để ta dùng cách linh động.
Nên Tim Berners-Lee ở CERN, hồi năm 1990, sáng chế ra HTML, một phần nhỏ của SGML, nhưng dễ dùng, thích hợp với người phàm, mắt thịt như chúng ta, có thể được viết bằng tay, không cần một chương trình nào giúp đở (authoring tool). Sự thành công của HTML vượt quá sức tưởng tượng của chính soạn giả của nó.
Đến khoảng năm 1995 người ta bắt đầu thấy sự giới hạn của HTML, dầu nó được Netscape, Microsoft thêm thắt đủ thứ, bởi sự thịnh hành của Web. Do đó nhiều chuyên gia có ý định viếng thăm trở lại SGML, nhưng ớn nó quá.
Mùa hè 1996, Jon Bosak ở Sun Microsystem khởi đầu nhóm cộng tác (working group) W3C SGML, bấy giờ được gọi là nhóm XML. Mục đích của nhóm là đơn giản quá SGML để nó dễ dùng như HTML mà đồng thời mạnh mẽ, linh động (tức là vừa tốt, vừa đẹp, vừa bền lại vừa rẻ).
Tim Bray và C.M. Sperberg-McQueen viết hầu hết Specification (bản điều kiện kỹ thuật) nguyên thủy của XML. Trước đó, Bray đã có kinh nghiệm nhiều năm quản lý dự án "New Oxford English Dictionary". Ông muốn XML hội các điều kiện sau:
Tháng giêng năm 1998 Microsoft cho ra một chương trình miễn phí tên MSXSL để generate một trang HTML từ một cặp trang XML và XSL. Sau nầy thì Internet Explorer 5 có thể display trực tiếp một trang XML (bên trong có ghi phải tìm trang XSL ở đâu), không cần cho thấy kết quả trang HTML.
Đến tháng 2 năm 1998 W3C phê chuẩn cho chính thức thi hành Version 1.0 của XML Specification.
Bạn có thể dùng Notepad để viết trang trên và chứa trong một file tên là "chaohoi.xml" . XML dùng Unicode, nên bạn có thể dùng Notepad của Windows NT/2000 để Edit và chứa file dưới dạng Unicode thay vì text (xem Unicode cho chữ Việt). File XML có thể là Unicode hay một dạng nén của Unicode gọi là UTF-8 (nó dùng 1 byte để biểu diễn một mẫu tự nếu có thể được, nếu không được thì dùng 2 bytes như bình thường). Nếu bạn không có ý định dùng chữ Việt thì chỉ cần dùng ASCII text bình thường cho XML là được rồi.<?xml version="1.0" standalone="yes"?>
<gicungduoc>
Chào XML! Mạnh giỏi?
</gicungduoc>
Mỗi trang XML đều bắt đầu bằng một "XML processing instruction" (lệnh xử lý XML). Processing instruction bắt đầu với <? và chấm dứt với ?>. Chữ đầu tiên ngay sau <? là huấn lệnh xử lý, trong trường hợp nầy là "xml".
Trong câu processing instruction nói trên cũng có hai Attributes (phụ từ), đó là "version" (ấn bản) và "standalone" (đứng một mình) . Giá trị của chúng là "1.0" và "yes". Ở đây muốn nói rằng trang XML nầy được viết theo đúng XML 1.0 Specification và nó có thể làm việc một mình, không cần phải import (kéo thêm vào) file nào khác.
<gicungduoc> và </gicungduoc> là một Tag Pair. Nó kẹp một dữ kiện bên trong. Thật ra ta có thể đặt tên cho Tag nầy thứ gì cũng được. Tức là cùng một trang XML nói trên, ta đã có thể viết theo một trong ba cách sau đây:
Mặc dù các Tag có tên khác nhau, nhưng cả ba trang XML đều có cùng cấu trúc và dữ liệu. Tuy nhiên, nếu đã có dự kiến chúng ta nên chọn tên các Tag cho có ý nghĩa rõ ràng để dễ trình bày trang XML cách trong sáng sau nầy.<?xml version="1.0" standalone="yes"?>
<greeting>
Chào XML! Mạnh giỏi?
</greeting>
hay<?xml version="1.0" standalone="yes"?>
<chaohoi>
Chào XML! Mạnh giỏi?
</chaohoi>
hay<?xml version="1.0" standalone="yes"?>
<tailieu>
Chào XML! Mạnh giỏi?
</tailieu>
Nếu một trang XML không Well-Formed thì coi như xài không đuợc, không có chương trình xử lý nào sẽ chịu làm việc với dữ liệu bên trong của nó. Do đó một trang XML cần phải theo đúng các qui luật sau đây:
Mục đích của DTD là làm sau cho nhiều người hay chương trình khác nhau có thể đọc file lẫn nhau. Dưới đây là một trang XML với DTD ở đằng đầu:
Cái DTD nầy qui định rằng mỗi Document phải có một đề tựa và một danh sách các nhà xuất bản. Danh sách nầy có một hay nhiều nhà xuất bản. Mỗi nhà xuất bản phải có tên, còn những thứ email, homepage, address, voice, fax với dấu ? có nhgĩa là hoặc có một cái cũng được, không có cũng không sao. Thí dụ nhà xuất bản Alfred Publishing chỉ có tên và địa chỉ mà thôi. Tất cả những dữ kiện đều nằm dưới dạng text string. #PCDATA là viết tắt chữ "Parsed Character Data". Ngôn ngữ cho DTD lấy từ SGML. Trong thí dụ trên nó có vẻ đơn giản nhưng thật ra nó rất rắc rối và có nhiều giới hạn, thí dụ như không định nghĩa chính xác được các loại dữ kiện (data type).<?xml version="1.0" standalone="yes"?>
<!-- Bắt đầu DTD -->
<!DOCTYPE document [
<!ELEMENT document (title, publisher_list)><!-- document children -->
<!ELEMENT title (#PCDATA)>
<!ELEMENT publisher_list (publisher*)><!-- publisher children -->
<!ELEMENT publisher (name, email?, homepage?, address?, voice?, fax?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT homepage (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT voice (#PCDATA)>
<!ELEMENT fax (#PCDATA)>
]>
<!-- Cuối của DTD --><document>
<title>
Publishers of the Music of New York Women Composers
</title>
<publisher_list>
<publisher>
<name> ACA - American Composers Alliance</name>
<email>info@composers.com</email>
<homepage>http://www.composers.com/</homepage>
<address>170 West 74th St. NY NY 10023</address>
<voice>212-362-8900</voice>
<fax>212-874-8605</fax>
</publisher>
<publisher>
<name>Alfred Publishing</name>
<address>15535 Morrison South Oaks CA 91403</address>
</publisher>
</publisher_list>
</document>
Do đó Microsoft đề xướng XML Schemas với những ưu điểm sau:
Bạn thấy trong khi DTD dùng một ngôn ngữ khác thì chính Schema nầy được viết dưới dạng một trang XML. Mỗi element đều có data type, có thể là string, int, number, boolean, float hay date. Nếu bây giờ bạn chứa cái Schema nầy trong một file tên là "documentSchema.xml" rồi gạch bỏ phần DTD trong trang XML của document, chỉ thêm vào Start Tag của document tên của Schema như sau:<?xml version='1.0'?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"><ElementType name="title" content="textOnly" dt:type="string"/> <ElementType name="name" content="textOnly" dt:type="string"/> <ElementType name="email" content="textOnly" dt:type="string"/> <ElementType name="homepage" content="textOnly" dt:type="string"/> <ElementType name="address" content="textOnly" dt:type="string"/> <ElementType name="voice" content="textOnly" dt:type="string"/> <ElementType name="fax" content="textOnly" dt:type="string"/><ElementType name="document " content="eltOnly" order="one"> <element type="title" minOccurs="1" maxOccurs="1"/> <element type="publisher_list" minOccurs="1" maxOccurs="*"/> </ElementType><ElementType name="publisher_list" content="eltOnly" order="one"> <element type="name" minOccurs="1" maxOccurs="1"/> <element type="email" minOccurs="0" maxOccurs="1"/> <element type="homepage" minOccurs="0" maxOccurs="1"/> <element type="address" minOccurs="0" maxOccurs="1"/> <element type="voice" minOccurs="0" maxOccurs="1"/> <element type="fax" minOccurs="0" maxOccurs="1"/> </ElementType> </Schema>
là trang XML sẽ được browser validate trước khi display. Nếu Internet Explorer 5 là Default Browser của máy vi tính bạn, bạn chỉ cần double click tên của file XML để display trang XML. Để thấy trang XML document được display như thế nào bạn nên download example codes tại đây.<document xmlns="x-schema:documentSchema.xml">
Hãy chú ý hai hàng ở đàng đầu ngay sau XML declaration:<?xml version='1.0'?> <?xml:stylesheet type="text/xsl" href="Library.xsl"?> <library xmlns="x-schema:LibrarySchema.xml"> <name>Thư viện Vovisoft</name> <book hardback="yes"> <title>C++ Programming for Beginners</title> <author> <first-name>Claude</first-name> <last-name>Schwartz</last-name> </author> <callno>005.682/C3</callno> <online_url>http://vovisoftLibrary/online_books/005682C3.html</online_url> </book> <journal series="XML Users Journal"> <title>XML Users Journal August 1999</title> <date>1999-08-6</date> <callno>005.233/C2</callno> </journal> <video> <title>Titanic</title> <director> <name>James Cameron</name> </director> <callno>643.88/T</callno> </video> <book> <title>The C Programming Language</title> <author> <first-name>Brian</first-name> <last-name>Kernighan</last-name> </author> <author> <first-name>Dennis</first-name> <last-name>Ritchie</last-name> </author> <callno>005.724/C2</callno> <online_url>http://VoviosoftLibrary/online_books/005724C2.html</online_url> </book> </library>
Hàng thứ nhất cho browser biết hãy dùng "Library.xsl" để transform (biến đổi) trang XML. Hàng thứ nhì bảo browser hãy dùng các qui luật trong file "LibrarySchema.xml" để validate trang XML. Dù tên một file XSL có extension là "XSL" thay vì "XML", file ấy vẫn được xem như là một trang XML khi ta muốn display hay validate chính nó.<?xml:stylesheet type="text/xsl" href="Library.xsl"?>
<library xmlns="x-schema:LibrarySchema.xml">
Trong trang XML trên có dữ kiện
về hai quyễn sách (book), nhưng chúng không nằm gần nhau. Thế mà khi được
display, chi tiết của hai quyễn sách sẽ nằm kế nhau. Đây là điều ta không
thể làm được với CSS.
Tiếp theo đây là listing của
"Library.xsl":
<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns="http://www.w3.org/TR/REC-html40" result-ns="">
<!-- default rule --> <xsl:template><xsl:apply-templates/></xsl:template>
<!-- root rule --> <xsl:template match="/"> <!-- Build the HTML page --> <html> <head> <title><xsl:value-of select="/library/name"/></title> </head> <body> <H1><xsl:value-of select="/library/name"/></H1> <H2>Catalog Listing</H2> <BLOCKQUOTE> <H3>Books:</H3> <BLOCKQUOTE> <!-- This template selects all the book elements --> <xsl:apply-templates select="/library/book"/> </BLOCKQUOTE> <H3>Journals:</H3> <BLOCKQUOTE> <!-- This template selects all the journal elements --> <xsl:apply-templates select="/library/journal"/> </BLOCKQUOTE> <H3>Videos:</H3> <BLOCKQUOTE> <!-- This template selects all the video elements --> <xsl:apply-templates select="/library/video"/> </BLOCKQUOTE> </BLOCKQUOTE> </body> </html> </xsl:template>
<xsl:template match="book"> <!-- Lets make the title link to the online URL --> <EM><A><xsl:attribute name="href"> <xsl:value-of select="online_url"/> </xsl:attribute> <xsl:apply-templates select="title"/> </A></EM><BR/><BR/> <!-- Create a table for the other details --> <TABLE BORDER="1" CELLPADDING="10"> <TR> <TD><B>Author(s):</B></TD> <TD><xsl:apply-templates select="author"/></TD> </TR> <TR BGCOLOR="#CCCCFF"> <TD><B>Call No:</B></TD> <TD><xsl:apply-templates select="callno"/></TD> </TR> </TABLE><BR/> </xsl:template>
<xsl:template match="video"> <EM><xsl:apply-templates select="title"/></EM><BR/><BR/> <!-- Create a table for the details --> <TABLE BORDER="1" CELLPADDING="10"> <TR> <TD><B>Director:</B></TD> <TD><xsl:apply-templates select="director"/></TD> </TR> <TR BGCOLOR="#CCCCFF"> <TD><B>Call No:</B></TD> <TD><xsl:apply-templates select="callno"/></TD> </TR> </TABLE> </xsl:template>
<xsl:template match="journal"> <EM><xsl:apply-templates select="title"/></EM><BR></BR> Date of Publication: <xsl:apply-templates select="date"/><BR></BR> <TABLE BORDER="1" CELLPADDING="10"> <TR BGCOLOR="#CCCCFF"> <TD><B>Call No:</B></TD> <TD ALIGN="CENTER"><xsl:apply-templates select="callno"/></TD> </TR> </TABLE> </xsl:template>
<xsl:template match="title"> <xsl:value-of/> <!-- insert the element content --> </xsl:template>
<xsl:template match="first-name"> <xsl:value-of/> </xsl:template>
<xsl:template match="last-name"> <xsl:value-of/><BR/> </xsl:template>
<xsl:template match="name"> <xsl:value-of/><BR/> </xsl:template>
<xsl:template match="date"> <xsl:value-of/> </xsl:template>
<xsl:template match="callno"> <FONT FACE="courier new"> <xsl:value-of/> </FONT> </xsl:template>
</xsl:stylesheet>Để thấy trang XML được display như thế nào bạn nên download example codes tại đây.
Theo qui định trong XSL, trang XML sẽ có dạng như diễn tả giữa Tag Pair <html>. Tên của Library được dùng cho cả Tittle của trang HTML lẫn H1. Mỗi lần Tag Pair Blockquote được dùng là để đẩy display bên trong nó xích qua bên phải một tí. Câu
bảo browser display tất cả books theo cách ghi rõ giữa Tag Pair <xsl:template match="book"> của Template của book. Bên trong Template của book bạn sẽ thấy có nhắc đến việc áp dụng Template của author và callno. Tag <xsl:value-of/> có nghĩa là display text string của element tại đó. Để ý tag <BR> đứng một mình là bất hợp lệ trong XML, nên nó phải được viết là <BR/>. Bạn có thể đọc thêm file "LibrarySchema.xml" để xem nó rắc rối hơn "documentSchema.xml" bao nhiêu, bên trong có chú thích.<xsl:apply-templates select="/library/book"/>
PcLeHoan
1996 - 2002
Mirror :
http://www.pclehoan.com
Mirror :
http://www.lehoanpc.net
Mirror :
http://www.ktlehoan.com