XML中DTD,XSD的區別與應用

2021-08-04 19:31:13 字數 1912 閱讀 5720

xml我們並不陌生,在企業級應用中有很廣的用途。具體就不再說,下面介紹一下dtd,xsd的區別並以xsd為例看spring中定義與使用。

1.dtd(documnet type definition)

dtd即文件型別定義,是一種xml約束模式語言,是xml檔案的驗證機制,屬於xml檔案組成的一部分。

dtd 是一種保證xml文件格式正確的有效方法,可以通過比較xml文件和dtd檔案來看文件是否符合規範,元素和標籤使用是否正確。 乙個 dtd文件包含:元素的定義規則,元素間關係的定義規則,元素可使用的屬性,可使用的實體或符號規則。

dtd和xsd相比:dtd 是使用非 xml 語法編寫的。

dtd 不可擴充套件,不支援命名空間,只提供非常有限的資料型別 .

2.xsd(xml schemas definition)

xml schema語言也就是xsd。xml schema描述了xml文件的結構。 

可以用乙個指定的xml schema來驗證某個xml文件,以檢查該xml文件是否符合其要求。文件設計者可以通過xml schema指定乙個xml文件所允許的結構和內容,並可據此檢查乙個xml文件是否是有效的。xml schema本身是乙個xml文件,它符合xml語法結構。可以用通用的xml解析器解析它。

乙個xml schema會定義:文件中出現的元素、文件中出現的屬性、子元素、子元素的數量、子元素的順序、元素是否為空、元素和屬性的資料型別、元素或屬性的預設 和固定值。

xsd是dtd替代者的原因,一是據將來的條件可擴充套件,二是比dtd豐富和有用,三是用xml書寫,四是支援資料型別,五是支援命名空間。

xml schema的優點:

1) xml schema基於xml,沒有專門的語法 

2) xml schema可以象其他xml檔案一樣解析和處理 

3) xml schema比dtd提供了更豐富的資料型別.

4) xml schema提供可擴充的資料模型。 

5) xml schema支援綜合命名空間 

6) xml schema支援屬性組。

3.spring中spring-beans-2.5.xsd

<?xml version="1.0" encoding="utf-8" standalone="no"?>  

""  

xmlns:xsd=""  

targetnamespace="">  

"identifiedtype" abstract="true">         

"id" type="xsd:id">  

(1)schema元素為所有xml schema模式文件的根元素,它用於宣告該xml文件是乙個xml schema文件。該模式文件本身也乙個xml文件,自己的命名空間為xmlns:xsd="",其中xsd為其字首。

(2)schema中targetnamespace定義了schema定義出的新元素與屬性的命名空間。也就是它是對所定義的xml模型進行限制:限制定義出的元素,或者屬性的命名空間.

4.spring中配置檔案對xsd檔案的使用

""  

xmlns:xsi="-instance"   

xsi:schemalocation=" /spring-beans-2.5.xsd> 

在使用xml schema 文件對xml例項文件進行檢驗,除了要宣告命名空間外(xmlns=""),還必須指定該命名空間所對應的xml schema文件的儲存位置.

通過schemalocation屬性來指定命名空間所對應的xml schema文件的儲存位置,它包含兩個部分,一部分是命名空間的uri,第二部分就是該命名空間所標識的xml schema檔案位置或url位址

(xsi:schemalocation=" /spring-beans-2.5.xsd)

XML中DTD,XSD的區別與應用

xml我們並不陌生,在企業級應用中有很廣的用途。具體就不再說,下面介紹一下dtd,xsd的區別並以xsd為例看spring中定義與使用。1.dtd documnet type definition dtd即文件型別定義,是一種xml約束模式語言,是xml檔案的驗證機制,屬於xml檔案組成的一部分。d...

XML中DTD,XSD的區別與應用

xml我們並不陌生,在企業級應用中有很廣的用途。具體就不再說,下面介紹一下dtd,xsd的區別並以xsd為例看spring中定義與使用。b size large 1.dtd documnet type definition size b dtd即文件型別定義,是一種xml約束模式語言,是xml檔案的...

xml中Element與Node區別

element是node的子集,xmlnode表示乙個節點,包括xmlelement 元素 和xmlattribute 屬性 等。如 node node stringvalue node node node 以上alarm 元素節點 lock 屬性節點 time 元素節點 stringvalue 文...