DTD-要素
DTDでは、要素はELEMENT宣言で宣言されます。
要素の宣言
DTDでは、XML要素は次の構文で宣言されます。
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
空の要素
空の要素は、カテゴリキーワードEMPTYで宣言されます。
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
解析された文字データを持つ要素
解析された文字データのみを持つ要素は、括弧内に#PCDATAを使用して宣言されます。
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
内容のある要素
カテゴリキーワードANYで宣言された要素には、解析可能なデータの任意の組み合わせを含めることができます。
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
子を持つ要素(シーケンス)
1つ以上の子を持つ要素は、括弧内の子要素の名前で宣言されます。
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
子がコンマで区切られた順序で宣言されている場合、子はドキュメント内で同じ順序で表示される必要があります。完全な宣言では、子も宣言する必要があり、子は子を持つこともできます。「note」要素の完全な宣言は次のとおりです。
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
要素の1回の出現のみを宣言する
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
上記の例では、子要素「message」が1回だけ発生し、「note」要素内で1回だけ発生する必要があることを宣言しています。
要素の最小1回の出現を宣言する
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
上記の例の+記号は、子要素「message」が「note」要素内で1回以上出現する必要があることを宣言しています。
要素の0回以上の発生を宣言する
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
上記の例の*記号は、子要素「message」が「note」要素内で0回以上発生する可能性があることを宣言します。
要素の0回または1回の発生を宣言する
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
?上記の例のサインインは、子要素「message」が「note」要素内で0回または1回発生する可能性があることを宣言します。
いずれかまたは両方のコンテンツを宣言する
<!ELEMENT note (to,from,header,(message|body))>
上記の例では、「note」要素に「to」要素、「from」要素、「header」要素、および「message」要素または「body」要素のいずれかが含まれている必要があることを宣言しています。
混合コンテンツの宣言
<!ELEMENT note (#PCDATA|to|from|header|message)*>
上記の例では、「note」要素に、解析された文字データ、「to」、「from」、「header」、または「message」要素のオカレンスを0個以上含めることができることを宣言しています。