大域属性

大域属性 (XML)

[1]XML名前空間名前空間接頭辞つきの属性名を持つ属性名前空間名を持つ属性 ⇔ 特定の要素型に属さない属性 ⇔ 大域属性 ⇔ Global attribute。

概要

[2] たとえば、 <e attr="val"/>attr 属性は、接頭辞を持っていません。この属性は要素型区画に属しています。これは大域属性ではありません。

一方で、 <e ns:attr="val"/> では、 attr 属性は、 接頭辞 ns で表される名前空間に属しています。こちらを大域属性といいます。

[3] 名前空間に属しているのに大域属性とは変に思えるかもしれませんが、そうではありません。 大域属性ではない場合、 <e attr="val"/><f attr="val"/>attr 属性は、どちらも同じ属性のように思えますが、 (少なくても XML 名前空間の水準では) 別の要素型に属する別の属性です。一方で、大域属性である場合には、 <e ns:attr="val"/><f ns:attr="val"/>attr 属性は、どちらも同じ名前空間に属するので、同じ属性です。 このように、大域属性は、要素型を超えて使うことができます。これが大域属性の大域たる所以です。 (名無しさん)

[4] XML 名前空間を初めて知った人が一番よくはまるのが、 <ns:e attr="val"/><ns:e ns:attr="val"/> の違いです。

前者は大域属性ではありませんが、後者は大域属性です。 大域属性は名前空間に属しますが、非大域属性は要素型毎の区画に属します。 前者の attr 属性は名前空間 ns の要素型 e の属性 attr であるのに対し、後者の attr 属性は名前空間 ns の属性 attr であり、意味が異なるのです。

用語

[5] ところで、 XML Names 1.0 の仕様書には「global attribute」という語が何度も出てくるのに対し、 XML Names 1.1 の仕様書には一度も出てきません。他の語に置換えられたのではなく、こういう概念自体が出てきません。 (実態は変わっていないにもかかわらず。)

[6] なお、 HTML5 では「大域属性」は HTML名前空間のすべての要素に共通の属性のことを指しており、 XML名前空間における用語とは意味が異なります。

[7] この wiki の解説文では、 XHTML m12n における共通属性大域属性と呼んでいることがあります。

[8] XML名前空間大域属性は、 現在の超大域属性の一種ともいえます。

一覧

[9] 主要な大域属性