源碼下載:鏈接: http://pan.baidu.com/s/1jGzSw5o 密碼: ftgw
一.定義
文檔類型定義 DTD(Document Type Definition),專門用於檢測XML是否符合語法規則。
二.實例
文檔類型聲明的兩種方式:
1.內部定義
persons.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE 根元素 [元素聲明]> -->
<!DOCTYPE persons[
<!--常用的控制符:?:0-1次 ; *:0-N次; +:1-N次; 默認:1次 -->
<!ELEMENT persons (person+)>
<!ELEMENT person (name , password, age)>
<!-- #PCDATA 是XML解析器解析的文本數據使用的一個術語 -->
<!-- CDATA出現在屬性聲明中 -->
<!ELEMENT name (#PCDATA)>
<!ELEMENT password (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!-- #REQUIRED 屬性值是必需的 -->
<!-- #IMPLIED 屬性不是必需的 -->
<!-- #FIXED value 屬性值是固定的 -->
<!-- ID 值爲唯一的 id -->
<!ATTLIST person id ID #REQUIRED>
<!-- CDATA 值爲字符數據 (character data) -->
<!ATTLIST person email CDATA #REQUIRED>
]>
<persons>
<person id="p1070541038" email="[email protected]">
<name>趙慄婧</name>
<password>000000</password>
<age>26</age>
<!-- <id>p1070541038</id> --><!-- 錯誤寫法 -->
<!-- <email>[email protected]</email> -->
</person>
<person id="p2070541038" email="[email protected]">
<name>趙慄婧</name>
<password>000000</password>
<age>26</age>
</person>
</persons>
2.外部定義
classroom.dtd 文件
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT classroom (name,grade,students)>
<!ATTLIST classroom id ID #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT grade (#PCDATA)>
<!ELEMENT students (student+)>
<!ELEMENT student (id,name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
classroom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 外部文檔聲明 -->
<!-- 假如 DTD 位於 XML 源文件的外部,那麼它應通過下面的語法被封裝在一個 DOCTYPE 定義中: -->
<!DOCTYPE classroom SYSTEM "classroom.dtd">
<classroom id="classroomid1">
<name>classname1</name>
<grade>grade1</grade>
<students>
<student>
<id>studentid1</id>
<name>studentname1</name>
<age>studentage1</age>
</student>
<student>
<id>studentid2</id>
<name>studentname2</name>
<age>studentage2</age>
</student>
</students>
</classroom>
三.點評
1.優點:
簡單明瞭,容易編寫。
可檢測XML是否有效
2.缺點:
1)與XML語法不同
2)提供有限的數據類型,用戶無法自定義類型3)不支持域名機制