#?SuikaWiki/0.9 [1] = [[属性並び宣言]]。 Attribute definition list declaration。 - [2] [CODE(ABNF)[[DFN[属性定義並び宣言]] := [CODE(SGML)[[[mdo]]]] [[ATTLIST]] 1*[[ps]] 関連付けられる対象 1*ps [[属性定義並び]] 1*ps [CODE(SGML)[[[mdc]]]] ;; [[JISX4151]]‐1992 (141), [[WebSGML]] [141] ]] - [5] [PRE[ [CODE(ABNF)[[DFN[関連付けられる対象]]]] := ;; 要素型についての属性定義並び宣言 [[関連付けられる要素型]] / [CODE(SGML)[[[rni]]]] [[IMPLICIT]] / [CODE(SGML)[rni]] [[ALL]] ;; 記法についての属性定義並び宣言 / [CODE(SGML)[rni]] [[NOTATION]] 1*ps ( [[記法名]] / [[名前群]] / [CODE(SGML)[rni]] IMPLICIT / [CODE(SGML)[rni]] ALL ) ]PRE] -- [CODE(SGML)[IMPLICIT]] は、暗黙に宣言された[[要素型]]又は[[記法]]及びその [[DTD特性]]が [[DTDデータ実体]]中で表現されるものを意味します。 -- [CODE(SGML)[ALL]] は、全ての要素型又は記法を意味します。 [3] 素の SGML では、関連付けられる要素型は同じ[[文書型定義]]中の他の属性定義並び宣言で使われていてはなりません。 (10.3 参照。) [[WebSGML]] では、この制限が撤廃されています。 同じ属性についての[[属性定義]]が複数あれば、最初のものが採用されます。 (K.4.4 参照。) [CODE(SGML)[ALL]] の定義は、名前又は [CODE(SGML)[IMPLICIT]] を指定した定義により上書きされます。ですから例えば、 [PRE[ ]PRE] なら [CODE(SGML)[bar]] 要素の [CODE(SGML)[foo]] 属性は必須です。 しかしながら、 [CODE(SGML)[ALL]] で宣言された[[データ属性]]を指定した後にその属性を再宣言することは、 Web SGML でも[[誤り]]です。例えば、 [PRE[ ]PRE] は3行目で誤りとなります。 [6] [[ISO/IEC 10744]]:1997 の[[体系DTD]] で使用する、[[属性形式]]や[[データ属性形式]]を定義する属性定義並び宣言でも、 Web SGML と同じような拡張が使えます。 - 同じ要素型に関連付けられた属性定義並び宣言が複数あってもよい。 - 要素型が予約名 [CODE(SGML)[#[[ALL]]]] なら、そこで定義された属性はその[[体系]]のすべての[[要素形式]]で使える ([DFN[[[共通属性]]]])。 - 同じ要素型で同じ名前の属性定義が複数あれば、二つ目以降は無効。共通属性宣言は他の属性定義並び宣言の後にあるものとみなす。 - [[記法形式]]に関連付けられる[[データ属性形式]]の宣言についても同様である。 SGML は属性名がすべて固有であることを要求していますから、設計者は共通属性名が他のすべてと異なるように注意するべきです。 (NOTE 404) 仕様書: ISO/IEC 10744:1997 A.3.2.2 ([[名無しさん]]) [[#comment]] * 暗黙の属性定義並び宣言 [4] Web SGML で導入された [CODE(SGML)[[[IMPLYDEF]] ATTLIST YES]] の状態では、[[文書型宣言]]で属性定義並び宣言を明示しなくても属性が使えます。 宣言されていない属性が実現値に出現したら、 その属性は [CODE(SGML)[[[CDATA]] #[[IMPLIED]]]] として宣言されていたものとみなします。 (Web SGML K.3.7 b)1) 参照。)