溫馨提示×

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

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

xml約束技術(shù)dtd的示例分析

發(fā)布時(shí)間:2021-09-17 13:55:22 來(lái)源:億速云 閱讀:100 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了xml約束技術(shù)dtd的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1.DTD官方教程

##2.xml約束技術(shù):
DTD約束:語(yǔ)法相對(duì)簡(jiǎn)單,功能也相對(duì)簡(jiǎn)單。先出現(xiàn)
Schema約束:語(yǔ)法相對(duì)復(fù)雜,功能也相對(duì)強(qiáng)大。采用和xml語(yǔ)法類似的編寫方式,Schema約束出現(xiàn)就是為了替換DTD約束。

3.DTD簡(jiǎn)介:

文檔類型定義(DTD)可定義合法的XML文檔構(gòu)建模塊。它使用一系列合法的元素來(lái)定義文檔的結(jié)構(gòu)。DTD 可被成行地聲明于 XML 文檔中,也可作為一個(gè)外部引用。

3.1導(dǎo)入DTD的方式:

1.內(nèi)部導(dǎo)入:

<code>#導(dǎo)入方式:
<!DOCTYPE root-element [element-declarations]>
#實(shí)例:
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
</code>
(第二行)定義此文檔是 note(根標(biāo)簽) 類型的文檔。<br>
(第三行)定義 note 元素有四個(gè)元素(標(biāo)簽):"to、from、heading,、body"<br>
(第四行)定義 to 元素為 "#PCDATA" 類型<br>
(第五行)定義 frome 元素為 "#PCDATA" 類型<br>
(第六行)定義 heading 元素為 "#PCDATA" 類型<br>
<p>(第七行)定義 body 元素為 "#PCDATA" 類型</p>
<p>外部導(dǎo)入方式:<br>  本地文件:</p>
<pre class="brush:xml;"><code>#導(dǎo)入方式:
 <!DOCTYPE note SYSTEM "note.dtd">
#note.dtd文件內(nèi)容:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)></code></pre>
<p>  公共的外部導(dǎo)入:一般項(xiàng)目采用公共外部導(dǎo)入,比如ssh的xml文件基本上就是采用了這種方式</p>
<pre class="brush:xml;"><code>#導(dǎo)入方式:
 <!DOCTYPE 根元素 PUBLIC "http://rlovep.com/peace.dtd">
#如hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"></code></pre>
<h4>3.2DTD語(yǔ)法:</h4>
<p>  1.約束標(biāo)簽<br> 語(yǔ)法:</p>
<pre class="brush:xml;"><code> <!ELEMENT 元素名稱 類別>  或 <!ELEMENT 元素名稱 (元素內(nèi)容)></code></pre>
 類別:<br>
空標(biāo)簽: EMPTY。 表示元素一定是空元素.例如:<bb/>:<!--ELEMENT bb EMPTY--><br>
普通字符串: (#PCDATA)。表示元素的內(nèi)容一定是普通字符串(不能含有子標(biāo)簽)。例如:<!--ELEMENT to (#PCDATA)--><br>
<p>任何內(nèi)容: ANY。表示元素的內(nèi)容可以是任意內(nèi)容(包括子標(biāo)簽) 例如:<!--ELEMENT note ANY--></p>

元素內(nèi)容:

<code>順序問(wèn)題:
<!ELEMENT 元素名稱 (子元素名稱 1,子元素名稱 2,.....)>: 按順序出現(xiàn)子標(biāo)簽
 
次數(shù)問(wèn)題:
標(biāo)簽  :  必須且只出現(xiàn)1次。
標(biāo)簽+ : 至少出現(xiàn)1次
標(biāo)簽*  : 0或n次。
標(biāo)簽? : 0 或1次。
聲明"非.../既..."類型的內(nèi)容</code>

2.約束屬性:
語(yǔ)法:

<code><!ATTLIST 元素名稱 屬性名稱 屬性類型 默認(rèn)值></code>

屬性類型:

<code>CDATA :表示普通字符串
(en1|en2|..): 表示一定是任選其中的一個(gè)值
ID:表示在一個(gè)xml文檔中該屬性值必須唯一。值不能以數(shù)字開(kāi)頭</code>

默認(rèn)值:

<code>#REQUIRED 屬性值是必需的
#IMPLIED   屬性不是必需的
#FIXED value 屬性不是必須的,但屬性值是固定的</code>

3.3測(cè)試如下,請(qǐng)細(xì)看注釋:

<code><?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from+,heading*,body?,(br|b))>
<!--帶有子序列的元素,需要按照先后順序出現(xiàn);
    to只能出現(xiàn)一次
    from最少出現(xiàn)一次
    heading次數(shù)隨意
    body出現(xiàn)零次或者一次
    非出現(xiàn)br就出現(xiàn)b
-->
<!--元素約束-->
<!ELEMENT to (#PCDATA)><!--pcdata元素-->
<!ELEMENT from ANY><!--任何內(nèi)容的元素-->
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT br EMPTY><!--空元素-->
<!ELEMENT b EMPTY><!--空元素-->
<!--屬性約束-->
<!ATTLIST to number CDATA #REQUIRED><!--必須有屬性值出現(xiàn),且屬性值類型為字符串-->
<!ATTLIST from length CDATA "10"><!--默認(rèn)屬性值,不寫出屬性時(shí)屬性值為10-->
<!--假如您不希望強(qiáng)制作者包含屬性,并且您沒(méi)有默認(rèn)值選項(xiàng)的話,請(qǐng)使用關(guān)鍵詞 #IMPLIED。-->
<!ATTLIST heading length CDATA #IMPLIED>
<!ATTLIST body length CDATA #FIXED "123"><!--屬性擁有固定的值,并不允許作者改變這個(gè)值-->
<!ATTLIST br type (check|cash) "cash"><!--屬性值可以為check和cash中的一個(gè)-->
]>
<note>
<to number="1234">Tove</to>
<from>Jani</from>
<heading length="10">Reminder</heading>
<body length="123">Don't forget me this weekend</body>
<br type="check"/>
</note></code>

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“xml約束技術(shù)dtd的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(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