XPath 1.0 コア関数

 last() 評価中のコンテキストサイズを参照します
 position() 評価中のコンテキストの位置を 1 から始まる数値で参照します
 count() 引数で指定したシーケンス nodes に含まれる項目数を参照します
 id() 引数 ids で指定されてた ID に一致するノードを選択します
 local-name() 引数 nodes で指定したノード集合のうち最初のノードのローカル名を返します
 namespace-uri() 引数 nodes で指定したノード集合のうち最初のノードの名前空間 URI を返します
 name() 引数 nodes で指定したノード集合のうち最初のノードの名前を返します
 string() 引数 nodes で指定したオブジェクトを文字列に変換します
 concat() 全ての引数を文字列化し、連結して返します
 starts-with() 引数 str の文字列値が接頭辞 prefix から始まっているかどうかを判定します
 contains() 引数 str に substr が含まれているかどうかを判定します
 substring-before() 最初に見つかった位置より前の文字列を返します
 substring-after() 最初に見つかった位置より後ろの文字列を返します
 substring() 文字列中の部分文字列を返します
 string-length() 文字列の長さを返します
 normalize-space() 空白文字の正規化を行います
 translate() 文字列内の特定の文字を別の文字に置き換えます
 boolean() 引数 value をブール値に変換します
 not() 引数の flag 否定を返します
 true() 常に真を返します
 false() 常に偽を返します
 lang() 評価中のコンテキストにおける言語が引数と等しいか、またはそれに所属する言語の場合に true を返します
 number() 引数 value を数値に変換します
 sum() 引数 nodes で指定されたノード集合のそれぞれの値を数値として合計して返します
 floor() 引数 num 以下の値の中で最も大きい整数を返します (床関数)
 ceiling() 引数 num 以上の値の中で最も小さい整数を返します (天井関数)
 round() 引数 num に最も近い整数を返します
last()
XPath 1.0 以降

SYNOPSIS

last()
as number - 評価中のコンテキストサイズ。

説 明

評価中のコンテキストサイズを参照します。例えば 3 つの要素を持つノードセットを評価している時のこの関数は 3 を返します。これは position() と比較することで最後のノードかどうかを判定するのにも使用できます (先頭は常に 1 であるため first() という関数は存在しません)。

使用例

book という名前の子要素から最後の要素を参照します。
XPath
book[position()=last()]
position()
XPath 1.0 以降

SYNOPSIS

position()
as number - 現在評価している位置。

説 明

評価中のコンテキストの位置を 1 から始まる数値で参照します。ループ内で出力項目の番号を表示したり、最初・最後の判定を行うために使用します。

使用例

book という名前の子要素から最後の要素を参照します。
XPath
book[position()=last()]
count(nodes)
XPath 1.0 以降

SYNOPSIS

count(
  nodes as node-set - 項目数を参照するシーケンス (ノード集合)。
) as number - シーケンス内の項目数。

説 明

引数で指定したシーケンス nodes に含まれる項目数を参照します。空のシーケンスを指定した場合は 0 を返します。

使用例

chapter 要素の下に 4 つの section 要素が存在する場合、以下は整数 4 を返します。
XPath
count(chapter/section)
id(ids)
XPath 1.0 以降

SYNOPSIS

id(
  ids as object - 取得する ID。
) as node-set - 指定した ID のいずれかを持つノードの集合。

説 明

引数 ids で指定されてた ID に一致するノードを選択します。空白で区切ることで複数の ID を指定することができます。この場合、指定した ID のいずれかと一致する ID を持つノードの集合を返します。

引数に集合を指定した場合、それぞれの項目を文字列化して空白で連結した上で評価を行います。

使用例

"username" という ID を持つ要素の first-name 属性値を参照します。
XPath
id("username")/@first-name
local-name(nodes)
XPath 1.0 以降

SYNOPSIS

local-name(
  nodes as node-set? - ローカル名を参照するノード。
) as string - ノードのローカル名。

説 明

引数 nodes で指定したノード集合のうち最初のノードのローカル名を返します。ローカル名とは名前空間接頭辞の付けられていない名前です。集合が空の場合は長さ 0 の文字列を返します。

引数を省略した場合は現在のコンテキストに対するローカル名を返します。

使用例

親要素のローカル名が "appendix" の場合に true となります。
XPath
local-name(..)='appendix'
namespace-uri(nodes)
XPath 1.0 以降

SYNOPSIS

namespace-uri(
  nodes as node-set? - 名前空間 URI を参照するノード。
) as string - ノードの名前空間 URI。

説 明

