天天看點

DTD - 屬性

在 DTD 中,屬性通過 ATTLIST 聲明來進行聲明。

屬性聲明使用下列文法:

<!ATTLIST element-name attribute-name attribute-type attribute-value>

DTD 執行個體:

<!ATTLIST payment type CDATA "check">

XML 執行個體:

<payment type="check" />

以下是 <b>屬性類型</b>的選項:

類型

描述

CDATA

值為字元資料 (character data)

(en1|en2|..)

此值是枚舉清單中的一個值

ID

值為唯一的 id

IDREF

值為另外一個元素的 id

IDREFS

值為其他 id 的清單

NMTOKEN

值為合法的 XML 名稱

NMTOKENS

值為合法的 XML 名稱的清單

ENTITY

值是一個實體

ENTITIES

值是一個實體清單

NOTATION

此值是符号的名稱

xml:

值是一個預定義的 XML 值

預設<b>屬性值</b>可使用下列值 :

解釋

屬性的預設值

#REQUIRED

屬性值是必需的

#IMPLIED

屬性不是必需的

#FIXED value

屬性值是固定的

DTD:

&lt;!ELEMENT square EMPTY&gt;

&lt;!ATTLIST square width CDATA "0"&gt;

合法的 XML:

&lt;square width="100" /&gt;

在上面的例子中,"square" 被定義為帶有 CDATA 類型的 "width" 屬性的空元素。如果寬度沒有被設定,其預設值為0 。

&lt;!ATTLIST element-name attribute-name attribute-type #REQUIRED&gt;

&lt;!ATTLIST person number CDATA #REQUIRED&gt;

&lt;person number="5677" /&gt;

非法的 XML:

&lt;person /&gt;

假如您沒有預設值選項,但是仍然希望強制作者送出屬性的話,請使用關鍵詞 #REQUIRED。

&lt;!ATTLIST element-name attribute-name attribute-type #IMPLIED&gt;

&lt;!ATTLIST contact fax CDATA #IMPLIED&gt;

&lt;contact fax="555-667788" /&gt;

&lt;contact /&gt;

假如您不希望強制作者包含屬性,并且您沒有預設值選項的話,請使用關鍵詞 #IMPLIED。

&lt;!ATTLIST element-name attribute-name attribute-type #FIXED "value"&gt;

&lt;!ATTLIST sender company CDATA #FIXED "Microsoft"&gt;

&lt;sender company="Microsoft" /&gt;

&lt;sender company="W3Schools" /&gt;

如果您希望屬性擁有固定的值,并不允許作者改變這個值,請使用 #FIXED 關鍵詞。如果作者使用了不同的值,XML 解析器會傳回錯誤。

&lt;!ATTLIST element-name attribute-name (en1|en2|..) default-value&gt;

&lt;!ATTLIST payment type (check|cash) "cash"&gt;

XML 例子:

&lt;payment type="cash" /&gt;

如果您希望屬性值為一系列固定的合法值之一,請使用列舉屬性值。