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


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





