データ指定

データ指定

[1] WebSGML で新たに追加された属性型データ指定 (data specification) です。 名前の似たデータ属性とは直接の関係はありません。間接の関係はあれど。 K.4.4.3 で定義されています。

[2] 要は、これまで組み込み型に限定されてきた属性の型を規制緩和して、 記法名とデータ属性指定で識別される任意のデータ内容記法とできるようにしようということです。

但し、 SGML 的にはデータ指定型の属性値はあくまで文字データとして扱われます。 応用はデータ指定に照らして意味があることを検証することを希望しても構いませんが、 たとえ意味がなくても報告可能な誤りにはなりません。

[3] 例えば、

<!NOTATION LanguageCode -- IETF Language Tag -- SYSTEM>
<!ATTLIST foo
  lang DATA LanguageCode #IMPLIED>
...
<foo lang="en-US"/>

のように書けるということですね。但し、 <foo lang="適当な文字列"/> であったとしても SGML 的にははじくことができなくて、 必要なら応用が自分でチェックしないといけない、と。

[4] 記法にはデータ属性を指定できるので、

<!NOTATION InternetMediaType SYSTEM>
<!ATTLIST content
  type DATA InternetMediaType [
    omit-charset-parameter
  ] #REQUIRED
  charset DATA IANACharset #IMPLIED
  language DATA CSV [
    notation = LanguageCode
    allow-wsp
  ] #IMPLIED>

なんてことができちゃうわけだ。