來(lái)遲了,人不多:為什么開(kāi)發(fā)人員對(duì)XML感到激動(dòng)
發(fā)表時(shí)間:2024-02-21 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]XML使許多只利用HTML難以解決的任務(wù)變得簡(jiǎn)單,使只利用HTML不可能完成的任務(wù)得以完成。因?yàn)閄ML是可擴(kuò)展的,開(kāi)發(fā)人員喜愛(ài)XML有許多原因。到底是哪個(gè)更令人感興趣,取決于每個(gè)人的需要。但有一點(diǎn)是肯定的,一旦用上XML,就可發(fā)現(xiàn),它正是解決許多令人感到棘手的問(wèn)題的有力工具。本節(jié)研究一些令開(kāi)發(fā)人員...
XML使許多只利用HTML難以解決的任務(wù)變得簡(jiǎn)單,使只利用HTML不可能完成的任務(wù)得以完成。因?yàn)閄ML是可擴(kuò)展的,開(kāi)發(fā)人員喜愛(ài)XML有許多原因。到底是哪個(gè)更令人感興趣,取決于每個(gè)人的需要。但有一點(diǎn)是肯定的,一旦用上XML,就可發(fā)現(xiàn),它正是解決許多令人感到棘手的問(wèn)題的有力工具。本節(jié)研究一些令開(kāi)發(fā)人員激動(dòng)的一般應(yīng)用。在第2章中,還會(huì)看到已經(jīng)用XML開(kāi)發(fā)出來(lái)的一些特殊應(yīng)用。
1.2.1 設(shè)計(jì)與特定領(lǐng)域有關(guān)的標(biāo)記語(yǔ)言
XML允許各種不同的專(zhuān)業(yè)(如音樂(lè)、化學(xué)、數(shù)學(xué)等)開(kāi)發(fā)與自己的特定領(lǐng)域有關(guān)的標(biāo)記語(yǔ)言。這就使得該領(lǐng)域中的人們可以交換筆記、數(shù)據(jù)和信息,而不用擔(dān)心接收端的人是否有特定的軟件來(lái)創(chuàng)建數(shù)據(jù)。特定領(lǐng)域的開(kāi)發(fā)人員甚至可以向本領(lǐng)域外的人發(fā)送文檔,有相當(dāng)?shù)睦碛煽梢哉J(rèn)為,至少接受文檔的人能夠查看文檔的內(nèi)容。
更進(jìn)一步說(shuō),為特別的領(lǐng)域創(chuàng)建標(biāo)記語(yǔ)言不會(huì)產(chǎn)生“病件”(bloatware)或是對(duì)于本專(zhuān)業(yè)外的人來(lái)說(shuō)產(chǎn)生不必要的復(fù)雜性。一般人也許不會(huì)對(duì)電力工程圖感興趣,但是電力工程師卻對(duì)此感興趣。一般人也許不需要在他的Web頁(yè)面中包括樂(lè)譜,但是作曲家卻要這樣做。XML讓電力工程師描述他們的電路圖,讓作曲家寫(xiě)樂(lè)譜,而不會(huì)互相干擾。對(duì)于瀏覽器開(kāi)發(fā)商來(lái)說(shuō),都不需要對(duì)特定的領(lǐng)域提供特殊的支持,也不需要提供復(fù)雜的插件。這一點(diǎn)現(xiàn)在已經(jīng)實(shí)現(xiàn)了。
1.2.2 自描述數(shù)據(jù)
過(guò)去40年來(lái)的大多數(shù)計(jì)算機(jī)數(shù)據(jù)都丟失了,不是因?yàn)樽匀粨p害或是備份介質(zhì)的磨損(雖然這也是一個(gè)問(wèn)題,這個(gè)問(wèn)題在XML中也沒(méi)有解決),而只是因?yàn)闆](méi)有人來(lái)寫(xiě)出如何讀取這些數(shù)據(jù)介質(zhì)和格式的文檔。在十年前的5.25英寸的軟盤(pán)上的Lotus 1-2-3文檔在今天的大多數(shù)公司內(nèi)都已經(jīng)讀不出來(lái)了。以不常用的格式保存的二進(jìn)制數(shù)據(jù),如Lotus Jazz 也許會(huì)永遠(yuǎn)地消失了。XML在基本水平上使用的是非常簡(jiǎn)單的數(shù)據(jù)格式?梢杂100%的純ASCII文本來(lái)書(shū)寫(xiě),也可以用幾種其他定義好的格式來(lái)書(shū)寫(xiě)。ASCII文本是幾乎不會(huì)“磨損”的。丟失一些字節(jié)甚至是相當(dāng)多的字節(jié),剩下的數(shù)據(jù)還是可以讀取的。這就與許多格式形成了鮮明的對(duì)比,如壓縮數(shù)據(jù)或是串行的Java對(duì)象,這些數(shù)據(jù)即使丟失一個(gè)字節(jié),剩余的數(shù)據(jù)也變得不可讀取了。
從高水平上來(lái)說(shuō),XML是自描述的。假設(shè)在23世紀(jì)有一個(gè)信息考古學(xué)者,他在軟盤(pán)上發(fā)現(xiàn)了如下一大段經(jīng)過(guò)時(shí)間的“沖刷”而保存下來(lái)的XML代碼:
<PERSON ID="p1100" SEX="M">
<NAME>
<GIVEN>Judson</GIVEN>
<SURNAME> McDaniel</SURNAME>
</NAME>
<BIRTH>
<DATE>2 Feb 1834</DATE> </BIRTH>
<DEATH>
<DATE>9 Dec 1905</DATE> </DEATH>
</PERSON>
即使這個(gè)考古學(xué)家不熟悉XML,但假設(shè)他可以講20世紀(jì)時(shí)的英語(yǔ),那么就可以很好地了解名為Judson McDaniel的人,此人出生在1834年2月21日,而死于1905年12月9日。事實(shí)上,數(shù)據(jù)中有一些空白或是損壞,還是可以得到這些信息。但對(duì)于專(zhuān)有格式的電子表格或是字處理程序的格式,就不是這么回事了。
更進(jìn)一步說(shuō),XML有很好的規(guī)格文檔。W3C的XML 1.0 規(guī)范和大量的論文書(shū)籍,如本書(shū),都向人們準(zhǔn)確地說(shuō)明如何來(lái)閱讀XML數(shù)據(jù)。沒(méi)有什么秘密使得人們發(fā)生失誤。
1.2.3 應(yīng)用間交換數(shù)據(jù)
由于XML是非專(zhuān)有的并易于閱讀和編寫(xiě),就使得它成為在不同的應(yīng)用間交換數(shù)據(jù)的理想格式。當(dāng)前正在開(kāi)發(fā)的一種這樣的格式是Open Financial Exchange(開(kāi)放財(cái)務(wù)交換,簡(jiǎn)寫(xiě)為OFX)格式。OFX是為個(gè)人財(cái)務(wù)程序,如Microsoft Money和Quicken交換數(shù)據(jù)而設(shè)計(jì)的。數(shù)據(jù)可以在程序間來(lái)回交換,還可以與銀行、經(jīng)紀(jì)事務(wù)所和其他機(jī)構(gòu)交換數(shù)據(jù)。
有關(guān)OFX的內(nèi)容將在第2章加以討論。
正如上面所討論的一樣,XML使用的是非專(zhuān)有的格式,不受版權(quán)、專(zhuān)利、商業(yè)秘密或是其他種類(lèi)的知識(shí)產(chǎn)權(quán)的限制。XML的功能是非常強(qiáng)大的,同時(shí)對(duì)于人類(lèi)或是計(jì)算機(jī)程序來(lái)說(shuō),都容易閱讀和編寫(xiě)。因而成為交換語(yǔ)言的首選。
使用XML而不是專(zhuān)有格式,人們就可以利用任何理解XML的工具來(lái)處理數(shù)據(jù)。還可以為不同的目的使用不同的工具。一個(gè)程序用來(lái)查看而另一程序用來(lái)編輯。XML使用戶(hù)不必因?yàn)閿?shù)據(jù)已經(jīng)用專(zhuān)有格式編寫(xiě)好了或是接受數(shù)據(jù)的人只接受專(zhuān)有格式而限制在一個(gè)特定的程序上。
例如,許多出版商需要用Microsoft Word發(fā)稿。這就意味著大多數(shù)作者必須使用Word,即使他們更愿意使用WordPerfect或是Nisus Writer。因而這就使得其他出版字處理軟件的公司陷入困境,除非他們的軟件能夠讀寫(xiě)Word文件。由于要想達(dá)到這個(gè)目的,就得讓開(kāi)發(fā)人員反向了解未載入文檔的Word文件格式,這使得在時(shí)間和資源上的投資大增。大多數(shù)其他字處理軟件具有有限的讀寫(xiě)Word文件的能力,但是通常都會(huì)丟失圖形、宏、樣式、修訂標(biāo)記和其他重要的特性。問(wèn)題就在于Word文檔的格式是不公開(kāi)的專(zhuān)有格式,而且還在不斷地變化。這樣Word就成為最后的勝利者,即使作者更喜愛(ài)其他的更簡(jiǎn)單的程序。如果在XML中開(kāi)發(fā)了一種通用的字處理格式,作者們就會(huì)使這個(gè)程序成為他們的首選程序。
1.2.4 結(jié)構(gòu)化和集成的數(shù)據(jù)
XML對(duì)于大型和復(fù)雜的文檔是理想的,因?yàn)閿?shù)據(jù)是結(jié)構(gòu)化的。這不僅使用戶(hù)可以指定一個(gè)定義了文檔中的元素的詞匯表,而且還可以指定元素之間的關(guān)系。例如,如果要將銷(xiāo)售客戶(hù)的地址一起放在Web頁(yè)面上,這就需要有每個(gè)客戶(hù)的電話號(hào)碼和電子郵件地址。如果向數(shù)據(jù)庫(kù)中輸入數(shù)據(jù),可確保沒(méi)有漏下的字段。還需要每部書(shū)都有一個(gè)作者。當(dāng)沒(méi)有數(shù)據(jù)輸入時(shí)還可提供一個(gè)缺省值。XML也提供客戶(hù)端的包括機(jī)制,可以根據(jù)多種來(lái)源集成數(shù)據(jù)并將其作為一個(gè)文檔來(lái)顯示。數(shù)據(jù)還可以馬上進(jìn)行重新排列。數(shù)據(jù)的各個(gè)部分可以根據(jù)用戶(hù)的操作顯示或隱藏。當(dāng)處理大型的信息倉(cāng)庫(kù),比如關(guān)系型數(shù)據(jù)庫(kù)時(shí)是極為有用的。