XML, k thut tin hc trong tương lai
Nếu phi tiên đoán k thut tin hc nào chc chn s thnh hành trong tương
lai, ta không cn phi hc chiêm tinh cũng nhc đến XML. Vì hin nay c
Microsoft ln phái đối lp (Sun, Oracles, IBM v.v..) đều ôm chm ly XML và
dùng nó trong mi ng dng. Vy XML là gì? XML, viết tt ca ch
eXtensible Markup Language, là mt b qui lut v cách chia mt tài liu ra
làm nhiu phn, ri đánh du và ráp các phn khác nhau li để d nhn din
chúng.
Có l bn đã dùng qua HTML để viết các trang Web. Trong mt trang Web ta dùng nhng Tag
Pairs (cp nhãn hiu m đóng) để đánh du như <BODY> và </BODY>. Hãy quan sát mt trang
Web dưới đây:
<HTML>
<HEAD>
<TITLE>Zensoft Website</Title>
</HEAD>
<body>
<H1>Chuyên Thiết kế</H1>
Website, Gia công phn mm,<BR>
Theo yêu cu.<BR>
</body>
</Html>
Trong HTML Web page các Tag Pair đều được định nghĩa trước và không cha đựng ý nghĩa gì
v d kin mà chúng kp bên trong, tr trường hp cho TITLE. Thí d H1 có nghĩa display hàng
ch bên trong (Tin Em Đi) theo c ln nht, nhưng hàng ch y có th là bt c th gì, không
nht thiết phi là ta đề ca bài thơ đây. Còn XML thì cho phép ta t do đặt tên các Tag Pair
để dùng khi cn. Nếu tính ra, Dynamic HTML có đến khong 400 Tags mà nếu mun dùng ta
phi nh hết. Trong khi đó, XML không có gii hn v con s Tags và ta không cn phi nh
Tag nào c. Ý nghĩa ca các Tag rt linh động và ta có th sp xếp các tags ca XML theo loi
cho hp lý. Thí d mun làm mt trang XML v gia ph ta cn nhng Tag din t nhân vt, ngày
sinh, ngày t, ch chôn, gia đình, cưới, ly d .v.v..
Phân bit D LIU vi CÁCH TRÌNH BÀY
XML din t cu trúc và ý nghĩa ca các phn ca tài liu ch không quan tâm đến cách trình
bày tài liu. Ngược li HTML bao gm va cách trình bày, thí d như <B> </B> được dùng cho
BOLD (ch đậm), va cu trúc, thí d như các Tag dùng bên trong mt TABLE .
Khi mun trình bày các d kin ca mt trang XML theo kiu nào ta dùng mt Style Sheet cho
nó. Thí d ta mun trình bày cùng mt trang XML vi nhng d kin v giá c khu phn trên
mt PC và mt Mobile Phone (đin thoi di động), ta s dùng hai Style Sheet khác nhau, mt cho
PC, cái kia cho Mobile Phone.
Trong trường hp ny, XML tin ch khi giá c khu phn thay đổi trên th trường ta không
cn phi làm mt trang HTML mi cho chúng, ch tiếp tc dùng cùng mt Style Sheet vi d
kin mi.
Đi xa hơn na, s trình bày không nht thiết phi trên mt màn nh cho người ta xem, nó có th
dưới hình thc âm thanh hay multimedia (va hình nh, va âm thanh). Tưởng tượng trong tui
già bn nm trên Bãi Sau (Vũng Tàu) nghe đọc truyn Kiếm Hip ca Kim Dung qua k thut
dùng XML cha truyn bng Unicode cho ch Vit và mt Style Sheet biến ch Vit nhn t
Internet qua Mobile Phone thành âm thanh, có nhiu ging nam, n và khi nào trong Style Sheet
có dùng BOLD thì người đọc nói ln hơn.
Trao đổi d kin, tài liu
Vì c tài liu XML đều nm dưới dng Text String nên nếu gi đi xa có hư mt chút đỉnh, đầu
kia cũng đoán ra được. Gi d vào thế k 23 sau ny có ai bt được mt tài liu XML ca năm
2000, nhưng trong đó có vài ch b m, h cũng đoán <FA ILY>Trương Thúy Sơn <FAM LY>
có nghĩa là <FAMILY>Trương Thúy Sơn <FAMILY>. Mc du ta nói ai mun đặt ra TAG nào
trong XML cũng được, nhưng thí d mi ngh nghip như hóa hc, y hc, toán hc, âm nhc n
định mt s TAGs, mi TAG có ý nghĩa theo s đồng ý trước trong ngh ca mình, người ta có
th dùng XML và Style Sheet để quy định cách cha d kin và ngay c cách trình bày cho riêng
ngh ca mình.
Mt công ty xây ct có th dùng mt chương trình chy t động (Robot) để d giá nhng vt liu
tư t các công ty cung cp qua cách dùng XML. Đây là khi đầu cho vic giao dch kinh doanh
t động (Business-To-Business hay B2B).
Có mt quy ước v cách dùng XML để trao đổi d kin đã được trin khai gi 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 kin hay gi các d kin tài chánh đến nhà băng
.v.v..
Vì XML là mt chun công cng, không thuc v mt công ty nào, nên người dùng không s
phi đụng chm ai v copyright, ba-tăng, hay b gii hn cách s dng .v.v..Thí d như vi XML
ta có th tránh phi l thuc hoàn toàn vào MSWord khi gi mt tài liu vì s đầu kia người ta
không có MSWord. Min là tt c các Word Processors đều đọc, viết XML được, ta có th dùng
XML làm phương tin trao đổi các tài liu. Người dùng mi nơi có th t do chn mt Word
Processor theo s thích.
XML không nhng cho bn định nghĩa các phn ca tài liu mà còn đặt qui ước v s liên h ca
các phn y. Thí d bn đang làm mt trang Web để ghi tên nhng người bn cn liên lc, bn có
th đòi hi cho mi người đều bt buc phi có s đin thoi và Email. Để khi đánh d kin vào
bn s không thiếu chi tiết nào.
Cui cùng XML s tr thành như mt cơ s d kin vi dng ph thông để ta dùng cách linh
động.
Mt chút lch s ca XML
XML được trin khai nh s đóng góp ca rt nhiu người trong mưi năm qua. Cách đây hơn
10 năm ta có SGML (Standard Generalised Markup Language), mt ngôn ng quc tế rt phc
tp, dùng để din t tài liu đa dng và có cu trúc tinh vi. Tuy rng nó làm gì cũng được nhưng
quá rc ri, khó hc, khó dùng và nht là các dng c ca nó cũng rt đắt tin.
Nên Tim Berners-Lee CERN, hi năm 1990, sáng chế ra HTML, mt phn nh ca SGML,
nhưng d dùng, thích hp vi người phàm, mt tht như chúng ta, có th được viết bng tay,
không cn mt chương trình nào giúp đở (authoring tool). S thành công ca HTML vượt quá
sc tưởng tượng ca chính son gi ca nó.
Đến khong năm 1995 người ta bt đầu thy s gii hn ca HTML, du nó được Netscape,
Microsoft thêm tht đủ th, bi s thnh hành ca Web. Do đó nhiu chuyên gia có ý định viếng
thăm tr li SGML, nhưng n nó quá.
Mùa hè 1996, Jon Bosak Sun Microsystem khi đầu nhóm cng tác (working group) W3C
SGML, by gi được gi là nhóm XML. Mc đích ca nhóm là đơn gin quá SGML để nó d
dùng như HTML mà đồng thi mnh m, linh động (tc là va tt, va đẹp, va bn li va r).
Tim Bray và C.M. Sperberg-McQueen viết hu hết Specification (bn điu kin k thut) nguyên
thy ca XML. Trước đó, Bray đã có kinh nghim nhiu năm qun lý d án "New Oxford
English Dictionary". Ông mun XML hi các điu kin sau:
đơn gin đủ cho lp trình viên áp dng
không gii hn trong tiếng Anh ca nước M
d cho Search Engine (như Yahoo, AltaVista, Infoseek .v.v..) sp loi
Bn Specification nháp đầu tiên ca XML được phát hành vào tháng 11 năm 1996, năm sau là
nhiu nhun bn. Tháng 7 năm 1997 Microsoft đem trình làng áp dng tht s đầu tiên ca
XML, Channel Definition Format (CDF). H dùng CDF để xut bn các trang Web đến nhng
khách đã đóng tin tháng (subscribers). CDF là mt phn ca Internet Explorer 4.0. Tháng năm
1997 Microsoft và Inso Corporation xut bn XSL (eXtensible Style Language) để làm Style
Sheet din t cách trình bày mt trang XML.
Tháng giêng năm 1998 Microsoft cho ra mt chương trình min phí tên MSXSL để generate mt
trang HTML t mt cp trang XML và XSL. Sau ny thì Internet Explorer 5 có th display trc
tiếp mt trang XML (bên trong có ghi phi tìm trang XSL đâu), không cn cho thy kết qu
trang HTML.
Đến tháng 2 năm 1998 W3C phê chun cho chính thc thi hành Version 1.0 ca XML
Specification.
Viết mt trang XML đơn gin
Ta hãy th viết mt trang XML đơn gin nht:
<?xml version="1.0" standalone="yes"?>
<ThegioiWebsite>
Zensoft chuyên Thiết kế website...
</ThegioiWebs>
Bn có th dùng Notepad để viết trang trên và cha trong mt file tên là "chaohoi.xml" . XML
dùng Unicode, nên bn có th dùng Notepad ca h điu hành Windows để Edit và cha file
dưới dng Unicode thay vì text (xem Unicode cho ch Vit). File XML có th là Unicode hay
mt dng nén ca Unicode gi là UTF-8 (nó dùng 1 byte để biu din mt mu t nếu có th
được, nếu không được thì dùng 2 bytes như bình thường). Nếu bn không có ý định dùng ch
Vit thì ch cn dùng ASCII text bình thường cho XML là được ri.
Mi trang XML đều bt đầu bng mt "XML processing instruction" (lnh x lý XML).
Processing instruction bt đầu vi <? và chm dt vi ?>. Ch đầu tiên ngay sau <? là hun lnh
x lý, trong trường hp ny là "xml".
Trong câu processing instruction nói trên cũng có hai Attributes (ph t), đó là "version" (n
bn) và "standalone" (đứng mt mình) . Giá tr ca chúng là "1.0" và "yes". đây mun nói rng
trang XML ny được viết theo đúng XML 1.0 Specification và nó có th làm vic mt mình,
không cn phi import (kéo thêm vào) file nào khác.
<ThegioiWebsite> và </ThegioiWebsite> là mt Tag Pair. Nó kp mt d kin bên trong. Tht
ra ta có th đặt tên cho Tag ny th gì cũng được. Tc là cùng mt trang XML nói trên, ta đã có
th viết theo mt trong ba cách sau đây:
<?xml version="1.0" standalone="yes"?>
<greeting>
Welcome to Zensoft Website
</greeting>
hay
<?xml version="1.0" standalone="yes"?>
<chaohoi>
Zensoft chúc các bn mt ngày làm vic vui v!
</chaohoi>
hay
<?xml version="1.0" standalone="yes"?>
<tailieu>
Zensoft tư vn min phí v IT cho khách hàng.
</tailieu>
Mc dù các Tag có tên khác nhau, nhưng c ba trang XML đều có cùng cu trúc và d liu. Tuy
nhiên, nếu đã có d kiến chúng ta nên chn 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.
Trên đây, tôi mi gii thiu cho các bn khái nim và cách viết 1 trang XML đơn gin. Phn sau,
tôi s gii thiu tiếp v Well-Formed XML, Kim soát ý nghĩa (Validating) ca XML, XSL.
Phn trước đã gii thiu qua v khái niêm ca XML, lch s ca XML, cách phn bit D Liu
vi Trình Bày và viết mt trang XMl đơn gin. Trong phn này, chúng ta s đề cp đến nhng
quy lut mà XML phi tuân theo và cách kim soát ý nghĩa ca XML.
Trước tiên, Chúng ta nói v các quy lut mà XML s phi tuân theo hay còn được gi là Well -
Formed XML. Bn thân XML có th có rt nhiu Tag, nhưng nếu không tuân theo Well -
Formed thì coi như không dùng được, không có chương trình x lý nào s chu làm vic vi d
liu bên trong nó. Do đó, mt trang XML cn phi theo đúng các quy lut sau đây:
- Trang XML phi bt đầu bng câu tuyên b XML (XML declaration)
- Mi b phn, gi là "element" phi nm gia mt Tag Pair.
- Nếu Tag nào không cha gì gia thì phi chm dt bng "/>", thí d như <BR/> hay <HR/>.
- Mt trang XML phi có mt element độc nht cha tt c các elements khác. Đó là root ca
tree biu din trang XML.
- Các Tag Pair không được xen k nhau (thí d như <name>John Stanmore<address>25 King
Street</name></address> là bt hp l vì <address> nm trong Tag Pair name).
và thêm mt vài qui lut v cách dùng các mu t đặc bit. Ngoài ra các Tag Pair phi đánh vn
đúng y như nhau k c ch hoa, ch thường, (thí d: <STUDENT> và </Student> là bt hp l)
và tt c giá tr các Attribute đều phi nm gia hai ngoc kép (thí d: standalone=yes là bt hp
l, phi dùng standalone="yes" mi được.)
Kim soát ý nghĩa (Validating) ca XML
XML cha các d kin bng cách dùng nhng Tag Pair, nhưng t nó không đòi hi các d kin
nào cn phi hin din hay chúng phi liên h nhau như thế nào. Có mt cách để thc hin vic
y là ghi vào phn đầu ca mt trang XML nhng qui lut n định các d kin phi như thế nào
để trang XML đuc xem là có ý nghĩa. Tp hp các qui lut y được gi là Document Type
Definition (DTD). Thí d, mt DTD có th nói rng mi document cha mt đề ta và mt hay
nhiu quyn sách, và mi quyn sách phi có mt ISBN độc nht, mt đề ta độc nht và mt
hay nhiu tác gi.
Mc đích ca DTD là làm sau cho nhiu người hay chương trình khác nhau có th đọc file ln
nhau. Dưới đây là mt trang XML vi DTD đằng đầu:
<?xml version="1.0" standalone="yes"?>
<!-- Bt đầ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)>