在DTD中,屬性聲明與ATTLIST聲明。
聲明屬性
屬性聲明的語法如下:
<!ATTLIST element-name attribute-name attribute-type attribute-value>
DTD example:
<!ATTLIST payment type CDATA "check">
XML example:
<payment type="check" />
該attribute-type可以是下列之一:
類型 | 描述 |
---|---|
CDATA | 該值是字符數據 |
( en1 | en2 |..) | 該值必須是一個來自枚舉列表 |
ID | 的值是唯一的id |
IDREF | 的值是另一個元素的id |
IDREFS | 該值是其它id的列表 |
NMTOKEN | 該值是有效的XML名稱 |
NMTOKENS | 值是有效的XML名稱的列表 |
ENTITY | 該值是一個實體 |
ENTITIES | 值是實體的列表 |
NOTATION | 該值是一個符號的名稱 |
xml: | 該值是一個預定義的XML值 |
該attribute-value可以是下列之一:
值 | 說明 |
---|---|
value | 該屬性的缺省值 |
#REQUIRED | 該屬性是必需的 |
#IMPLIED | 該屬性是可選 |
#FIXED value | 屬性值是固定的 |
A缺省屬性值
DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
Valid XML:
<square width="100" />
在上面的例子中, "square"的元素被定義為具有一個空元素"width" CDATA類型的屬性。 如果沒有指定寬度,它具有的默認值為0。
#需要
句法
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
例
DTD:
<!ATTLIST person number CDATA #REQUIRED>
Valid XML:
<person number="5677" />
Invalid XML:
<person />
使用#REQUIRED關鍵字,如果你沒有為默認值的選項,但還是要強制屬性在場。
#默示
句法
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
例
DTD:
<!ATTLIST contact fax CDATA #IMPLIED>
Valid XML:
<contact fax="555-667788" />
Valid XML:
<contact />
使用#IMPLIED關鍵字,如果你不希望強制作者包含屬性,並且沒有為默認值的選項。
#固定
句法
<!ATTLIST element-name attribute-name attribute-type #FIXED "value">
例
DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
Valid XML:
<sender company="Microsoft" />
Invalid XML:
<sender company="w3ii" />
當你想一個屬性有一個固定的值,而不讓筆者去改變它使用#FIXED關鍵詞。 如果作者包括另一個值,XML解析器將返回一個錯誤。
枚舉屬性值
句法
<!ATTLIST element-name attribute-name (en1|en2|..) default-value>
例
DTD:
<!ATTLIST payment type (check|cash) "cash">
XML example:
<payment type="check" />
or
<payment type="cash" />
當您希望屬性值為一系列固定的合法值之一使用枚舉的屬性值。