__________________________________________________________________
關(guān)于XML

XML可擴展標記語言(Extensible Markup Language)實質(zhì)就是表示數(shù)據(jù)的方式.既然如此,與之相關(guān)的肯定有數(shù)據(jù)約束和驗證和解析以獲取數(shù)據(jù)(XML轉(zhuǎn)換).

____________________________________________________________________________
數(shù)據(jù)約束
目標:確定究竟什么類型的內(nèi)容和子元素可以出現(xiàn)在元素中的一些規(guī)則(以及以什么順序和基數(shù)性等)
實例:org.springframework.beans.factory.xml包下的spring-beans-2.0.dtd和spring-beans-2.0.xsd

1.XML DTD
缺陷:XML DTD(XML的文檔類型定義)主要限制在于它們?nèi)狈?shù)據(jù)類型的表達和對每個元素出現(xiàn)次數(shù)約束方面.

DTD 基本語法:
A、B、C 和 D 是在下例中代表元素的變量。
元素必須有正好一個 A 、至少一個 B (由加號表示)、零個或多個 C (由星號表示)以及零個或一個 D (由問號表示):
<!ELEMENT element (A, B+, C*, D?)>

元素可能有 A 或 B 或 C 之一:
<!ELEMENT element (A | B | C)>

元素不包含任何內(nèi)容:
<!ELEMENT element EMPTY>

元素可以包含在 DTD 中列出的任何元素:
<!ELEMENT element ANY>

元素可能包含經(jīng)過語法分析的字符數(shù)據(jù)或另一個元素( element2 )。星號(*)表示混合內(nèi)容模型 — 其中元素可以包含不同類型的屬性。
<!ELEMENT element (#PCDATA|element2)*>

下例將文本 "entity reference" 插到文檔中它出現(xiàn)的任何地方:
<!ENTITY element "entity reference">

可以看到在 XML 文檔中該實體引用元素如下:
&element;

2.XML Schema

    W3C XML Schema真正出色的地方是在表達屬性值和元素內(nèi)容的類型約束上。而這恰恰是 DTD最薄弱的地方。除了提供非常豐富的一組內(nèi)置 simpleType 以外,XML 模式還允許您使用類似規(guī)則表達式的語法派生出新的 simpleType 。內(nèi)置類型包括您在使用編程語言時遇到的: string 、 int 、 float 、 unsignedLong 、 byte 等等;但它們還包括大多數(shù)編程語言生來不具備的一些類型: timeInstant (即日期/時間)、 recurringDate (年中的天)

    XML 模式還在 DTD聲明子元素模式的基數(shù)性能力的基礎(chǔ)上進行了改進,在XML 模式中使用屬性minOccurs,maxOccurs來設(shè)置,而在 DTD中,符號: ? 、 * 和 + 分別指定“零或一”、“零或多個”、“一個或多個”.

    W3C XML Schema都允許在屬性中使用枚舉類型,一個專門的 simpleType 可以包含一個枚舉面

詳細使用手冊請參考:
http://www-128.ibm.com/developerworks/cn/xml/x-sd/index.html

____________________________________________________________________________
XML使用

1.根據(jù)開發(fā)XML 應(yīng)用程序時常用到的集中模型創(chuàng)建的 API 來分析和操縱 XML 結(jié)構(gòu),
    這些模型可以是基于對象的,如文檔對象模型(Document Object Model,DOM)和 JDOM.在這種模型里文檔的每個成分被描述成特定類型的節(jié)點。這些節(jié)點按照父子關(guān)系組織.

    也可以是基于事件的,如 Simple API for XML(SAX),SAX 是一種基于事件的模型,把文檔轉(zhuǎn)化成一系列回調(diào),如 startElement()

2.另一種常見的處理方式是通過使用可擴展樣式表語言轉(zhuǎn)換,開發(fā)人員可以使用 XSLT 定義對 XML 文檔的操作,以生成特定的結(jié)果。XSL 格式化對象(XSL Formatting Objects,XSL-FO)是一種強大而靈活的格式化數(shù)據(jù)的 XML 詞匯表,常與 XSLT 結(jié)合使用,把 XML 和 HTML 轉(zhuǎn)化成 PDF(可移植文檔格式)。

____________________________________________________________________________
參考資料:
解碼 XML 和 DTD
XML Schema 與 XML DTD的技術(shù)比較與分析
W3C XML Schema 與文檔類型定義 (DTD)