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.                   
  6.         <!-- base types -->  
  7.         <xsd:complexType name="identifiedType" abstract="true">         
  8.             <xsd:attribute name="id" type="xsd:ID">  
  9.             </xsd:attribute>  
  10.         </xsd:complexType>  
  11.       
  12.     </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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章