ホーム HTML CSS XML JAVASCRIPT   PHP SQL MORE...   リファレンス 事例集    

XPath, XQuery, 及び XSLT 関数

« 前章へ 次章へ »

以下のリファレンスライブラリは、XPath 2.0、XQuery 1.0、およびXSLT 2.0に必要な関数を規定しています。


関数リファレンス

Note 関数名前空間のデフォルト接頭語をfn:とします

Note 関数名前空間のURIは次の通りとします: http://www.w3.org/2005/xpath-functions

アクセサ関数

名称 内容
fn:node-name(node) 引数nodeのノード名を返します
fn:nilled(node) 引数nodeがnillを許すか否かを表すブール値を返します
fn:data(item.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) 引数を切上げして整数を返します

例: ceiling(3.14)
結果: 4

fn:floor(num) 引数を切捨てして整数を返します

例: floor(3.14)
結果: 3

fn:round(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コード・ポイント(http://www.w3.org/2005/02/xpath-functions/collation/codepoint)に従い照合し、 comp1の値がcomp2の値と等しいければ true を返し、そうでなければ、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-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)
スタート位置から指定された長さの部分文字列を返します。先頭文字のインデックスは1です。 長さを省略すると、開始位置から最後までの部分文字列を返します

例: substring('Beatles',1,4)
結果: 'Beat'

例: substring('Beatles',2)
結果: 'eatles'

fn:string-length(string)
fn:string-length()
指定された文字列の長さを返します。引数が指定されなければ、カレントノードの文字列値の長さを返します

例: string-length('Beatles')
結果: 7

fn:normalize-space(string)
fn:normalize-space()
指定の文字列から先行または後続する空白を削除し、内部の連続した空白のすべてを1つに置換した結果を返します。 文字列引数が指定されなければ、カレントノードに対して同じことを行います

例: normalize-space(' The   XML ')
結果: 'The XML'

fn:normalize-unicode()  
fn:upper-case(string) 引数の文字列を大文字に変換します

例: upper-case('The XML')
結果: 'THE XML'

fn:lower-case(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:54'

例: translate('12:30','0123','abcd')
結果: 'bc:da'(0->a,1->b,2->c,3->d,:->:)

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) 文字列引数がパターンにマッチすれば true を返し、そうでなければ false 返します

例: matches("Merano", "ran")
結果: true

fn:replace(string,pattern,replace) 与えられた pattern を 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ならfalseを返します

例: not(true())
結果: false

fn:true() ブール値true を返します

例: true()
結果: true

fn:false() ブール値false を返します

例: false()
結果: false

期間、日付、および時刻関数

期間、日付、および時刻コンポーネント抽出関数

名称 内容
fn:dateTime(date,time) 引数を日付と時刻に変換します
fn:years-from-duration(datetimedur) 引数の値の規範的字句表現で年コンポーネントを表す整数を返します(規範的字句表現:canonical lexical representation)
fn:months-from-duration(datetimedur) 引数の値の規範的字句表現で月コンポーネントを表す整数を返します
fn:days-from-duration(datetimedur) 引数の値の規範的字句表現で日コンポーネントを表す整数を返します
fn:hours-from-duration(datetimedur) 引数の値の規範的字句表現で時間(hour)コンポーネントを表す整数を返します
fn:minutes-from-duration(datetimedur) 引数の値の規範的字句表現で分コンポーネントを表す整数を返します
fn:seconds-from-duration(datetimedur) 引数の値の規範的字句表現で秒コンポーネントを表す小数を返します
fn:year-from-dateTime(datetime) ローカライズされた引数の値の年コンポーネントを表す整数を返します t

例: 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) タイムゾーン引数が空であれば、タイムゾーンなしのdateTimeを返します。空でなければ、タイムゾーン付のdateTimeを返します
fn:adjust-date-to-timezone(date,timezone) タイムゾーン引数が空であれば、タイムゾーンなしの日付を返します。空でなければ、タイムゾーン付の日付を返します
fn:adjust-time-to-timezone(time,timezone) タイムゾーン引数が空であれば、タイムゾーンなしの時刻を返します。空なければ、タイムゾーン付の時刻を返します

QNameに関連した関数

名称 内容
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")は、
<p xml:lang="en">...</p> なら true を返します

例: Lang("de")は、
<p xml:lang="en">...</p> なら false を返します

fn:root()
fn:root(node)
現在又は指定のノードが属するツリーのルートを返します。 通常は文書ノードです

シーケンス関数

一般的なシーケンス関数

名称 内容
fn:index-of((item,item,...),searchitem) 引数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) 引数 position で指定した item を削除した引数 item の値から構成される新しいシーケンスを返します。

例: 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) pos 引数で指定の位置に挿入される inserts 引数の値と、item 引数の値から構成される新規のシーケンスを返します。

例: 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 により指定した数の連続するアイテムを返します。先頭 item の位置は 1 です

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

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

fn:unordered((item,item,...)) 実装に依存した順序でアイテムを返します

シーケンスの基数をテストする関数(Functions That Test the Cardinality of Sequences)

名称 内容
fn:zero-or-one(item,item,...) 0か1つのアイテムを含んでいれば、引数を返します。そうでなければエラーが発生します
fn:one-or-more(item,item,...) 1つ以上のアイテムを含んでいれば、引数を返します。そうでなければエラーが発生します
fn:exactly-one(item,item,...) 1つのアイテムを含んでいれば、引数を返します。そうでなければエラーが発生します

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) string 引数で指定された値の1つ以上の値と等しいID値を持つ要素ノードのシーケンスを返します
fn:idref((string,string,...),node) string 引数に指定された値の1つ以上の値と等しいIDREF値を持つ要素か属性ノードのシーケンスを返します
fn:doc(URI)  
fn:doc-available(URI) doc() 関数が文書ノードを返せば true を返し、そうでなければ、false を返します
fn:collection()
fn:collection(string)
 

コンテキスト関数

名称 内容
fn:position() 現在処理中であるノードのインデックス位置を返します

例: //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() ベース-uriの値を返します

« 前章へ 次章へ »