1. 程式人生 > >DTD與XSD的區別

DTD與XSD的區別

DTD(Document Type Definition)即文件型別定義,是一種XML約束模式語言,是XML檔案的驗證機制

一個DTD文件包含:(1)元素的定義規則;(2)元素間關係的定義規則;(3)元素可使用的屬性,可使用的實體或符號規則

新建一個.dtd檔案:

<!ELEMENT 班級 (學生+)>
<!ELEMENT 學生 (名字,年齡,介紹)>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 年齡 (#PCDATA)>

<!ELEMENT 介紹 (#PCDATA)>

DTD基本語法:<!ELEMENT NAME CONTENT>

其中: 
- ELEMENT是關鍵字,是不能修改的 
- NAME表示元素名稱 

- CONTENT是元素型別,必須要大寫!CONTENT的內容有三種寫法:



使用DTD驗證模式需要在XML檔案的頭部宣告

<?xml version="1.0" encoding="utf-8"?>
<!-- 引入dtd檔案,約束這個xml -->
<!DOCTYPE 班級 SYSTEM "myclass.dtd">
<班級>
<學生>
<名字>周小星</名字>
<年齡>23</年齡>
<介紹>學習刻苦</介紹>
</學生>
</班級>

<!DOCTYPE 根元素 SYSTEM/PUBLIC "DTD檔案路徑"> SYSTEM表示本地 PUBLC 表示網路

DTD使用是非xml語法編寫,不支援擴充套件,不支援名稱空間,只提供非常有限的資料型別

XML Schemal語言就是XSD,XML Schema描述了XML文件的結構,可以用一個指定的XML Schema來驗證某個XML

XML Schema的優點:
1) XML Schema基於XML,沒有專門的語法 
2) XML Schema可以象其他XML檔案一樣解析和處理 
3) XML Schema比DTD提供了更豐富的資料型別.
4) XML Schema提供可擴充的資料模型。 
5) XML Schema支援綜合名稱空間

6) XML Schema支援屬性組

xsd引用

<?xml version="1.0"?>

<note xmlns="http://www.w3school.com.cn" //預設名稱空間
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" //可用的XML SCHEMAL例項名稱空間 --->可以使用schemaLocation
xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> //schemaLacation兩個屬性:需要使用的名稱空間 ;供名稱空間使用的 XML schema 的位置

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

xsd定義

<?xml version="1.0"?>
 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"//在schema中用到的資料型別和元素來自此名稱空間,並且來自此名稱空間的元素以xs開頭
targetNamespace="http://www.w3school.com.cn"//此shema定義的元素(note等)來自此名稱空間
xmlns="http://www.w3school.com.cn"//預設的名稱空間
elementFormDefault="qualified">
    <xs:element name="note">
       <xs:complexType>
      <xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
    </xs:element>
</xs:schema>
參考於http://www.w3school.com.cn/schema