#?SuikaWiki/0.9

[1] [[XML]] の[[属性]]の[[型]]
<http://www.w3.org/TR/REC-xml#sec-attribute-types>
について。

,文字列型	,[CODE(XML)[[[CDATA]]]]
,字句型	,[CODE(XML)[[[ID]]]]
,字句型	,[CODE(XML)[[[IDREF]]]]
,字句型	,[CODE(XML)[[[IDREFS]]]]
,字句型	,[CODE(XML)[[[ENTITY]]]]
,字句型	,[CODE(XML)[[[ENTITIES]]]]
,字句型	,[CODE(XML)[[[NMTOKEN]]]]
,字句型	,[CODE(XML)[[[NMTOKENS]]]]
,列挙型	,[CODE(XML)[[[NOTATION]]]] [VAR[[[群]]]]
,列挙型	,[VAR[群]]

- [2] 型が [CODE(XML)[ID]], [CODE(XML)[NOTATION]] の属性は、要素型にそれぞれ1つしか存在できません。
- [3] [[互換性のため]]、 [CODE(XML)[NOTATION]] 型の属性は[[内容モデル]]が [CODE(XML)[[[EMPTY]]]] の要素型 ([[強制空要素]]) には存在できません。
- [4] [VAR[群]]の[[接続子]]は XML では [CODE(XML)[|]] のみです。
- [5] [VAR[群]]の構成要素は、記法型の場合は宣言されている [WEAK[(多分、 DTD のどっかで宣言されていれば属性並び宣言の後でもいい。)]] [[名前]]で、単なる列挙型の場合は[[名前字句]] ([CODE(XML)[Nmtoken]]) です。
- [6] [[相互運用性のため]]、単なる列挙型の候補の名前字句はその要素型の単なる列挙型全ての中で一意であるべきです。
- [7] [VAR[群]]それぞれの構成要素に重複がある ([SAMP(XML)[(あ|い|あ)]]) のとか、群と[[引数実体]]が適当に入れ子になっていない ([SAMP(XML)[(あ|%t;]]) のは駄目な気がするんですが、仕様書にはなんとも書かれていません。
- [8] 属性の型は[[属性並び宣言]]で宣言します。属性が宣言されていない場合や属性並び宣言を含む部分が読まれていない場合には [CODE(XML)[CDATA]] とみなされます。

[10]
>>7 前者は妥当性制約 [Q[No Duplicate Tokens]] で禁じられていました。
([[Mr.Anonymous]] [WEAK[2004-05-27 12:20:28 +00:00]])


[11]
>>7 後者は妥当性制約 [Q[Proper Group/PE Nesting]] が該当しそうだけどよく読むと[[模型群]]にしか適用されないし。

;; もっとも、 [[SGML]] 的には[[列挙型]]の指定も[[群]]なので、
同じような妥当性制約が必要なはず。
([[Mr.Anonymous]] [WEAK[2004-05-27 12:24:24 +00:00]])


[[#comment]]


* 場面ごとの属性の型の使用可否

[9]
,型名	,要素属性	,==	,データ属性	,連結属性
,	,XML	,SGML	,==	,==
,[CODE(SGML)[[[CDATA]]]]	,○	,○	,○	,○
,[CODE(SGML)[[[ENTITIES]]]]	,○	,○	,×	,○
,[CODE(SGML)[[[ENTITY]]]]	,○	,○	,×	,○
,[CODE(SGML)[[[ID]]]]	,○	,○	,×	,×
,[CODE(SGML)[[[IDREF]]]]	,○	,○	,×	,×
,[CODE(SGML)[[[IDREFS]]]]	,○	,○	,×	,×
,[CODE(SGML)[[[NAME]]]]	,×	,○	,○	,○
,[CODE(SGML)[[[NAMES]]]]	,×	,○	,○	,○
,[CODE(SGML)[[[NMTOKEN]]]]	,○	,○	,○	,○
,[CODE(SGML)[[[NMTOKENS]]]]	,○	,○	,○	,○
,[CODE(SGML)[[[NOTATION]]]]	,△	,△	,×	,×
,[CODE(SGML)[[[NUMBER]]]]	,×	,○	,○	,○
,[CODE(SGML)[[[NUMBERS]]]]	,×	,○	,○	,○
,[CODE(SGML)[[[NUTOKEN]]]]	,×	,○	,○	,○
,[CODE(SGML)[[[NUTOKENS]]]]	,×	,○	,○	,○
,列挙	,○	,○	,○	,○
,データ指定	,×	,○	,○	,○

参照 :
- 属性定義 10.3
- データ属性 10.4.1
- 連結属性 11.1.4.2
- [[データ指定]] K.4.4.3

[[#comment]]


* メモ