5. コア関数ライブラリ
XPath では式を評価する際に関数を使用することができます。関数の引数や返り値は 4つの基本型のいずれかになります。
関数の表記法は、関数名の前に返す値の型、関数が引数をとるのであれば "( )" (括弧) 内に引数としてとる値の型、の形で記述することにします。引数のあとに "?" がついている場合、その引数はオプションであり、ない場合には必須となります。また、引数のあとに "*" がついている場合は、引数を 0個以上指定できるという意味です。
5.1 ノード集合関数
number last()
last 関数は、コンテキストノードの集合のサイズ、つまり集合に含まれるノード数に等しい数値を返します。
例えば para[last()] は、コンテキストノードの最後の子要素 para を選択します。
number position()
position 関数は、コンテキストノードの集合内で何番目かを表す数値を返します。position 関数を使うことにより、ノードの位置を指定して、処理することができます。
例えば para[position() mod 2 = 0] は、コンテキストノードの偶数番目の子要素 para を選択します。
number count(node-set)
count 関数は引数に指定したノード集合に含まれるノード数を返します。
例えば count(para) は、コンテキストノードの子要素 para のノード数を返します。
node-set id(object)
id 関数は、ユニーク ID によりエレメントを選択します。ユニーク ID とは、DTD (Document Type Definition) 内で要素を一意に識別するための値を与えるために指定するものですが、ここでは詳細は取り上げません。
例えば id('foo') は、foo という id を持つノード集合を返します。
string local-name(node-set?)
local-name 関数は、引数に指定したノード集合中ドキュメント順で最初のノードのローカル名を返します。ローカル名とは、名前空間接頭辞のついた要素名の、接頭辞と ":" (コロン) 以外の部分を指します。引数を省略した場合は、コンテキストノードを唯一のメンバに持つノード集合を引数に指定したと見なします。
例えば要素ノード fdd:para に local-name 関数を適用すると para が返ってきます。
string namespace-uri(node-set?)
namespace-uri 関数は、引数に指定したノード集合中ドキュメント順で最初のノードの名前空間 URI を返します。引数に指定したノード集合が空の場合、あるいは最初のノードが名前空間を持たない場合等には空の文字列を返します。引数を省略した場合は、コンテキストノードを唯一のメンバに持つノード集合を引数に指定したと見なします。
例えば要素ノード fdd:para に namespace-uri 関数を適用すると接頭辞 fdd が対応する識別子、例えば http://www.4dd.co.jp/xpath が返ってきます。
注: | 要素ノードと属性ノード以外のとき、namespace-uri 関数が返す文字列は空になります。 |
string name(node-set?)
name 関数は引数に指定したノード集合内のノードのうち、ドキュメント順で最初のノードの名前を返します。引数に指定したノード集合が空である場合等には空の文字列を返します。引数を省略した場合は、コンテキストノードを唯一のメンバに持つノード集合を引数に指定したと見なします。
例えば要素ノード fdd:para に name 関数を適用すると fdd:para が返ってきます。
注: | 要素ノードと属性ノードを除き、name 関数が返す文字列は local-name 関数が返す文字列と同じになります。 |