答: XML 是由萬(wàn)維網(wǎng)聯(lián)盟( World Wild Web Consortium , W3C )發(fā)起的。 XML 開(kāi)發(fā)工作始于 1996 年。
一群從業(yè)界到學(xué)院的眾多種標(biāo)記語(yǔ)言的專(zhuān)家,為 Web 開(kāi)發(fā)了一種簡(jiǎn)化版本的 SGML (標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言, Standard Generalized Markup Language ). 1998 年 2 月, XML 1.0 規(guī)范成為 W3C 的推薦標(biāo)準(zhǔn)。
問(wèn). XML 最大的優(yōu)點(diǎn)是什么?
答. XML 可以簡(jiǎn)化和降低數(shù)據(jù)在 Web 環(huán)境中進(jìn)行交換和發(fā)布所需要的成本。 XML 是一種可供計(jì)算機(jī)和人閱讀的基于文本的語(yǔ)法。 XML 可跨越不通平臺(tái)和設(shè)備提供數(shù)據(jù)可移植性和可重用性。它還具有靈活性和可擴(kuò)展性,在不破壞現(xiàn)有文檔結(jié)構(gòu)的前提下,答應(yīng)添加新的標(biāo)簽。基于 Unicode , XML 提供全球語(yǔ)言支持。
問(wèn). XML 有什么應(yīng)用?
答. XML 在 B2B 網(wǎng)絡(luò)應(yīng)用程序的數(shù)據(jù)交換格式中扮演重要角色,例如電子商務(wù)、供給鏈治理、工作流和應(yīng)用集成。 XML 的另一個(gè)應(yīng)用是結(jié)構(gòu)化信息治理,包括數(shù)據(jù)庫(kù)中的信息。 XML 還提供了獨(dú)立于媒體的發(fā)布,答應(yīng)一次書(shū)寫(xiě)文檔,以多種媒體格式和設(shè)備進(jìn)行發(fā)布。在客戶端, XML 還用于創(chuàng)建帶有數(shù)據(jù)的定制視圖。
答. XML 和 Java 技術(shù)是互補(bǔ)的。 Java 技術(shù)提供了可移植的、可維護(hù)的代碼,以便處理那些可移植的和可重用的數(shù)據(jù)。此外,XML 和 Java 技術(shù)具有很多共同的特性,使得它們可以在 Web 計(jì)算方面完美地結(jié)合,包括形成業(yè)界標(biāo)準(zhǔn)、平臺(tái)獨(dú)立、可擴(kuò)展、可重用、 以 Web 為中心和國(guó)際化等方面。
問(wèn). 在 Java 技術(shù)中使用 XML 有什么優(yōu)點(diǎn)?
答. 與其他編程語(yǔ)言如 C 或 C++ 相比, Java 技術(shù)使軟件開(kāi)發(fā)人員的生產(chǎn)力有了質(zhì)的提高。此外,開(kāi)發(fā)者使用 Java 平臺(tái),可以創(chuàng)建可重用和可維護(hù)的復(fù)雜的應(yīng)用程序,這是腳本語(yǔ)言無(wú)法做到的。協(xié)同使用 XML 和 Java ,開(kāi)發(fā)人員可以用很低的成本快速地構(gòu)建復(fù)雜的和可互操作的 Web 應(yīng)用程序。
問(wèn). Sun 參與了哪些 XML 相關(guān)的活動(dòng)?
答. Sun 積極參與 W3C 工作組,參加制定 XML 樣式表 / 轉(zhuǎn)換語(yǔ)言 (Stylesheet/Transformation , XSL/T) , XML Schema,Xlink 和 XML Query。 Sun 還參與了許多其他業(yè)界社團(tuán),包括 Oasis,XML.org 以及 Apache。
問(wèn). 在哪里可以找到更多的文檔?
答. Java 技術(shù)與 XML 文檔 頁(yè)面包含了本網(wǎng)站提供的所有關(guān)于 Java 技術(shù)和 XML 文檔的完全列表。
答. 關(guān)于在 Java 平臺(tái)使用 XML 技術(shù)的一般性討論話題,請(qǐng)訂閱 xml-interest@java.sun.com 。
Java API for XML PRocessing(JAXP ) 問(wèn). 什么是 Java API for XML Processing(JAXP)?
答. Java API for XML Processing,或簡(jiǎn)稱(chēng)為“JAXP”,可使應(yīng)用程序采用一種獨(dú)立于特定 XML 處理程序?qū)崿F(xiàn)的 API 對(duì) XML 文檔進(jìn)行解析和轉(zhuǎn)換。 JAXP 還提供可插入特性,答應(yīng)應(yīng)用程序在特定 XML 處理程序?qū)崿F(xiàn)之間很輕易地切換。
要實(shí)現(xiàn) XML 處理程序獨(dú)立性這一目標(biāo),應(yīng)用程序應(yīng)當(dāng)限制使用 JAXP API,并避免使用與實(shí)現(xiàn)相關(guān)的 API 。根據(jù)具體的應(yīng)用程序,這可能易于或難以實(shí)現(xiàn)。 JAXP 包括了如 DOM 和 SAX 在內(nèi)的業(yè)界標(biāo)準(zhǔn) API 。
JAXP 出現(xiàn)的原因就是為了方便在 Java 平臺(tái)上使用 XML 。例如,當(dāng)前使用的 API ,如 DOM Level 2 ,不提供從一個(gè) XML 輸入文檔中獲得一個(gè) DOM 文檔對(duì)象的方法, JAXP 則可以做到。( DOM Level 3 提供這種功能,新版本的 JAXP 規(guī)范也可能會(huì)支持這種新的 Level 3 方案。) JAXP 的其他部分,如 javax.xml.transform 部分,不具備其他同等的獨(dú)立于 XSLT 處理程序的 API 。
問(wèn). 在哪里可以閱讀關(guān)于 JAXP 的更多內(nèi)容?
答. 請(qǐng)參見(jiàn) JAXP 常見(jiàn)問(wèn)題 獲得更多信息。
Java Architecture for XML Binding( JAXB ) 問(wèn). 什么是 Java Architecture for XML Binding( JAXB )?
答. Java Architecture for XML Binding( JAXB )簡(jiǎn)化了啟用 XML 的 Java 程序的創(chuàng)建和維護(hù)。 JAXB 提供一個(gè)綁定的編譯器和一個(gè)運(yùn)行時(shí)框架用來(lái)支持 XML 和 Java 對(duì)象的雙向映射。綁定編譯器可將 W3C XML 樣式轉(zhuǎn)換成一個(gè)或多個(gè) Java 類(lèi),這個(gè)過(guò)程無(wú)需開(kāi)發(fā)人員編寫(xiě)復(fù)雜的解析代碼。模式派生類(lèi)以及綁定框架可對(duì)輸入和輸出的 XML 文檔啟用錯(cuò)誤或有效性檢查,因而可以確保系統(tǒng)接收、處理和生成有效而無(wú)誤的消息。更多信息,請(qǐng)參閱 Reference Implementation 和 Public Draft Specification,以上文檔均可在 JAXB 主頁(yè)下載。
問(wèn). JAXB、SAX 和 DOM 有什么不同?我應(yīng)當(dāng)選用哪一個(gè)?
答. SAX 是一種事件驅(qū)動(dòng)的 XML 解析器,適用于高速處理 XML ,因?yàn)樗辉趦?nèi)存中生成數(shù)據(jù)表示。與之不同,DOM 在內(nèi)存中生成數(shù)據(jù)表示,答應(yīng)應(yīng)用程序?qū)?nèi)存中的內(nèi)容進(jìn)行操縱。 SAX 和 DOM 都自動(dòng)執(zhí)行結(jié)構(gòu)的有效性驗(yàn)證。一個(gè)應(yīng)用程序可以使用 SAX 和 DOM 進(jìn)行內(nèi)容有效性驗(yàn)證,但這樣的應(yīng)用程序必須提供額外的代碼,這可能會(huì)是復(fù)雜的、易于出錯(cuò)和難以維護(hù)的。
一個(gè) JAXB 應(yīng)用程序可以使用由模式生成的 Java 類(lèi)對(duì)結(jié)構(gòu)和內(nèi)容進(jìn)行有效性驗(yàn)證。與 DOM 類(lèi)似,一個(gè) JAXB 應(yīng)用程序在內(nèi)存中通過(guò)編組(marshalling) XML 文檔來(lái)構(gòu)造內(nèi)容樹(shù),從而創(chuàng)建數(shù)據(jù)結(jié)構(gòu),這個(gè)樹(shù)包括派生類(lèi)的實(shí)例對(duì)象。但與 DOM 樹(shù)不同,內(nèi)容樹(shù)是特定于某一種源模式的,不包含額外的樹(shù)操縱功能,不答應(yīng)使用其派生類(lèi)的訪問(wèn)器方法對(duì)數(shù)據(jù)進(jìn)行訪問(wèn),也不能動(dòng)態(tài)地構(gòu)建。假如文檔的內(nèi)容是趨于動(dòng)態(tài)且沒(méi)有完好約束的,則在處理內(nèi)容之前,在處理那些沒(méi)有知名樣式的 XML 內(nèi)容方面,DOM 和 SAX 要比 JAXB 更適合。
問(wèn). JAXB 如何工作?
答. 要構(gòu)建 JAXB 應(yīng)用程序,首先從 XML 模式開(kāi)始。beta 版本要求模式語(yǔ)言是 XML Schema 的 W3C 2001 Recommendation。
在獲得 XML 模式之后,就可以構(gòu)建和使用 JAXB 應(yīng)用程序,按以下這些步驟:
1. 將 XML Schema 提交給綁定的編譯器,生成 Java 源文件。
您可以定制綁定聲明,從而覆蓋 XML Schema 組件與 Java 表示之間的默認(rèn)綁定。
編譯 Java 源代碼。
3. 使用類(lèi)和綁定框架,編寫(xiě) Java 應(yīng)用程序,如下:
構(gòu)建表示 XML 數(shù)據(jù)的對(duì)象樹(shù),該數(shù)據(jù)按 XML Schema 是有效的,可以通過(guò)從文檔中解組(unmarshalling)數(shù)據(jù)或?qū)嵗獎(jiǎng)?chuàng)建的類(lèi)。
訪問(wèn)和修改數(shù)據(jù)。
可以選擇對(duì)與約束相關(guān)的數(shù)據(jù)的更改進(jìn)行驗(yàn)證,這些約束在 XML Schema 中表示。
將數(shù)據(jù)整理為新的 XML 文檔。
問(wèn). 誰(shuí)參與開(kāi)發(fā) JAXB ?
答. JAXB 由 Java Community Process(JCP )正在進(jìn)行開(kāi)發(fā),JCP 由專(zhuān)家組所組成,包括 IBM、Software AG、BEA Systems、Hewlett-Packard、 TIBCO Software Inc.、 Oracle、 Fujitsu Limited、Breeze Factor LLC、Macromedia Inc. 和 Intalio Inc.。Sun 是 W3C XML Schema Working Group 最積極的成員,并與其他業(yè)界團(tuán)體共同工作,如 OASIS 和 xml.org 。
Java API for XML Messaging (JAXM) 問(wèn). 什么是 Java API for XML Messaging(JAXM)?
答. Java API for XML Messaging(JAXM)是專(zhuān)門(mén)用于 Internet 上交換 XML 商業(yè)文檔的 API 。常用于交換的 XML 文檔的例子有訂單、訂購(gòu)確認(rèn)和發(fā)票。您可以在發(fā)送的消息中附帶非 XML 數(shù)據(jù)。