XPinter
XPinter
(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」の文字が特定できることになります。