溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

DTD與XML基本語法規(guī)則

發(fā)布時(shí)間:2020-07-23 23:50:18 來源:網(wǎng)絡(luò) 閱讀:1075 作者:小愛愛0419 欄目:開發(fā)技術(shù)

  DTD(文檔類型定義)可以定義合法的XML文檔結(jié)構(gòu),它使用一系列合法元素來定義文檔的結(jié)構(gòu)。DTD分為內(nèi)部DTD和外部DTD,所謂內(nèi)部DTD是指該DTD在某個(gè)文檔的內(nèi)部,只被該文檔使用。外部DTD是指該DTD不在文檔內(nèi)部,可以被其他所有的文檔來共享。DTD文檔與XML文檔實(shí)例的關(guān)系可以看成是類和對(duì)象的關(guān)系。

(1)外部DTD文件的編寫及引用

新建一個(gè)外部family.dtd文件

DTD與XML基本語法規(guī)則

<!ELEMENT family (father,mother,son+)>
<!ELEMENT father (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT mother (name,age)>
<!ELEMENT son (name|wife|grandson)*>
<!ELEMENT wife (#PCDATA|name)*>
<!ELEMENT grandson (name)>
<!ATTLIST son status CDATA #REQUIRED>

編寫XML文件引用DTD文件family.dtd

DTD與XML基本語法規(guī)則

DTD與XML基本語法規(guī)則

DTD與XML基本語法規(guī)則

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE family SYSTEM "file:///E:/Users/小愛愛/Desktop/family.dtd">
<family>
	<father>
		<name>張三</name>
          <age>40</age>
	</father>
	<mother>
		<name>劉麗</name>
		<age>36</age>
	</mother>
	<son status="bigson">
		<name>張?zhí)?lt;/name>
		<wife>
			<name>王華</name>
		</wife>
		<grandson>
			<name>張曉華</name>
		</grandson>
	</son>
	<son status="smallson">
		<name>張帥</name>
	</son>
</family>

(2)內(nèi)部DTD文件

新建一個(gè)內(nèi)部有DTD文件的XML文件class.xml

DTD與XML基本語法規(guī)則

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE class[
<!ELEMENT class (student*)>
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST class classId ID #REQUIRED>
<!ATTLIST student stuId IDREF #IMPLIED>
]>
<class classId="a01">
	<student stuId="a01">
		<name>張三</name>
		<age>18</age>
		<sex>男</sex>
	</student>
	<student stuId="a01">
		<name>李四</name>
		<age>18</age>
		<sex>女</sex>
	</student>
	<student>
		<name>王五</name>
		<age>17</age>
		<sex>女</sex>
	</student>
</class>

由以上的XML文件可以看出

#IMPLIED:表示該屬性可以有也可以沒有。

#REQUIRED:表示該屬性必須有。

還有一種屬性的特征

#FIXED:表示該屬性的屬性值固定。

被聲明為IDREF屬性類型的屬性值必須引用ID屬性類型的屬性值。

(3)ANY的用法規(guī)則

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE company[
<!ELEMENT company ANY>
<!ELEMENT worker (name,sex,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ATTLIST worker workId ID #REQUIRED>
]>
<company>
	<worker workId="a10">
		<name>zhangsan</name>
		<sex>nv</sex>
		<age>28</age>
	</worker>
	<company></company>
	<name>lisi</name>
	<age>30</age>
	<name>wangwu</name>
	<sex>nan</sex>
</company>

ANY類型表示可以包含多個(gè)子元素且不受限制,也可包含字符串?dāng)?shù)據(jù)。但ANY一般用在對(duì)根元素的聲明中。

(4)NMTOKEN和NMTOKENS

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE student[
<!ELEMENT student (#PCDATA)>
<!ATTLIST student stuId NMTOKEN #REQUIRED>
<!ATTLIST student classId NMTOKENS #REQUIRED>
]>
<student stuId="a10"  classId="   a10"></student>

以上代碼可以通過編譯,當(dāng)XML為以下代碼時(shí)會(huì)出現(xiàn)下圖的錯(cuò)誤信息

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE student[
<!ELEMENT student (#PCDATA)>
<!ATTLIST student stuId NMTOKEN #REQUIRED>
<!ATTLIST student classId NMTOKENS #REQUIRED>
]>
<student stuId="a   10"  classId="   a10"></student>

DTD與XML基本語法規(guī)則

NMTOKEN類型要求屬性值中不能包含空格且必須以下劃線、數(shù)字或字母開頭。 

NMTOKENS類型與NMTOKEN類型類似,NMTOKENS類型要求屬性值必須以下劃線、數(shù)字或字母開頭。但可以包含空格。

(5)枚舉類型

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE people[ 
<!ELEMENT people (person+)>
<!ELEMENT person (#PCDATA)>
<!ATTLIST person 性別 (男|女) #IMPLIED> 
<!ATTLIST person 學(xué)歷 (高中|大學(xué)|研究生|博士) #IMPLIED> 
	]>
<people>
	<person 性別="女" 學(xué)歷="大學(xué)">lily</person>
	<person ></person>
</people>

列舉出要選的項(xiàng),與下拉列表類似。

DTD與XML基本語法規(guī)則

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI