ATTLIST (属性リスト)

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"
>

参照

概念

ELEMENT

ENTITY (XML)

NOTATION