XML Schema與DTD(DTD語法概述)一樣,也是對一類XML文檔進行約束、確定其結構,元素、屬性、及資料類型。及XML文件中所使用的元素,實體,元素的屬性,元素與實體之間的關係的約束。 XML Schema 首先由微軟提出,已經被W3C接受成為一個標準。與DTD不同的是,XML Schema 檔案使用XML語法,它的設計目的很許多跟DTD相似,但在功能,擴展性方面超越了DTD。下面說說它們之間的一些區別:
一.XML Schema 是XML文檔,不像DTD有其特有的語法。對開發人員來說,你不需要懂兩種文法就能寫一個格式良好的XML文件。對開發XML分析器來說,XML Schema由於也是XML語法,實現及支援起來就更方便了。同時XML Schema 繼承了XML可擴充的優點。
二.定義資料型態。在一個DTD檔案中只能把資料宣告為字串型別或字串類型的子元素,如PCDATA、CDATA、ID等。而在XML Schema 中,可以定義跟程式語言同樣豐富的資料型別,如整數型,浮點型,布林型,日期型等。這樣的好處是顯而易見的,當你寫程式使用一個整數資料時,如用DTD定義的,就必須將它從字元型轉換為整數,而XML Schema 則可以直接定義為整型。
三.XML Schema是一個開放的模型。如下面的一個XML文件:
<item> <name>TG/DTLatte</name> <quantity>1</quantity> <price>2.00</price> </item>
下面是它的DTD及Schema描述:
DTD:
<!ELEMENT name (#PCDATA)> <!ELEMENT quantity (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ELEMENT item (name,quantity,price)>
schema
<ElementType name="name"/> <ElementType name="quantity" dt:type="int"/>> <ElementType name="price" dt:type="fixed.14.4"/> <ElementType name="item" model="open"> <element type="name"/> <element type="quantity"/> <element type="price"/> </ElementType>
當上面的XML文件增加一條50fd4fbe00dbd22c492052e666d4196f10:21 PDT8d4a8a2a17471cc2a44f0c023147b0ca元素變為:
<item xmlns:myItm="urn:myItems"> <name>TG/DT Latte</name> <quantity>1</quantity> <price>2.00</price> <myItem:time>10:21 PDT</myItem:time> </item>
以上的DTD將會引發驗證錯誤,而Schema則不會。
四.命名空間的整合。一個XML文檔只能由一個DTD文檔來描述,而可以由多個XML Schema文檔來描述。後者完全支援命名空間。
以上是XML Schema的簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!