更新時間:2023-01-03 來源:黑馬程序員 瀏覽量:
XML Schema也是一種用于定義和描述XML文檔結構與內容的模式語言,它的出現克服了DTD的局限性。下面通過對XML Schema與DTD進行比較,給出XML Schema所具有的一些顯著優點。
1.DTD采用非XML語法格式,缺乏對文檔結構、元素、數據類型等的全面描述。而XML Schema采用XML語法格式,而且它本身也是一種XML文檔,因此,XML Schema的語法格式比DTD更容易理解。
2.XML具有非常嚴格的合法性要求,雖然DTD和XML Schema都用于對XML文檔進行描述,且都被作為驗證XML合法性的基礎,但是DTD自身合法性的驗證必須采用另外一套機制,而XML Schema則采用與XML文檔相同的合法性驗證機制。
3.XML Schema對名稱空間的支持度非常高,而DTD幾乎不支持名稱空間。
4.DTD支持的數據類型非常有限。例如,DTD可以指定元素中必須包含字符文本(PCDATA),但無法指定元素中必須包含非負整數(nonNegativeInteger),而XML Schema比XML DTD支持更多的數據類型,包括用戶自定義的數據類型。
5.DTD定義約束的能力非常有限,無法對XML實例文檔做出更細致的語義限制,例如,其無法很好地指定一個元素中的某個子元素必須出現7~12次;而XML Schema定義約束的能力非常強大,可以對XML實例文檔做出細致的語義限制。
通過上面的比較可以發現,XML Schema的功能比DTD強大很多,但相應的語法也比DTD復雜很多,一個簡單的Schema文檔如文件8-5所示。
文件8-5 Simple.xsd
<? xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root" type="xs:string"/> </xs:schema>
在文件8-5中,第1行是文檔聲明,第2行中以xs.schema作為根元素,表示模式定義的開始。由于根元素xs:schema的屬性都在http://www.w3.org/2001/XMLSchema名稱空間中,因此,在根元素上必須聲明該名稱空間。