ATTLIST (屬性清單)
ATTLIST 陳述式可用來列示或宣告每個可能屬於某項目的屬性。 它會先為屬性清單所適用的一或多個項目指定名稱。 接著它會依名稱列出每個屬性,並指出是否為必要屬性,以及指定哪些字元資料可用來做為屬性值。
語法
<!ATTLIST elementName attributeName dataType default >
參數
elementName
適用屬性清單之項目的名稱。attributeName
屬性的名稱。 此參數可依需要不限次數重複使用,以列出所有可與 elementName 搭配使用的屬性。dataType
在 attributeName 參數中命名之屬性的資料型別必須是下列其中一項:CDATA – 此屬性只會包含字元資料。
ID - 屬性值必須是唯一的。 它不可在文件中所使用的其他項目或屬性中重複使用。
IDREF – 此屬性會參考文件中另一個屬性 (ID 型別) 的值。
ENTITY – 此屬性值必須對應於在相同 DTD 中宣告的外部未剖析 ENTITY。
ENTITIES - 此屬性值包含多個在 DTD 中宣告的外部未剖析實體名稱。
NMTOKEN – 此屬性值必須是名稱語彙基元。 名稱語彙基元允許字元資料值,但所受限制比 CDATA 多。 名稱語彙基元可包含字母、數字,以及某些標點符號,如句號、破折號、底線與冒號。 然而,名稱語彙基元值不可包含任何空格字元。
NMTOKENS - 此屬性值含有多個名稱語彙基元。 如需詳細資訊,請參閱 NMTOKEN 與 Enumerated 的說明。
Enumerated – 此屬性值限定於列舉清單中的值。 只有符合這些列示值的值才會有效地剖析。 所有列舉的資料型別都會以一組括號括住,並以 ("|") 垂直線分隔每個值。
default
在 attributeName 中命名之屬性的預設值。 下表說明可能的預設值。預設值
描述
#REQUIRED
此屬性必須顯示在 XML 文件中,否則會產生剖析錯誤。 為避免在某些情況下產生剖析錯誤,您可以選擇性地在此關鍵字之後接著使用 defaultValue 欄位。
#IMPLIED
此屬性可顯示在 XML 文件中,但若省略,也不會產生剖析錯誤。 在某些情況下,您也可以選擇性地在此關鍵字之後直接使用 defaultValue 欄位。
#FIXED
此屬性值已固定於 DTD 中,不可在 XML 文件中加以變更或覆寫。 若使用此關鍵字,則必須同時在此關鍵字之後直接使用 defaultValue 欄位,以宣告固定的屬性值。
defaultValue
預設值或固定值。 當屬性遺失或未在 XML 文件中使用時,剖析器會將此值插入 XML 文件中。 所有的值都必須以一組引號 (單引號或雙引號) 括住。
![]() |
---|
對於 DTD 中所建立的每個 ATTLIST 宣告,僅需使用一次 elementName。attributeName、dataType 與 default 參數可在清單中定義每個屬性,並可視需要不限次數重複執行,直到您列出及定義所有可與 elementName 搭配使用的屬性為止。 |
範例
此範例會宣告 <book> 項目的下列屬性:
只包含字元資料的選擇性 publisher 屬性。
將其值設為 "MyStore". 的固定 reseller 屬性。
在 XML 文件中,必須包含識別每個 <book> 項目之唯一值的必要 ISBN 屬性。
必須包含 "yes" 或 "no" 值的必要 InPrint 屬性。 若未在 XML 文件中明確設定此值,預設值就會強制執行 "yes" 值。
<!ATTLIST book
publisher CDATA #IMPLIED
reseller CDATA #FIXED "MyStore"
ISBN ID #REQUIRED
inPrint (yes|no) "yes"
>