引数 nodes で指定したノード集合のうち最初のノードの名前空間 URI を返します。集合が空の場合や名前空間を持たない場合は長さ 0 の文字列を返します。

引数を省略した場合は現在のコンテキストに対する名前空間 URI を返します。

使用例

全ての子要素の中で名前空間 URI に "http://lab.moyo.biz/ns/foo" を持つノード集合を参照します。
XPath
*[namespace-uri()='http://lab.moyo.biz/ns/foo']
name(nodes)
XPath 1.0 以降

SYNOPSIS

name(
  nodes as node-set? - 名前を参照するノード。
) as string - ノードの名前。

説 明

引数 nodes で指定したノード集合のうち最初のノードの名前を返します。ノードが名前空間を持つ場合はその接頭辞が付いた文字列 (QName 形式) となります。集合が空の場合は長さ 0 の文字列を返します。要素・属性以外のノードに対しては local-name() が返す値と同じです。

引数を省略した場合は現在のコンテキストに対する名前を返します。

string(nodes)
XPath 1.0 以降

SYNOPSIS

string(
  nodes as object? - 文字列値を参照するノード集合。
) as string - 引数の文字列値。

説 明

引数 nodes で指定したオブジェクトを文字列に変換します。ノード集合が指定された場合はその最初のノードを文字列値を返します。空のノード集合が指定された場合は長さ 0 の文字列を返します。

返値
ノード集合 先頭のノードの文字列値
number NaN "NaN"
number 正のゼロ "0"
number 負のゼロ "0"
number 正の無限大 "Infinity"
number 負の無限大 "-Infinity"
ブール値 "true"
ブール値 "false"

引数を省略した場合は現在のコンテキストに対する文字列値を返します。

参照: format-number() 
concat(str)
XPath 1.0 以降

SYNOPSIS

concat(
  str as string{2,} - 連結する項目。
) as string - 全ての引数を連結した文字列。

説 明

全ての引数を文字列化し、連結して返します。引数は 2 つ以上指定する必要があります。

使用例

文字列 "ABC", "012", "XYZ" を連結します。
XPath
concat("ABC","012","XYZ")
starts-with(str,prefix)
XPath 1.0 以降

SYNOPSIS

starts-with(
  str as string, - 判定する文字列。
  prefix as string - 一致させる接頭辞。
) as boolean - 先頭が一致する場合 true。

説 明

引数 str の文字列値が接頭辞 prefix から始まっているかどうかを判定します。先頭部分が一致する場合に true を返します。

使用例

商品コードが "000" から始まる商品要素を参照します。
XPath
product[starts-with(@code,"000")]
contains(str,substr)
XPath 1.0 以降

SYNOPSIS

contains(
  str as string, - 判定する文字列。
  substr as string - 部分文字列。
) as boolean - 部分文字列が含まれている場合 true。

説 明

引数 strsubstr が含まれているかどうかを判定します。含まれている場合に true を返します。

使用例

商品コードが "000" から始まる商品要素を参照します。
XPath
product[starts-with(@code,"000")]
substring-before(str,substr)
XPath 1.0 以降

SYNOPSIS

substring-before(
  str as string, -
  substr as string -
) as string -

説 明

最初に見つかった位置より前の文字列を返します。

使用例

XPath

substring-after(str,substr)
XPath 1.0 以降

SYNOPSIS

substring-after(
  str as string, -
  substr as string -
) as string -

説 明

最初に見つかった位置より後ろの文字列を返します。

使用例

XPath

substring(str,substr,substr)
XPath 1.0 以降

SYNOPSIS

substring(
  str as string, -
  substr as number, -
  substr as number? -
) as string -

説 明

文字列中の部分文字列を返します。

使用例

XPath

string-length(str)
XPath 1.0 以降

SYNOPSIS

string-length(
  str as string? -
) as number -

説 明

文字列の長さを返します。

値を省略した場合は現在のコンテキストの文字列値を評価します。

使用例

XPath

normalize-space(str)
XPath 1.0 以降

SYNOPSIS

normalize-space(
  str as string? -
) as number -

説 明

