!!!DTD [XML] *http://msdn.microsoft.com/ja-jp/library/ms256469(v=vs.80).aspx !!!DTD の作成に利用可能な 4 種類の定義ステートメント ,定義,説明 ,ATTLIST (属性リスト),XML 属性の一覧を宣言します。これらの属性は、名前、データ型、暗黙の既定値、およびその使用を許可する任意の要素の名前によって修飾されます。 ,ELEMENT,XML 要素型の名前とその有効なサブ要素 ("子") を宣言します。 ,ENTITY,特殊文字参照、テキスト マクロ)、および外部ソースからのその他の繰り返しコンテンツ を宣言 ,NOTATION,外部の XML 以外のコンテンツ、およびそのコンテンツを処理する外部アプリケーションを宣言 !!ATTLIST (属性リスト) *http://msdn.microsoft.com/ja-jp/library/ms256140(v=vs.80).aspx *1 つの要素に属することができる各属性を一覧し、宣言するために使用 *最初に、その属性リストが適用される要素 (または複数の要素) の名前を指定 *次に、各属性の名前を一覧し、それらが必須かどうか、値としてどのような文字データが許されるかを指定 !構文 !パラメータ ::elementName *属性リストが適用される要素の名前。 ::attributeName *属性の名前。このパラメータは、elementName で使用できるすべての属性を一覧するまで、必要な回数繰り返すことができます。 ::dataType *attributeName パラメータ中で名前を挙げた属性のデータ型。次のいずれかである必要があります。 ,型,内容 ,CDATA ,文字データのみ ,ID ,一意でなければなりません。ドキュメント内の他の要素と属性で繰り返すことはできません。 ,IDREF ,ドキュメント内の他の ID 型の属性の値を参照します。 ,ENTITY ,外部の未解析の ENTITY (同じ DTD で宣言されている) の名前に対応する必要 ,ENTITIES ,DTD で宣言された、未解析の外部エンティティの複数の名前 ,NMTOKEN,名前トークンでなければなりません。名前トークンには文字データが許されますが、CDATA よりは制限を受けます。名前トークンには、文字、数字、そしてピリオド、ハイフン、アンダースコアおよびコロンなどの句読記号を含むことができます。しかし、名前トークンに空白文字を含めることはできません。 ,NMTOKENS ,複数の名前トークンを含む属性値 ,Enumerated ,列挙された一覧中の値に限定されます。一覧に一致する値のみが有効に解析されます。列挙されたすべてのデータ型は 1 組のかっこで囲まれ、それぞれの値は縦棒 ("|") で区切られます。 ::default *attributeName で指定された属性の既定値。次の表で可能な既定値について説明します。 ,規定値,内容 ,#REQUIRED,XML ドキュメントに必須。オプションで defaultValue フィールドをこのキーワードに続けて使用することができます。 ,#IMPLIED,使用できます。省略しても解析エラーとはなりません。場合により、オプションでこのキーワードに続けて defaultValue フィールドも使用することができます。 ,#FIXED, DTD 内で固定され、XML ドキュメントで変更したり上書きすることはできません。このキーワードを使用した場合、固定の属性値を宣言するために、このキーワードに続けて defaultValue フィールドも使用する必要があります。 ,defaultValue,既定値または固定値 ""DTD 内の各 ATTLIST 宣言について、1 回だけ elementName を使用する必要があります。attributeName、dataType、および default の各パラメータは、リスト中の各属性を定義するもので、elementName で使用されるすべての属性値を列挙し定義し終わるまで、必要な回数繰り返すことができます。 !!ELEMENT *http://msdn.microsoft.com/ja-jp/library/ms256221(v=vs.80).aspx *DTD によって定義されるドキュメント型で使用される要素を宣言するために使用されます。名前で要素を宣言した後、その要素で許可されるコンテンツを指定します !構文 !パラメータ ::name *要素の名前。大文字と小文字を厳密に区別する必要があります。 ::content *要素で許可されるコンテンツ モデル。次のいずれかを指定する必要があります。 *ANY **すべてのコンテンツが要素内で許可されます。要素宣言内でこのキーワードを使用すると、要素および要素のすべての子ノードで、無制限のオープンなコンテンツ モデルが許可 *EMPTY **要素はコンテンツを持つことができません。要素を空にしておく必要があります。 *宣言されるコンテンツ規則 **このオプションについては、コンテンツ規則を作成し、それを一対のかっこで囲む必要があります **要素コンテンツ規則を作成するときに DTD 内で宣言される他の要素の名前と共に使用できる予約済みキーワードまたは句読記号を次の表に示します。 ,シンボル,説明 ,#PCDATA,解析された文字データが要素のコンテンツの一部として許可されます。 ,name,要素の名前。現在定義中の要素、または追加の ELEMENT 宣言を使って DTD 内で名前で定義される他の要素を指定できます。 ,(),要素のコンテンツ モデルを宣言するときは、必ず少なくとも一対のかっこを使用する必要がありますが、他のかっこの対を入れ子にすることもできます。この手法は、要素に対して複雑なコンテンツ モデルを定義するときに利用できます。 ,|,縦棒を使って 2 つの名前付き要素を区切ることができます。縦棒は、いずれの要素 (縦棒の前にある要素または後にある要素) も子要素として出現できることを示します。 ,,,コンマを使って、2 つの名前付き要素または入れ子になった規則を区切ることができます。コンマは、要素または規則が指定された順序で出現する必要があることを示します。 ,?,疑問符は、サフィックスまたはオペランドとして使用できます。疑問符は、疑問符の前の要素または規則が省略可能であり、XML ドキュメント構造内のその位置に 1 回しか出現できないことを示します。 ,+,プラス記号は、サフィックスまたはオペランドとして使用できます。プラス記号は、プラス記号の前の要素または規則が必須条件であり、XML ドキュメント構造内のその位置に複数回出現できることを示します。 ,*,アスタリスクは、サフィックスまたはオペランドとして使用できます。アスタリスクは、アスタリスクの前の要素または規則が省略可能であり、XML ドキュメント構造内のその位置に複数回出現できることを示します。