[1] [[SGML]] [[体系]]では、[[体系DTD]] の記述に通常の [[SGML DTD]] の他、 [CODE(SGML)[AFDRMeta]] 拡張を使った [[DTD]] を使うこともできます ([DFN[AFDR [RUBYB[体系 DTD 記法] [meta‐DTD notation]]]])。 [WEAK[(もちろん、拡張を使うとその [[DTD]] をそのまま [[SGML DTD]] として使うことはできなくなります。)]] :[[公式公開識別子]]: [CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION AFDR Meta-DTD Notation//EN]]]] [SRC[ISO/IEC 10744:1997 A.3.4.3]] [3] 仕様書: - [[ISO/IEC 10744]]:1997 -- [CSECTION[A.3.4.3 Architecture entity declaration]] -- [CSECTION[A.3.2.2 Attribute forms]] -- [CSECTION[A.3.8.1 Conformance of meta-DTDs]] [2] '''属性定義並び宣言の拡張''': - '''複数の宣言''': 1つの[[要素型]]に対して複数の[[属性定義並び宣言]]を使えます。 [SRC[ISO/IEC 10744:1997 A.3.2.2]] - '''すべての要素型''': [[要素型]]の代わりに全[[要素型]]を表す[[予約名]] [CODE(SGML)[#[[ALL]]]] がつかえます。 [SRC[ISO/IEC 10744:1997 A.3.2.2]] - '''複数の属性定義''': 1つの[[属性名]]に対して複数の[[属性定義]]を使えます。 一番最初の定義のみが有効になります。但し、 [CODE(SGML)[#[[ALL]]]] の[[属性定義]]は他の[[属性定義]]より後にあるとみなします。 [SRC[ISO/IEC 10744:1997 A.3.2.2]] - '''データ属性の場合''': [[要素型]]ではなく、 [[記法]]に対しても同じ拡張が有効です。 [SRC[ISO/IEC 10744:1997 A.3.2.2]] [3] '''AFDR 宣言''': [CODE(SGML)[AFDRMeta]] 拡張[[体系DTD]] は、 [CODE(SGML)[[[AFDR]]]] 宣言をできるだけはじめの方で拡張を使うより前に入れなければなりません。 [SRC[ISO/IEC 10744:1997 A.3.8.1]] [4] '''公式公開識別子''': [[体系DTD]] の[[公式公開識別子]]は、 [CODE(SGML)[AFDRMeta]] 拡張の有無に関わらず [SAMP(SGML)[[VAR[...]]//DTD AFDR Meta-DTD ArcName Architecure//[VAR[..]]]] のようにするのがよいようです。 [SRC[ISO/IEC 10744:1997 A.3.4.3]] [5] '''Web SGML との関係''': [[Web SGML]] では [[DTD]] が拡張され、 >>2 の拡張が取り入れられています。 特に1つの[[要素型]]や1つの[[属性]]に対する複数の宣言は [[XML]] でも使うことができます。