簡單的DTD約束XML

  一個良好的XML文檔只有受到良好的約束纔能有效的工作,對此,這裏我們用DTD文件對XML進行語義約束。

  XML中引入DTD:

<!DOCTYPE 根元素的名稱 SYSTEM “DTD文件的路徑”>

  定義元素:

定義任意類型的元素:

<!ELEMENT 元素名 ANY>

定義空元素:

<!ELEMENT 元素名 EMPTY>

定義字符串內容的元素:

<!ELEMENT 元素名 (#PCDATA)>

  定義子元素:

定義有序的子元素:

<!ELEMENT 書 (書名,作者,出版社,介紹)>

定義互斥的子元素:(下面三者每次只能出現一次)

<!ELEMENT 書 (好書|壞書|二手書)>

子元素出現的頻率:+代表出現1次或多次,*代表出現0次或多次,?代表出現0次或1次

  定義元素的屬性:

約束類型:#REQUIRED:必需的屬性  #IMPLIED:可有可無的屬性  #FIXED:固定的屬性

<!ATTLIST 元素名 屬性名 屬性類型 [約束類型] [默認值]>

枚舉類型:

<!ATTLIST 人 類型 (中國人|美國人|日本人) #REQUIRED>

  定義實體(相當於C語言的宏定義):

<!ENTITY 實體名 "實體值"> <!-- 定義格式-->
&實體名;<!-- 引用格式-->

下面寫一個例子:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT qq (friend|classmate)*>
<!ELEMENT friend (name,age)>
<!ELEMENT classmate (school)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT school EMPTY>
<!ATTLIST friend id ID #REQUIRED>
<!ATTLIST classmate name CDATA #REQUIRED>

對應的XML文檔:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qq SYSTEM "E:\Util\XMLSPY\XMLCode\company.dtd">
<qq>
	<friend id="first">
		<name>張三</name>
		<age>12</age>
	</friend>
	<classmate name="李四">
		<school />
	</classmate>
</qq>


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章