空白文字の正規化を行います。引数 str から前後の連続空白を取り除き、連続した空白を一つの空白に変換します (ここで言う空白とは、空白文字 &#x20、タブ &#x09、復帰 &#x0D、改行 &#x0A です)。

値を省略した場合は現在のコンテキストの文字列値を評価します。

使用例

XPath

translate(str,before,after)
XPath 1.0 以降

SYNOPSIS

translate(
  str as string, -
  before as string, -
  after as string -
) as string -

説 明

文字列内の特定の文字を別の文字に置き換えます。

使用例

XPath
translate("bar","abc","ABC") → BAr
boolean(value)
XPath 1.0 以降

SYNOPSIS

boolean(
  value as object - ブール値に変換する値。
) as boolean - 引数に対応するブール値。

説 明

引数 value をブール値に変換します。変換規則は以下の通りです。

false true
ノード集合 0個 1個以上
number 0, -0, NaN それ以外
string 長さが 0 長さが 1 以上

使用例

XPath

not(flag)
XPath 1.0 以降

SYNOPSIS

not(
  flag as boolean - 否定するブール代数値。
) as boolean - 引数の否定。

説 明

引数の flag 否定を返します。これは引数が true の場合 false を返し、false の場合 true を返します。

true()
XPath 1.0 以降

SYNOPSIS

true()
as boolean - 常に true。

説 明

常に真を返します。定数として使用します。

false()
XPath 1.0 以降

SYNOPSIS

false()
as boolean - 常に false。

説 明

常に偽を返します。定数として使用します。

lang(lang)
XPath 1.0 以降

SYNOPSIS

lang(
  lang as string - 判定する言語。
) as boolean - 一致するかサブ言語の場合 true。

説 明

評価中のコンテキストにおける言語が引数と等しいか、またはそれに所属する言語の場合に true を返します。XML における言語は xml:lang 属性で示される 2 文字または 3 文字の ISO 639 言語コード、およびそれとハイフンで連結された省略可能な ISO 3166-1 国コードです。比較は大文字と小文字を区別しません。

評価中のノードが xml:lang 属性を持たない場合、XML のツリーを先祖 (根っこ) 側にたどり最初に見つかった xml:lang 属性が適用されます。

使用例

評価中のコンテキストに xml:lang="ja-JP" の言語が設定してある場合:
XPath
lang("ja") → true
lang("JA") → true
lang("ja-jp") → true
lang("en") → false
number(value)
XPath 1.0 以降

SYNOPSIS

number(
  value as object? - 数値に変換するオブジェクト。
) as number - 引数の数値。

説 明

引数 value を数値に変換します。ノード集合が指定された場合は string() で文字列に変換した後、通常の文字列として数値に変換します。

数値に変換可能な文字列の正規表現パターンは以下の通りです。値を数値に変換できない場合は NaN を返します。

正規表現
\s*-?(\d+(.\d*)?|.\d+)\s*

値の省略は現在評価中のコンテキストノードを渡すのと同じです。

使用例

XPath

sum(nodes)
XPath 1.0 以降

SYNOPSIS

sum(
  nodes as node-set - 合計値を算出するノード集合。
) as number - ノード集合の値の合計値。

説 明

引数 nodes で指定されたノード集合のそれぞれの値を数値として合計して返します。集合内に NaN が含まれている場合は NaN を返します。

ノード集合のそれぞれの項目は、加算をサポートする数値か数値の派生型である必要があります。

使用例

product という要素の price 属性値を合計します。
XPath
sum(product/@price)
floor(num)
XPath 1.0 以降

SYNOPSIS

floor(
  num as number - オペランド。
) as number - 引数以下で最も大きい整数。

説 明

引数 num 以下の値の中で最も大きい整数を返します (床関数)。返値は引数の正負に関係なく引数と同じか負の無限大に近い直近の整数となります。

使用例

XPath
floor(2) → 2
floor(1.8) → 1
floor(-1.8) → -2
ceiling(num)
XPath 1.0 以降

SYNOPSIS

ceiling(
  num as number - オペランド。
) as number - 引数以上で最も小さい整数値。

説 明

引数 num 以上の値の中で最も小さい整数を返します (天井関数)。返値は引数の正負に関係なく引数と同じか正の無限大に近い直近の整数となります。

使用例

XPath
ceiling(2) → 2
ceiling(1.8) → 2
ceiling(-1.8) → -1
round(num)
XPath 1.0 以降

SYNOPSIS

round(
  num as number - 丸めを行う数値。
) as number - 整数に丸められた数値。

説 明

引数 num に最も近い整数を返します。これは正の値については小数点以下の四捨五入となります。値が整数の間に位置する場合は正の無限大に近い方の整数を返します (例えば 3.5 は 4 を返し、-1.5 は -1 を返します)。また NaN、正の無限大、負の無限大についてはそれぞれ引数と同じ値を返します。

使用例

XPath
round(3.14) → 3
round(1.5) → 2
round(-3.5) → -3
CVS 2008/03/09