XSLT、XPath および XQuery 関数

XSLT 2.0、XPath 2.0、XQuery 1.0 は同じ関数ライブラリを共有します。

関数リファレンスマニュアル

関数名前空間のデフォルトの接頭辞は:fn:

関数名前空間の URI は:http://www.w3.org/2005/xpath-functions

ヒント:通常は使用されます fn: 接頭辞を使用して関数を呼び出します、例えば fn:string()ただし、 fn: これは名前空間のデフォルトの接頭辞ですので、呼び出し時には関数名に接頭辞を追加する必要はありません。

アクセス関数

名前 説明
fn:node-name(node) パラメータノードのノード名を返します。
fn:nilled(node) パラメータノードを拒否するかどうかのボルン値を返します。
fn:data(item.item,...) アイテムシーケンスを受け入れ、アトミック値シーケンスを返します。
  • fn:base-uri()
  • fn:base-uri(node)
現在のノードまたは指定されたノードの base-uri 属性の値を返します。
fn:document-uri(node) 指定されたノードの document-uri 属性の値を返します。

トップ

エラーやトレース関数

名前 説明
  • fn:error()
  • fn:error(error)
  • fn:error(error,description)
  • fn:error(error,description,error-object)

例:error(fn:QName('http://example.com/test', 'err:toohigh'), 'Error: Price is too high')

結果:外部処理環境に http://example.com/test#toohigh と文字列 "Error: Price is too high" を返します。

fn:trace(value,label) クエリのデバッグに使用されます。

トップ

数値に関する関数

名前 説明
fn:number(arg)

パラメータの値を返します。パラメータはボルン値、文字列、またはノードセットです。

例:number('100')

結果:100

fn:abs(num)

引数の絶対値を返します。

例:abs(3.14)

結果:3.14

例:abs(-3.14)

結果:3.14

fn:ceiling(num)

引数の num に対して最小の整数を返します。

例:ceiling(3.14)

結果:4

fn:floor(num)

引数の num に対して最大の整数を返します。

例:floor(3.14)

結果:3

fn:round(num)

num 引数を最も近い整数に四捨五入します。

例:round(3.14)

結果:3

fn:round-half-to-even()

例:round-half-to-even(0.5)

結果:0

例:round-half-to-even(1.5)

結果:2

例:round-half-to-even(2.5)

結果:2

トップ

文字列関数に関する情報

名前 説明
fn:string(arg)

引数の文字列値を返します。引数は数字、論理値、ノードセットができます。

例:string(314)

結果:"314"

fn:codepoints-to-string(int,int,...)

コードポイントシーケンスから文字列を返します。

例:codepoints-to-string(84, 104, 233, 114, 232, 115, 101)

結果:'Thérèse'

fn:string-to-codepoints(string)

文字列からコードポイントシーケンスを返します。

例:string-to-codepoints("Thérèse")

結果:84, 104, 233, 114, 232, 115, 101

