* XLink 要素型

[7] [[XLink]] では、[RUBYB[要素型][element type]]というのは、
[CODE(XMLa)[[VAR[xlink:]][[type]]]] 属性によって識別される、
XLink としての要素の種類のことを指しています。

;; [1] [[SGML]] の用語の[[要素型]]とは直接関係していません。

* xlink:type 属性 (XLink)

[32] [DFN[[CODE(XMLa)[[VAR[xlink:]]type]] 属性]]は、
[[XLink]] の[[要素型]]を指定します。
この属性は [WEAK[(XLink 的に意味を持たせたい要素には)]] 
必須です。

仕様書: <http://www.w3.org/TR/xlink/#link-types>

[33] 属性値:
:[CODE(XML)[[[arc]]]]:[[弧]]を定義するために使用します。
:[CODE(XML)[[[extended]]]]:[[拡張連結]]のために使用します。
:[CODE(XML)[[[locator]]]]:[[遠隔資源]]を指定するために使用します。
:[CODE(XML)[[[none]]]]:この値の時、その要素
(とその[[属性]]) は XLink
的意味を持ちません。
:[CODE(XML)[[[resource]]]]:[[局所資源]]の包含子として使用します。
:[CODE(XML)[[[simple]]]]:[[単純連結]]のために使用します。
:[CODE(XML)[[[title]]]]:人間可読の説明を加えるために使用します。

[34]
XLink 仕様書の [[DTD]] 例では、
[SAMP(XML)[xlink:type (none|simple) #REQUIRED]]
のように、[[列挙型]]で定義されています。
このような場合、 [SAMP(XML)[xlink:type="  simple  "]] のように、[[属性値表記]]内の実際の値の前後に[[空白]]を挿入できます。

しかし、 DTD を読まない時のことを考えると、こんなことはしないほうがよいでしょう。

[35] [[XLink 1.0]] では [CODE(XMLa)@en[[[xlink:type]]]] は必須ですが、 [[XLink 1.1]]
では省略可能で、既定値は [CODE(XML)@en[[[simple]]]] となっています。ただし実際には [[XLink 1.0]]
時代から省略して用いられることが多く、 1.1 はこれを追認するものでした。

[36] [[XLink 1.0]] 時代のものでも、 [[DTD]] や [[XML Schema]] の[[既定値]]としてのみ
[CODE(XMLa)@en[[[xlink:type]]]] を記述することがよくありました。その場合、 [[妥当性検証]]を行わない
[[XML処理器]]を使った場合や、 [[PSVI]] を使わない場合には、 [CODE(XMLa)@en[[[xlink:type]]]]
が設定されないことになってしまいます。

[EG[
[37] 例えば [[SVG 1.0]] や [[SVG 1.1]] は [[XLink 1.0]] に基づいていましたが、 [CODE(XMLa)@en[[[xlink:type]]]]
[[属性]]は [[DTD]] にあるのみで、実際の[[文書]]には記述しないことがよくありました。

[38] また [[GML][Geography Markup Language]] の [[XML Schema]] [[データ型]]である [CODE(XML)@en[[[gml:PointPropertyType]]]]
では [CODE(XMLa)@en[[[xlink:type]]]] [[属性]]の[[既定値]]が用いられており、それを用いた[[スキーマ]]を使った、
例えば[[国土数値情報]]の [[XML]] ファイルでは [CODE(XMLa)@en[[[xlink:href]]]]
[[属性]]だけしか使われていません。
]EG]