DTD(Document Type Definition,文檔類型定義),主要是用來約束XML文件的一種方式。它是標準通用標記語言和可擴展標記語言1.0版規(guī)格的一部分,文檔可根據某種DTD語法規(guī)則驗證格式是否符合此規(guī)則。DTD也可用做保證標準通用標記語言、可擴展標記語言文檔格式的合法性,可通過比較文檔和DTD文件來檢查文檔是否符合規(guī)范,元素和標簽使用是否正確。文件實例提供應用程序一個數據交換的格式。使用各類DTD是為了讓標準通用標記語言、可擴展標記語言文件能符合規(guī)定的數據交換標準,因為這樣,不同的公司只需定義好標準DTD,就能依DTD建立文檔實例,并且進行驗證,如此就可以輕易交換數據,防止了實例數據定義不同等原因造成的數據交換障礙,滿足了網絡共享和數據交互。DTD文件是一個美國信息交換標準代碼文本文件。
dtd作為一種xml的約束技術,多見于現在的程序框架中。雖然在開發(fā)中通常使用的是schema,但為了讀懂框架,dtd是我們必備的知識之一。
一、一個關于產品的dtd
以下是product.dtd代碼:
以上是一個引用了product.dtd的xml。
以下是dtd代碼:
通過以上對dtd的了解,掌握了dtd的一些規(guī)律之后,可以知道,在dtd中有3種引用方式,分別為:
1.內部引用示例
以下是java代碼:
2.外部引用
當引用的文件在本地時(外部DTD),采用如下方式:
例如:。*DTD文件路徑本地的。
3.公共dtd的引用
當引用的文件是一個公共文件時(公共DTD)采用如下方式:
例如:
"-//SunMicrosystems,Inc.//DTDwebapplication2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
二、dtd中的元素定義
細心觀察,可以發(fā)現dtd中的“+”符號,我們常用+類比其他元素的用法。
三、DTD的屬性
屬性聲明的語法格式,如下所示:
<!ATTLIST商品
類別CDATA#REQUIRED必須的
顏色CDATA#IMPLIED可選的
>
示例:
Product2.xml代碼如下所示:
DTD支持的屬性類型如下表所示:
<!ATTLIST商品
類別CDATA#REQUIRED必須的
顏色CDATA#IMPLIED可選的
>
四、實體(ENTITY)定義
實體用于為一段內容創(chuàng)建一個別名,以后在XML文檔中就可以使用別名引用這段內容了。
在DTD定義中,一條<!ENTITY…>語句用于定義一個實體。
Techer.xml代碼:
五、DTD約束的形式
dtd約束有以下四種形式:
若要創(chuàng)建一份完整性高、適應性廣的DTD十分困難,因為各個行業(yè)都有他們自己的行業(yè)特點,所以DTD通常是以某種應用領域為定義的范圍,如:醫(yī)學、建筑、工商、行政。DTD定義的元素范圍越廣,就越復雜。DTD可能是一個完全獨立的文件,也可能在XML文件中直接設定。DTD也分為外部DTD和內部DTD。比如,有幾十家相互聯系的、合作伙伴關系的公司、廠商,他們相互間的交換電子文檔都是用XML文檔。那么可以將這些XML文檔的DTD放在一個地方,讓所有交換的XML文檔都使用此DTD,這方法最方便,同時也適用于公司內部的XML文件使用。