fn:codepoint-equal(comp1,comp2) Unicode 代码ポイント照合に基づいて、comp1 の値が comp2 の値と等しい場合には true を返します。(http://www.w3.org/2005/02/xpath-functions/collation/codepoint)。それ以外の場合には false を返します。
  • fn:compare(comp1,comp2)
  • fn:compare(comp1,comp2,collation)

comp1 が comp2 以下の場合は -1 を返します。comp1 が comp2 と等しい場合には 0 を返します。comp1 が comp2 以下の場合には 1 を返します。(使用される照合規則に応じて)。

例:compare('ghi', 'ghi')

結果:0

fn:concat(string,string,...)

文字列の結合を返します。

例:concat('XPath ','is ','FUN!')

結果:'XPath is FUN!'

fn:string-join((string,string,...),sep)

sep引数を使用して区切り文字として、string引数を結合した文字列を返します。

例:string-join(('We', 'are', 'having', 'fun!'), ' ')

結果:' We are having fun! '

例:string-join(('We', 'are', 'having', 'fun!'))

結果:'Wearehavingfun!'

例:string-join((), 'sep')

結果:''

  • fn:substring(string,start,len)
  • fn:substring(string,start)

start位置から指定された長さの部分文字列を返します。最初の文字のインデックスは1です。len引数を省略した場合、start位置から文字列の末尾までの部分文字列を返します。

例:substring('Beatles',1,4)

結果:'Beat'

例:substring('Beatles',2)

結果:'eatles'

  • fn:string-length(string)
  • fn:string-length()

指定された文字列の長さを返します。string引数が指定されていない場合、現在のノードの文字列値の長さを返します。

例:string-length('Beatles')

結果:7

  • fn:normalize-space(string)
  • fn:normalize-space()

指定された文字列の先頭と末尾の空白を削除し、内部のすべての空白シーケンスを一つに置き換え、結果を返します。string引数が指定されていない場合、現在のノードを処理します。

例:normalize-space(' The   XML ')

結果:'The XML'

fn:normalize-unicode() Unicode規格化を実行します。
fn:upper-case(string)

string引数を大文字に変換します。

例:upper-case('The XML')

結果:'THE XML'

fn:lower-case(string)

string パラメータを小文字に変換します。

例:lower-case('The XML')

結果:'the xml'

fn:translate(string1,string2,string3)

string1 内の string2 を string3 に置き換えます。

例:translate('12:30','30','45')

結果:'12:45'

例:translate('12:30','03','54')

結果:'12:45'

例:translate('12:30','0123','abcd')

結果:'bc:da'

fn:escape-uri(stringURI,esc-res)

例:escape-uri("http://example.com/test#car", true())

結果:"http%3A%2F%2Fexample.com%2Ftest#car"

例:escape-uri("http://example.com/test#car", false())

結果:"http://example.com/test#car"

例:escape-uri ("http://example.com/~bébé", false())

結果:"http://example.com/~b%C3%A9b%C3%A9"

fn:contains(string1,string2)

string1 が string2 を含む場合、true を返します。そうでない場合、false を返します。

例:contains('XML','XM')

結果:true

fn:starts-with(string1,string2)

string1 が string2 で始まる場合、true を返します。そうでない場合、false を返します。

例:starts-with('XML','X')

結果:true

fn:ends-with(string1,string2)

string1 が string2 で終わる場合、true を返します。そうでない場合、false を返します。

例:ends-with('XML','X')

結果:false

fn:substring-before(string1,string2)

string1 に string2 が出现する前にあるサブストリングを返します。

例:substring-before('12/10','/')

結果:'12'

fn:substring-after(string1,string2)

string2 が string1 に現れた後のサブストリングを返します。

例:substring-after('12/10','/')

結果:'10'

fn:matches(string,pattern)

string パラメータが指定されたパターンに一致する場合 true を返し、そうでない場合は false を返します。

例:matches("Merano", "ran")

結果:true

fn:replace(string,pattern,replace)

指定されたパターンを replace パラメータに置き換え、結果を返します。

例:replace("Bella Italia", "l", "*")

結果:'Be**a Ita*ia'

例:replace("Bella Italia", "l", "")

結果:'Bea Itaia'

fn:tokenize(string,pattern)

例:tokenize("XPath is fun", "\s+")

結果:("XPath", "is", "fun")

トップ

anyURI 関連の関数

名前 説明
fn:resolve-uri(relative,base)  

トップ

ブール値に関する関数

名前 説明
fn:boolean(arg) 数字、文字列、ノードセットのブール値を返します。
fn:not(arg)

まず boolean() 関数を通じてパラメータをブール値に復元します。

ブール値が false であれば true を返し、そうでない場合は true を返します。

例:not(true())

結果:false

fn:true()

ブール値 true を返します。

例:true()

結果:true

fn:false()

ブール値 false を返します。

例:false()

結果:false

トップ

持続時間、日付、時間に関する関数

日付、時間、持続時間のコンポーネント抽出関数

名前 説明
fn:dateTime(date,time) パラメータを日付と時間に変換します。
fn:years-from-duration(datetimedur) パラメータの年の部分の整数を標準語彙表記法で表現して返します。
fn:months-from-duration(datetimedur) パラメータの月の部分の整数を標準語彙表記法で表現して返します。
fn:days-from-duration(datetimedur) 返却パラメータの値の日部分の整数を、標準語彙法で表現します。
fn:hours-from-duration(datetimedur) 返却パラメータの値の時間部分の整数を、標準語彙法で表現します。
fn:minutes-from-duration(datetimedur) 返却パラメータの値の分部分の整数を、標準語彙法で表現します。
fn:seconds-from-duration(datetimedur) 返却パラメータの値の分部分のデシマル数を、標準語彙法で表現します。
fn:year-from-dateTime(datetime)

返却パラメータのローカル値の年部分の整数を返します。

例:year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:2005

fn:month-from-dateTime(datetime)

返却パラメータのローカル値の月部分の整数を返します。

例:month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:01

fn:day-from-dateTime(datetime)

返却パラメータのローカル値の日部分の整数を返します。

例:day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:10

fn:hours-from-dateTime(datetime)

返却パラメータのローカル値の時間部分の整数を返します。

例:hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:12

fn:minutes-from-dateTime(datetime)

返却パラメータのローカル値の分部分の整数を返します。

例:minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:30

fn:seconds-from-dateTime(datetime)

返却パラメータのローカル値の秒部分のデシマル数を返します。

例:seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10"))

結果:0

fn:timezone-from-dateTime(datetime) 存在する場合、パラメータの時区部分を返します。
fn:year-from-date(date)

パラメータのローカル値の年部分を表す整数を返します。

例:year-from-date(xs:date("2005-04-23"))

結果:2005

fn:month-from-date(date)

パラメータのローカル値の月部分を表す整数を返します。

例:month-from-date(xs:date("2005-04-23"))

結果:4

fn:day-from-date(date)

パラメータのローカル値の日部分を表す整数を返します。

例:day-from-date(xs:date("2005-04-23"))

結果:23

fn:timezone-from-date(date) 存在する場合、パラメータの時区部分を返します。
fn:hours-from-time(time)

パラメータのローカル値の時間部分を表す整数を返します。

例:hours-from-time(xs:time("10:22:00"))

結果:10

fn:minutes-from-time(time)

パラメータのローカル値の分部分を表す整数を返します。

例:minutes-from-time(xs:time("10:22:00"))

結果:22

fn:seconds-from-time(time)

パラメータのローカル値の秒部分を表す整数を返します。

例:seconds-from-time(xs:time("10:22:00"))

結果:0

fn:timezone-from-time(time) 存在する場合、パラメータの時区部分を返します。
fn:adjust-dateTime-to-timezone(datetime,timezone)

timezone パラメータが空の場合、時区のない dateTime を返します。

そうでない場合、時区を持つ dateTime を返します。

fn:adjust-date-to-timezone(date,timezone)

timezone パラメータが空の場合、時区のない date を返します。

そうでない場合、時区を持つ date を返します。

fn:adjust-time-to-timezone(time,timezone)

timezone パラメータが空の場合、時区のない time を返します。

そうでない場合、時区を含む time を返します。

トップ

QNames に関する関数

名前 説明
fn:QName()  
fn:local-name-from-QName()  
fn:namespace-uri-from-QName()  
fn:namespace-uri-for-prefix()  
fn:in-scope-prefixes()  
fn:resolve-QName()  

トップ

ノードに関する関数

名前 説明
  • fn:name()
  • fn:name(nodeset)
現在のノードの名前または指定されたノードセットの最初のノードを返します。
  • fn:local-name()
  • fn:local-name(nodeset)
現在のノードの名前または指定されたノードセットの最初のノードを名前空間接頭辞なしで返します。
  • fn:namespace-uri()
  • fn:namespace-uri(nodeset)
現在のノードまたは指定されたノードセットの最初のノードの名前空間 URI を返します。
fn:lang(lang)

現在のノードの言語が指定された言語に一致する場合、true を返します。

例:Lang("en") は true です。 <p xml:lang="en">...</p>

例:Lang("de") は false です。 <p xml:lang="en">...</p>

  • fn:root()
  • fn:root(node)
現在のノードまたは指定されたノードのノードツリーのルートノードを返します。通常はドキュメントノードです。

トップ

シーケンスに関する関数

一般的な関数

名前 説明
fn:index-of((item,item,...),searchitem)

検索項目がシーケンスの項目に等しい位置を返します。

例:index-of ((15, 40, 25, 40, 10), 40)

結果:(2, 4)

例:index-of (("a", "dog", "and", "a", "duck"), "a")

結果:(1, 4)

例:index-of ((15, 40, 25, 40, 10), 18)

結果:()

fn:remove((item,item,...),position)

返回由 item パラメータで構成された新しいシーケンス - position パラメータで指定された項目を削除します。

例:remove(("ab", "cd", "ef"), 0)

結果:("ab", "cd", "ef")

例:remove(("ab", "cd", "ef"), 1)

結果:("cd", "ef")

例:remove(("ab", "cd", "ef"), 4)

結果:("ab", "cd", "ef")

fn:empty(item,item,...)

パラメータの値が空シーケンスである場合、true を返します。それ以外の場合、false を返します。

例:empty(remove(("ab", "cd"), 1))

結果:false

fn:exists(item,item,...)

パラメータの値が空シーケンスでない場合、true を返します。それ以外の場合、false を返します。

例:exists(remove(("ab"), 1))

結果:false

fn:distinct-values((item,item,...),collation)

ユニークな値を返します。

例:distinct-values((1, 2, 3, 1, 2))

結果:(1, 2, 3)

fn:insert-before((item,item,...),pos,inserts)

item パラメータで構築された新しいシーケンスを返します。同時に pos パラメータで指定された位置に inserts パラメータの値を挿入します。

例:insert-before(("ab", "cd"), 0, "gh")

結果:("gh", "ab", "cd")

例:insert-before(("ab", "cd"), 1, "gh")

結果:("gh", "ab", "cd")

例:insert-before(("ab", "cd"), 2, "gh")

結果:("ab", "gh", "cd")

例:insert-before(("ab", "cd"), 5, "gh")

結果:("ab", "cd", "gh")

fn:reverse((item,item,...))

指定されたプロジェクトの逆順を返します。

例:reverse(("ab", "cd", "ef"))

結果:("ef", "cd", "ab")

例:reverse(("ab"))

結果:("ab")

fn:subsequence((item,item,...),start,len)

start パラメータで指定された位置から、len パラメータで指定された長さのプロジェクトシーケンスを返します。

最初のプロジェクトの位置は 1 です。

例:subsequence(($item1, $item2, $item3,...), 3)

結果:($item3, ...)

例:subsequence(($item1, $item2, $item3, ...), 2, 2)

結果:($item2, $item3)

fn:unordered((item,item,...)) 実装に依存する順序で項目を返します。

シーケンスの容量をテストする関数

名前 説明
fn:zero-or-one(item,item,...) パラメータに0個または1つの項目が含まれている場合、パラメータを返し、それ以外の場合エラーを生成します。
fn:one-or-more(item,item,...) パラメータに1つまたは複数の項目が含まれている場合、パラメータを返し、それ以外の場合エラーを生成します。
fn:exactly-one(item,item,...) パラメータに項目が含まれている場合、パラメータを返し、それ以外の場合エラーを生成します。

Equals, Union, Intersection and Except

名前 説明
fn:deep-equal(param1,param2,collation) param1 と param2 が深い等価性(deep-equal)で一致する場合 true を返し、それ以外の場合 false を返します。

合計関数

名前 説明
fn:count((item,item,...)) ノードの数を返します。
fn:avg((arg,arg,...))

パラメータの値の平均を返します。

例:avg((1,2,3))

結果:2

fn:max((arg,arg,...))

他のパラメータよりも大きなパラメータを返します。

例:max((1,2,3))

結果:3

例:max(('a', 'k'))

結果:'k'

fn:min((arg,arg,...))

他のパラメータよりも小さいパラメータを返します。

例:min((1,2,3))

結果:1

例:min(('a', 'k'))

結果:'a'

fn:sum(arg,arg,...) 指定されたノード集中各ノードの値の合計を返します。

シーケンスを生成する関数

名前 説明
fn:id((string,string,...),node) 指定の文字列パラメータに指定された値の1つまたは複数が ID 値として等しい要素ノードシーケンスを返します。
fn:idref((string,string,...),node) 指定の文字列パラメータに指定された値の1つまたは複数が IDREF 値として等しい要素や属性ノードシーケンスを返します。
fn:doc(URI)  
fn:doc-available(URI) doc() 函数がドキュメントノードを返す場合に true を返し、それ以外の場合に false を返します。
  • fn:collection()
  • fn:collection(string)
 

トップ

上下文関数

名前 説明
fn:position()

現在処理されているノードの index 位置を返します。

例://book[position()<=3]

結果:最初の3つの book エレメントを選択

fn:last()

処理されているノードリスト内の要素数を返します。

例://book[last()]

結果:最後の book エレメントを選択

fn:current-dateTime() 現在の dateTime(時区付き)を返します。
fn:current-date() 現在の日期(時区付き)を返します。
fn:current-time() 現在の時間(時区付き)を返します。
fn:implicit-timezone() 暗黙のタイムゾーンの値を返します。
fn:default-collation() デフォルトの照合の値を返します。
fn:static-base-uri() base-uri の値を返します。

トップ

XSLT 関数

さらに、以下の内蔵の XSLT 関数があります:

名前 説明
current() 現在のノードを唯一のメンバーとして含むノードセットを返します。
document() 外部 XML 文書内のノードにアクセスするために使用されます。
element-available() XSLT プロセッサが指定されたエレメントをサポートしているかどうかを検出します。
format-number() 数字を文字列に変換します。
function-available() XSLT プロセッサが指定された関数をサポートしているかどうかを検出します。
generate-id() 指定されたノードを識別するユニークな文字列値を返します。
key() 以前に <xsl:key> 文でマークされたエレメントを検索します。
node-set ツリーをノードセットに変換します。生成されたノードセットは常に単一のノードを含み、ツリーのルートノードです。
system-property() システムプロパティの値を返します。
unparsed-entity-uri() 未解析エンティティの URI に戻る。

トップ