使用Java構(gòu)建處理XM可擴(kuò)展性的應(yīng)用之一

字號(hào):

與 HTML 相比,XML 的優(yōu)勢(shì)之一在于其可擴(kuò)展性。有了這種特性,XML 就可以用 HTML 中不可能的方式來(lái)描述信息。本月,Todd 演示了如何構(gòu)建用 Java 處理 XML 的框架,同時(shí),適當(dāng)?shù)亟Y(jié)合了兩種語(yǔ)言的固有可擴(kuò)展性。
     介紹
     我在上個(gè)月展示了有關(guān) XML在企業(yè)中地位的案例(有關(guān)上月欄目,請(qǐng)參閱 參考資料)。除了 XML的發(fā)布方面之外,我還有意地試圖集中講解了應(yīng)用集成和數(shù)據(jù)交換問(wèn)題。我演示了使用通??捎玫腏ava 工具來(lái)對(duì) XML做語(yǔ)法分析和驗(yàn)證有多容易,還將這些方法與更傳統(tǒng)的特定方法作了比較。
     本月,我要沿這條思路深入探索--語(yǔ)法分析和確認(rèn)到目前為止還不錯(cuò),但還不是很成功。目前的問(wèn)題通常涉及到對(duì)做過(guò)語(yǔ)法分析的信息進(jìn)行某些處理。但是,如果不理解用于生成信息的標(biāo)記,該怎么辦?跟我一起沿著Java 和 XML 的邊界再前進(jìn)一點(diǎn),我還將向您展示如何使用 Java來(lái)解決這個(gè)問(wèn)題。
     XML標(biāo)記:怎么辦?
     讓我們直入問(wèn)題的中心。需要處理的 XML 特性是其定義新標(biāo)記的能力。XML的標(biāo)記說(shuō)明與其相關(guān)的內(nèi)容含義(以及有關(guān)其它標(biāo)記)的一些事項(xiàng)。因?yàn)閄ML 中的標(biāo)記集是開(kāi)放的(它與 HTML 不同,HTML中的標(biāo)記集是封閉的),所以,不可能構(gòu)建可以立即處理整個(gè)標(biāo)記集的應(yīng)用。這就為這種處理引入了一點(diǎn)不確定性。到底如何處理不理解的標(biāo)記呢?
     應(yīng)用程序可以忽略新標(biāo)記。這是在瀏覽器戰(zhàn)爭(zhēng)最激烈時(shí),瀏覽器供應(yīng)商通常采用的方法。的瀏覽器供應(yīng)商喜歡在其產(chǎn)品的每一個(gè)發(fā)行版中定義新標(biāo)記,而每個(gè)瀏覽器版本都默默地忽略那些不理解的標(biāo)記。這種方法很安全,但并不令人滿意。
     組織可以將標(biāo)記集標(biāo)準(zhǔn)化。這種方法聰明地回避了整個(gè)問(wèn)題。定義一個(gè)標(biāo)準(zhǔn)標(biāo)記集和一個(gè)文檔類型定義(DTD),然后拒絕任何不符合該模型的XML。對(duì)很多問(wèn)題而言,這確實(shí)是正確的解決方案。例如,銷售訂單就符合良好定義的模式。如果允許電子貿(mào)易伙伴定義新標(biāo)記(至少是沒(méi)有約束-這可能成為某些具有良好約束的標(biāo)記定義(如宏)的適用性的理由),那么什么也得不到。不幸的是,不是所有的應(yīng)用程序(例如XML 瀏覽器)都適合這種方法。
     應(yīng)用程序可以試著想出如何處理新標(biāo)記。瀏覽器和內(nèi)容顯示工具、以及其它通用的 XML工具必須在出現(xiàn)新的、但卻有效的標(biāo)記時(shí)正確操作。有幾種方法來(lái)解決這種問(wèn)題。可擴(kuò)展樣式表語(yǔ)言(XSL) 正是這樣一種嘗試。XSL提供一個(gè)轉(zhuǎn)換工具箱,該工具箱允許定義從不理解的標(biāo)記集到所理解的標(biāo)記集合的映射或轉(zhuǎn)換(例如,從XML 到 HTML)。但是,這種解決方案也有其限制。
     可以構(gòu)建新的框架。雖然以上每一個(gè)解決方案都存在,但是,我們將全面討論另一種解決方案。我們的解決方案要求允許瀏覽器或XML工具尋找并下載設(shè)計(jì)成處理新標(biāo)記的代碼,然后將這些代碼集成到應(yīng)用程序中。要做到這點(diǎn),我們將構(gòu)建新的框架。
     在討論構(gòu)建這種解決方案的事項(xiàng)之前,需要對(duì) XML再多了解一點(diǎn)。特別是,需要理解如何在應(yīng)用程序中操縱XML。需要理解文檔對(duì)象模型 (DOM)。
     DOM
     DOM 是獨(dú)立于平臺(tái)、中立于編程語(yǔ)言的API,它允許程序從應(yīng)用中訪問(wèn)和修改 XML 文檔的內(nèi)容和結(jié)構(gòu)。
     作為其核心,DOM定義了代表構(gòu)成 XML文檔的所有對(duì)象的一系列類型:元素、屬性、實(shí)體引用、注釋、文本數(shù)據(jù)、處理指示和其余對(duì)象。(本文使用 對(duì)象這個(gè)詞來(lái)泛指 XML 文檔的組成部件。)DOM最初被認(rèn)為是存在于瀏覽器中,現(xiàn)在已有了廣泛得多的作用。還需要指出的是:DOM不是特定于 XML 的。它同樣很好地適用于 HTML。