XPinterXPinter (XML Pointer Language) とは、XLink のリンク先アドレスを特定するための機能です。
XPointer は、URI、HTMLのアンカーや、ID型の属性の特定だけでなく、この他にも様々な拡張された機能を持っています。
HTMLのリンク先指定との互換性を保つために、以下のように定義されています。
URI を持つ文書全体XPointer で指定できるリンク先には、HTMLのリンク先指定を、さらに拡張したものがあります。以下はそのリンク先を指定できるものです。XMLデータ内の「絶対位置」から、リンク先のアンカーの「相対位置」をカウントする、という手法が用いられます。Extensible Pointer) と呼びます。XPointer (XML Pointer Language) と XPointer (Extensible Pointer) は、略称が同じですが、この2つの関係は、先に挙げた HTMLとの互換性を保つのが、 XPointer (XML Pointer Language) で、拡張された機能を持つものが XPointer (Extensible Pointer) と区別しますXPointer と併用して利用します。XPointer で指定したリンク先の「相対位置」を、XMLデータ内の基本となる「絶対位置」から特定することができます。XMLデータのリンク先のアンカーの相対位置を特定するための手法です。XMLデータ内の基本となる絶対位置を決めます。絶対位置が決まったら、その位置から XMLデータの階層構造に従って、親要素や子要素、及び子要素の順番をカウントし、最終的なアンカーの相対位置を決定します。
ルート要素 → 2番目の子要素 となります
ルート要素 → 2番目の子要素(B) → 2番目の子要素(D-2) となります。
XMLデータの階層構造に従って、「ルート要素の2番目の子要素の、そのまた2番目の子要素」といったように指定することで、相対位置が特定できます。XMLデータの中から、基本となる要素の位置を決めます。XMLデータの構造に従って、親要素や子要素、及び子要素の順番の位置をカウントし、最終的なアンカーの位置を決定します。<要素名 xml:link="sample" href="#絶対位置"> リンク先の名称 </要素名>
「#」記号に続けて絶対位置を記述します。| Keyword | 内容 |
| html | リンク先は HTML文書内の name属性を持ったアンカータグで囲まれた要素となる。パラメータは、アンカータグの name属性の値を指定する。 |
| id | リンク先は ID型の属性を持った要素となる。パラメータは、ID型の属性の値を指定する。 |
| root() | リンク先は XML文書内のルート要素となる。 |
| origin() | リンク先は、リンクを記述したリンク元となる。 |
XMLデータの構造に従って、親要素や子要素、及び子要素の順番の位置をカウントします。<要素名 xml:link="simple href="#絶対位置指定.相対位置指定(カウント値,要素指定)"> リンク先の名称 </要素名>
| Keyword | 内容 |
| child | カレント対象は、カレント要素の子要素となる。子要素はカレントの階層の1つ下の要素のみで、さらに下の階層は対象外となる。 |
| fsibling | カレント対象はカレント要素の兄弟要素で、カレント要素の後方にある弟要素となる。 |
| psbling | カレント対象はカレント要素の兄弟要素で、カレント要素の前方にある兄要素となる。 |
| descendant | カレント対象は、カレント要素の子孫要素となる。子孫要素はカレント階層の1つ下の子要素のみではなく、さらにしたの階層の要素を含むすべての要素が対象となる。 |
| ancestor | カレント対象は、カレント要素の先祖要素となる。先祖要素はカレント要素の1つ上の親要素のみでなく、さらに上の階層の要素を含むすべての要素が対象となる。 |
| following | カレント対象は、カレント要素の後方にある要素となる。カレントの後方にある要素は、子孫要素と先祖要素を含むすべての要素が対象となる。 |
| preceding | カレント対象は、カレント要素の前方にある要素となる。カレントの前方にある要素は、子孫要素と先祖要素を含むすべての要素が対象となる。 |
| Keyword | 内容 |
| 要素名 | カレント対象は指定された要素名となる。 |
| #element | カレント対象は任意の要素となる。 |
| #comment | カレント対象はコメント文となる。 |
| #text | カレント対象は要素内用に記述されたテキスト、または CDATAセクションに記述されたテキストとなる。 |
| #CDATA | カレント対象は CDATAセクションに記述されたテキストとなる。 |
| #pi | カレント対象は処理命令となる |
| #all | カレント対象は、上記のすべてのものとなる。 |
<要素名 xml:link="simple"
href="#絶対位置指定.相対位置指定
(カウント値,要素指定,属性名指定,属性値指定)">
リンク先名称
</要素名>
XMLデータとして記述すると、<magazine xml:link="simple" href="#root().descendant(3,#ELEMENT,id,No90196)"> メールマガジンID番号 </magazine>
「*」記号を指定することができます。例えば、ID属性を持ち、なおかつ任意の属性値を持つ3番目の要素を特定する場合には、以下のように記述します。<magazine xml:link="simple" href="#root().descendant(3,#ELEMENT,id,*)"> メールマガジンID番号 </magazine>
No90196」を持つ3番めの要素を指定する場合には、属性名指定にアスタリスクを利用することができます。#IMPLIED」と記述することができます。
<要素名 xml:link="simple"
href="#絶対位置指定.相対位置指定.
string(カウント値,文字列,文字位置,文字数)">
リンク先名称
</要素名>
XMLデータとして記述すると、<magazine xml:link="simple" href="#root().child(2,#ELEMENT).strong(3,'XML',1,1)">XMLとは </magazine>
XML」の1桁目からの文字となり、結果的に「X」の文字が特定できることになります。