ATTLIST
ステートメントは、1 つの要素に属することができる各属性を一覧し、宣言するために使用されます。最初に、その属性リストが適用される要素 (または複数の要素) の名前を指定します。次に、各属性の名前を一覧し、それらが必須かどうか、値としてどのような文字データが許されるかを指定します。
構文
<!ATTLIST elementName attributeName dataType default >
パラメータ
- elementName
属性リストが適用される要素の名前。
- attributeName
属性の名前。このパラメータは、elementName
で使用できるすべての属性を一覧するまで、必要な回数繰り返すことができます。
dataType
attributeName
パラメータ中で名前を挙げた属性のデータ型。次のいずれかである必要があります。CDATA - 属性は文字データのみを含みます。
ID - 属性の値は一意でなければなりません。ドキュメント内の他の要素と属性で繰り返すことはできません。
IDREF - 属性は、ドキュメントに含まれる他の ID 型の属性の値を参照します。
ENTITY - 属性値は、外部の未解析の ENTITY (同じ DTD で宣言されている) の名前に対応する必要があります。
ENTITIES - 属性値には、DTD で宣言された、未解析の外部エンティティの複数の名前が含まれます。
NMTOKEN - 属性値は名前トークンであることが必要です。名前トークンには文字データが許されますが、CDATA よりは制限を受けます。名前トークンには、文字、数字、そしてピリオド、ハイフン、アンダースコアおよびコロンなどの句読記号を含むことができます。しかし、名前トークンに空白文字を含めることはできません。
NMTOKENS - 複数の名前トークンを含む属性値。詳細については NMTOKEN および Enumerated の説明を参照してください。
Enumerated - 属性値は列挙された一覧に含まれる値に限定されます。一覧に一致する値のみが有効に解析されます。列挙されたすべてのデータ型は 1 組のかっこで囲まれ、それぞれの値は縦棒 ("|") で区切られます。
default
attributeName
で指定された属性の既定値。次の表で可能な既定値について説明します。既定値 説明 #REQUIRED
属性は XML ドキュメントに必須であり、ない場合は解析エラーとなります。場合により、解析エラーを避けるために、オプションで
defaultValue
フィールドをこのキーワードに続けて使用することができます。#IMPLIED
属性は XML ドキュメントで使用できます。省略しても解析エラーとはなりません。場合により、オプションでこのキーワードに続けて
defaultValue
フィールドも使用することができます。#FIXED
属性値は DTD 内で固定され、XML ドキュメントで変更したり上書きすることはできません。このキーワードを使用した場合、固定の属性値を宣言するために、このキーワードに続けて
defaultValue
フィールドも使用する必要があります。defaultValue
既定値または固定値。パーサーは、XML ドキュメントで属性が欠落しているか使用されていない場合は、XML ドキュメントにこの値を挿入します。すべての値は一組の引用符 (一重または二重引用符) で囲む必要があります。
注意
DTD 内の各 ATTLIST
宣言について、1 回だけ 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"
>