XML作為一門標記語言,它就需要一種文檔(即文檔類型定義DTD)來定義,DTD可以看作是一類XML文檔的模板。它定義了文檔的邏輯結構,規(guī)定了XML文檔中所使用的元素,實體,元素的屬性,元素與實體之間的關系。它使得數(shù)據(jù)交流與共享得以正常進行,驗證了數(shù)據(jù)的有效性。DTD可以是一個完全獨立的文件,也可以在XML文件中直接設定。所以,DTD分為外部DTD(在XML文件中調(diào)用另外已經(jīng)編輯好的DTD)和內(nèi)部DTD(在XML文件中直接設定DTD)兩種。在一些有相互業(yè)務往來的公司,如果他們使用的電子文檔是XML文檔,那么我們就可以定用一個獨立的DTD文檔。每次交換和定義時都引用它來驗證結構完整性和語法的合法性。比如以下一個XML文檔:
<?xml version ="1.0" encoding ="GB2312" standalone="yes" ?>
<學生名單>
<學生>
<學號>2003081205</學號>
<姓名>田淋</姓名>
<班級>計03.2班</班級>
</學生>
<學生>
<學號>2003081232</學號>
<姓名>楊雪鋒</姓名>
<班級>計03.2班</班級>
</學生>
</學生名單>它的一個DTD文檔如下:
<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<!DOCTYPE學生名單[
<!ELMENT 學號 (#PCDATA)>
<!ELMENT 姓名 (#PCDATA)>
<!ELMENT 班級 (#PCDATA)>
<!ELMENT 學生 (學號,姓名,班級)>
<!ELMENT 學生名單 (學生,學生)>
]>


<!ELMENT 學生 (學號?,姓名,班級,愛好*)>則表示一個學生只有唯一的學號,或者還未分配學號,即學號元素出現(xiàn)0次或1次,而愛好可以沒有,也可以有好幾方面的,所以用*(任意次)限定。| 類型 | 含義 |
| CDATA | 字符數(shù)據(jù) |
| Enumerated | 可能的取值的列表 |
| ID | 唯一的數(shù)字 |
| IDREF | ID類型屬性的值 |
| IDREFS | 由空格分開的若干個ID |
| ENTITY | 實體 |
| ENTITYS | 若干個實體 |
| NMTOKEN | XML名稱 |
| NOTATION | DTD中聲明的注釋名 |
| NMTOKENS | 多個XML名稱 |





