1. 程式人生 > >XML中DTD,XSD的區別與應用

XML中DTD,XSD的區別與應用

    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

Java程式碼  收藏程式碼
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>  
  2.     <xsd:schema xmlns="http://www.springframework.org/schema/beans"
  3.             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  4.             targetNamespace="http://www.springframework.org/schema/beans">  
  5.         <!-- base types -->  
  6.         <xsd:complexType name="identifiedType"abstract="true">         
  7.             <xsd:attribute name="id" type="xsd:ID">  
  8.             </xsd:attribute>  
  9.         </xsd:complexType>  
  10.     </xsd:schema>  


(1)schema元素為所有XML Schema模式文件的根元素,它用於宣告該XML文件是一個XML Schema文件。該模式文件本身也一個XML文件,自己的名稱空間為xmlns:xsd="http://www.w3.org/2001/XMLSchema",其中xsd為其字首。
(2)Schema中targetNamespace定義了Schema定義出的新元素與屬性的名稱空間。也就是它是對所定義的XML模型進行限制:限制定義出的元素,或者屬性的名稱空間.

4.Spring中配置檔案對XSD檔案的使用


Java程式碼  收藏程式碼
  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd>


</beans>
在使用XML Schema 文件對XML例項文件進行檢驗,除了要宣告名稱空間外(xmlns="http://www.springframework.org/schema/beans"),還必須指定該名稱空間所對應的XML Schema文件的儲存位置.
通過schemaLocation屬性來指定名稱空間所對應的XML Schema文件的儲存位置,它包含兩個部分,一部分是名稱空間的URI,第二部分就是該名稱空間所標識的XML Schema檔案位置或URL地址
(xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd)