XQuery リファレンス

     前  次    目次     
ここから内容

XQuery 文字列関数リファレンス

この章では、WebLogic Workshop のマッパー機能で使用できる XQuery 文字列関数について説明します。マッパー機能を使用してクエリを生成し、生成したクエリ内にこれらの XQuery 関数の呼び出しを追加します。

マッパー機能で使用できる XQuery 関数および演算子以外にも、数多くの追加の関数および演算子が用意されています。マッパー機能のソース ビューを使用すると、これらの関数および演算子の呼び出しを手動でクエリに追加できます。 追加の関数と演算子のリストについては、次の URL にある W3C Web サイトで、 XQuery 1.0 and XPath 2.0 Functions and Operators - W3C Working Draft 16 August 2002 を参照してください。

http://www.w3.org/TR/2002/WD-xquery-operators-20020816

この節では、マッパー機能で使用できる型変換関数のリストを示します。

 


xf:concat

引数で渡された文字列値を連結します。

シグネチャ

xf:concat(xs: string $string-var1, xs: string $string-var2, ... ) —> xs: string

表 3-1 引数
データ型
引数
説明
$string-var1
連結する最初の文字列を表します。
$string-var2
連結する 2 番目の文字列を表します。
. . .
 
連結する他の文字列を表します。

戻り値

この関数の引数を連結した文字列を返します。

文字列引数のいずれかの値が空のシーケンスの場合、その引数は長さゼロの文字列 ("") として扱われます。

表 3-2 例
クエリ
生成される結果
<r>{xf:concat("str1", "str2")}</r>
<r>str1str2</r>
<r>{xf:concat('str1', 'str2')}</r>
<r>str1str2</r>
<r>{xf:concat("str1")}</r>
<r>str1</r>
<r>{xf:concat(())}</r>
<r></r>
<r>{xf:concat("str1", "str2", "str3", "str4", "str5", "str6")}</r>
<r>str1str2str3str4str5str6</r>

関連トピック

W3C の concat 関数の説明。

 


bea-xf: trim-left

$string-var から先頭のホワイト スペースを削除します。

$string-var の値が空のシーケンスである場合、マッパーには次のエラーが表示されます。

XQuery を実行中にエラーが発生しました : このメソッドに XQuery または XSLT をロードしている際にエラーが発生しました。Type error in function trim-left invocation: 予期される型 [string@http://www.w3.org/2001/XMLSchema]、given type empty

空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

bea-xf: trim-left(xs: string $string-var) —> xs: string

表 3-3 引数
データ型
引数
説明
$string-var
ホワイト スペースを削除する文字列を表します。

戻り値

先頭のホワイト スペースを削除した後の $string-var を返します。

XQuery への準拠

これは標準の W3C XQuery 関数ではありません。

先頭のスペースを削除する例

trim-left(" abc ") を呼び出すと、次のクエリ例に示すように、文字列 "abc " が返されます。

<result>{bea-xf:trim-left(" abc ")}</result>

上のクエリからは、次の XML の結果が生成されます。

<result>abc </result>

エラー - null の例

trim-left(()) を呼び出すとエラーが出力されます。文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

たとえば、次のクエリ例の場合、

<result>{bea-xf:trim-left(())}</result>

次のエラーが出力されます。

XQuery を実行中にエラーが発生しました : このメソッドに XQuery または XSLT をロードしている際にエラーが発生しました。Type error in function trim-left invocation: 予期される型 [string@http://www.w3.org/2001/XMLSchema]、given type empty

 


bea-xf: trim-right

$string-var から末尾のホワイト スペースを削除します。

$string-var の値が空のシーケンスである場合、マッパーには次のエラーが表示されます。

XQuery を実行中にエラーが発生しました : このメソッドに XQuery または XSLT をロードしている際にエラーが発生しました。Type error in function trim-right invocation: 予期される型 [string@http://www.w3.org/2001/XMLSchema]、given type empty

空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

bea-xf: trim-right(xs: string $string-var) —>xs:string

表 3-4 引数
データ型
引数
説明
$string-var
ホワイト スペースを削除する文字列を表します。

戻り値

末尾のホワイト スペースを削除した後の $string-var を返します。

末尾のスペースを削除する例

trim-rightl(" abc ") を呼び出すと、次のクエリ例に示すように、文字列 " abc" が返されます。

<result>{bea-xf:trim-right(" abc ")}</result>

上のクエリからは、次の XML の結果が生成されます。

<result> abc</result>

エラー - null の例

trim-right(()) を呼び出すとエラーが出力されます。文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

たとえば、次のクエリ例の場合、

<result>{bea-xf:trim-right(())}</result>

次のエラーが出力されます。

XQuery を実行中にエラーが発生しました : このメソッドに XQuery または XSLT をロードしている際にエラーが発生しました。Type error in function trim-right invocation: 予期される型 [string@http://www.w3.org/2001/XMLSchema]、given type empty

XQuery への準拠

これは標準の W3C XQuery 関数ではありません。

 


bea-xf: trim

$string-var から先頭と末尾のホワイト スペースを削除します。

$string-var の値が空のシーケンスである場合、マッパーには次のエラーが表示されます。

XQuery を実行中にエラーが発生しました : このメソッドに XQuery または XSLT をロードしている際にエラーが発生しました。Type error in function trim invocation: 予期される型 [string@http://www.w3.org/2001/XMLSchema]、given type empty

空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

bea-xf:trim(xs: string $string-var) —> xs: string

表 3-5 引数
データ型
引数
説明
$string-var
ホワイト スペースを削除する文字列を表します。

戻り値

先頭と末尾のホワイト スペースを削除した後の $string-var を返します。

先頭と末尾のスペースを削除する例

trim(" abc ") を呼び出すと、次のクエリ例に示すように、文字列 "abc" が返されます。

<result>{bea-xf:trim(" abc ")}</result>

上のクエリからは、次の XML の結果が生成されます。

<result>abc</result>

エラー - null の例

trim(()) を呼び出すとエラーが出力されます。文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

たとえば、次のクエリ例の場合、

<result>{bea-xf:trim(())}</result>

次のエラーが出力されます。

XQuery を実行中にエラーが発生しました : このメソッドに XQuery または XSLT をロードしている際にエラーが発生しました。Type error in function trim invocation: 予期される型 [string@http://www.w3.org/2001/XMLSchema]、given type empty

XQuery への準拠

これは標準の W3C XQuery 関数ではありません。

 


xs: normalizedString

$string-var (文字列) を normalizedString データ型に変換します。変換の際に、タブ (#x9)、ライン フィード (#xA)、およびキャリッジ リターン (#xD) は、すべてスペース (#x20) で置換されます。

シグネチャ

xs:normalizedString(xs: string $string-var) —> xs: normalizedString

表 3-6 引数
データ型
引数
説明
$string-var
変換する文字列を表します。

戻り値

normalizedString データ型に変換した後の $string-var を返します。

タブを削除する例

normalizedString データ型への変換では、次のクエリ例に示すように、タブがスペースで置換されます。

<result>{xf:normalizedString( "tab1 tab2 tab3 tab4")}</result>

上のクエリからは、次の XML の結果が生成されます。

<result> tab1 tab2 tab3 tab4</result>

キャリッジ リターンを削除する例

normalizedString データ型への変換では、次のクエリ例に示すように、キャリッジ リターンがスペースで置換されます。

<result>{xf:normalizedString("

CR1

CR2

")}</result>

上のクエリからは、次の XML の結果が生成されます。

<result> CR1 CR2 </result>

関連トピック

W3C の normalizedString データ型の説明。

 


xs: token

$string-var (文字列) を token データ型に変換します。

変換は次の順序で行われます。

タブ (#x9)、ライン フィード (#xA)、およびキャリッジ リターン (#xD) は、すべてスペース (#x20) で置換されます。

連続するスペース (#x20) のシーケンスは、1 つのスペース (#x20) に縮小されます。

先頭および末尾のスペース (#x20) は削除されます。

シグネチャ

xs:token(xs: string $string-var) —> xs: token

表 3-7 引数
データ型
引数
説明
$string-var
変換する文字列を表します。

戻り値

token データ型に変換した後の $string-var を返します。

タブを削除する例

token データ型へ変換する際に、次のクエリ例に示すように、タブがスペースに置換され、次に先頭と末尾のスペースがすべて削除されます。

<result>{xf:token( "tab1 tab2 tab3 tab4")}</result>

上のクエリからは、次の XML の結果が生成されます。

<result>tab1 tab2 tab3 tab4</result>

注意 : 文字列 tab1 の前にあるタブはスペースに置換された後で削除されます (変換の際に先頭と末尾のスペースはすべて削除されます)。
キャリッジ リターンを削除する例

token データ型へ変換する際に、次のクエリ例に示すように、キャリッジ リターンがスペースに置換され、次に先頭と末尾のスペースがすべて削除されます。

<result>{xf:token("

CR1

CR2

")}</result>

上のクエリからは、次の XML の結果が生成されます。

<result>CR1 CR2</result>

注意 : 文字列 CR1 の前、および CR2 の後にあるキャリッジ リターンは、スペースに置換された後で削除されます (変換の際に先頭と末尾のスペースはすべて削除されます)。
スペースを縮小する例

token データ型に変換する際に、次のクエリ例に示すように、連続するスペース (#x20) は 1 つのスペース (#x20) に縮小され、文字列の先頭と末尾のスペース (#x20) は削除されます。

<result>{xf:token(" x y z ")}</result>

上のクエリからは、次の XML の結果が生成されます。

<result>x y z</result>

関連トピック

W3C の token データ型の説明。

 


xf: compare

$string-var1 $string-var2 の値を比較します。

シグネチャ

xf:compare(xs: string? $string-var1, xs: string?$string-var2) —> xs:integer?

表 3-8 引数
データ型
引数
説明
$string-var1
比較する 1 番目の文字列を表します。
$string-var2
比較する 2 番目の文字列を表します。

戻り値

$string-var1 の値が $string-var2 の値よりも小さい場合は -1、等しい場合は 0、大きい場合は 1 を返します。

小さい場合 (-1)

compare('abc', 'abcde') を呼び出すと、次のクエリ例に示すように、$string-var1 が $string-var2 よりも小さいため、整数 -1 が返されます。

<result>{xf:compare('abc', 'abcde')}</result>

上のクエリからは、次の XML の結果が生成されます。

<result>-1</result>

等しい場合 (0)

compare('abc', 'abc') を呼び出すと、次のクエリ例に示すように、2 つの文字列が等しいため、整数 0 が返されます。

<result>{xf:compare('abc', 'abc')}</result>

上のクエリからは、次の XML の結果が生成されます。

<result>0</result>

大きい場合 (+1)

compare('abcde', 'abc') を呼び出すと、次のクエリ例に示すように、$string-var1$string-var2 よりも大きいため、整数 1 が返されます。

<result>{xf:compare('abcde', 'abc')}</result>

上のクエリからは、次の XML の結果が生成されます。

<result>1</result>

関連トピック

W3C の compare 関数の説明。

 


xf: starts-with

$string-var1$string-var2 で指定された文字列で始まるかどうかを判別します。

シグネチャ

xf:starts-with(xs: string? $string-var1, xs: string? $string-var2) —> xs: boolean?

表 3-9 引数
データ型
引数
説明
$string-var1
比較する文字列を表します。
$string-var2
この文字列と $string-var1 とを比較して、$string-var1 がこの文字列で開始されているかどうかを調べます。

戻り値

$string-var1$string-var2 に等しい文字列で開始される場合は、ブール値 true が返されます。

$string-var1$string-var2 に等しい文字列で開始されない場合は、ブール値 false が返されます。

$string-var2 が長さゼロの文字列 ("") である場合は、ブール値 true が返されます。

$string-var1 が長さゼロの文字列 ("") で、$string-var2 が長さゼロの文字列でない場合は、ブール値 false が返されます。

$string-var1 または $string-var2 の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

表 3-10 例
クエリ
生成される結果
<r>{xf:starts-with("honeymoon", "honey")}</r>
<r>true</r>
<r>{xf:starts-with("honeymoon", "moon")}</r>
<r>false</r>
<r>{xf:starts-with("honeymoon", "hat")}</r>
<r>false</r>
<r>{xf:starts-with("honeymoon", "")}</r>
<r>true</r>
<r>{xf:starts-with("", "moon")}</r>
<r>false</r>
<r>{xf:starts-with("moon", ())}</r>
<r/>

関連トピック

W3C の starts-with 関数の説明。

 


xf: ends-with

$string-var1$string-var2 で指定された文字列で終わるかどうかを判別します。

シグネチャ

xf: ends-with(xs: string?$string-var1,xs: string? $string-var2) —> xs: boolean?

表 3-11 引数
データ型
引数
説明
$string-var1
比較する文字列を表します。
$string-var2
この文字列と $string-var1 を比較して、$string-var1 がこの文字列で終わるかどうかを調べます。

戻り値

$string-var1$string-var2 に等しい文字列で終わる場合は、ブール値 true が返されます。

$string-var1$string-var2 に等しい文字列で終わらない場合は、ブール値 false が返されます。

$string-var2 が長さゼロの文字列 ("") である場合は、ブール値 true が返されます。

$string-var1 が長さゼロの文字列 ("") で、$string-var2 が長さゼロの文字列でない場合は、ブール値 false が返されます。

$string-var1 または $string-var2 の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

表 3-12 例
クエリ
生成される結果
<r>{xf:ends-with("honeymoon", "moon")}</r>
<r>true</r>
<r>{xf:ends-with("honeymoon", "honey")}</r>
<r>false</r>
<r>{xf:ends-with("honeymoon", "hat")}</r>
<r>false</r>
<r>{xf:ends-with("honeymoon", "")}</r>
<r>true</r>
<r>{xf:ends-with("", "moon")}</r>
<r>false</r>
<r>{xf:ends-with("moon", ())}</r>
<r/>

関連トピック

W3C の ends-with 関数の説明。

 


xf: contains

$string-var1$string-var2 で指定された文字列が含まれているかどうかを判別します。

$string-var1 または $string-var2 の値が空のシーケンスである場合、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

xf:contains(xs: string?$string-var1, xs: string?$string-var2) —>xs: boolean?

表 3-13 引数
データ型
引数
説明
$string-var1
比較する文字列を表します。
$string-var2
この文字列を $string-var1 と比較して、この文字列が $string-var1 に含まれているかどうかを調べます。

戻り値

$string-var1$string-var2 が含まれている場合は、ブール値 true が返されます。

$string-var1$string-var2 が含まれていない場合は、ブール値 false が返されます。

$string-var2 が長さゼロの文字列 ("") である場合は、ブール値 true が返されます。

$string-var1 が長さゼロの文字列 ("") で、$string-var2 が長さゼロの文字列でない場合は、ブール値 false が返されます。

表 3-14 例
クエリ
生成される結果
<r>{xf:contains("supercalifragilistic", "fragil")}</r>
<r>true</r>
<r>{xf:contains("supercalifragilistic", "honey")}</r>
<r>false</r>
<r>{xf:contains("supercalifragilistic", "")}</r>
<r>true</r>
<r>{xf:contains("", "honey")}</r>
<r>false</r>
<r>{xf:contains("honey", ())}</r>
<r/>

関連トピック

W3C の contains 関数の説明。

 


xf: substring

特定のインデックス位置で $string-var のサブ文字列を取得します。

$decimal-var または $optional-decimal-var に正の整数が渡されない場合、エラー コード RT_ILLEGAL_INDEX で TransformException 例外が発生します。マッパーには、次のエラー メッセージが表示されます。

XQuery を実行中にエラーが発生しました : インデックス "-1" が範囲外です (0, 5)。

$decimal-var で渡された整数が $string-var の長さよりも大きい場合、エラー コード RT_ILLEGAL_INDEX で TransformException 例外が発生します。マッパーには、次のエラー メッセージが表示されます。

XQuery を実行中にエラーが発生しました : インデックス "6" が範囲外です (0, 5)。

X は範囲外のインデックス、Y は開始位置のインデックス、Z は終了位置のインデックスを表します。たとえば「インデックス "6" が範囲外です (0, 5)」のようになります。

エラー コードの使用方法の詳細については、「プログラム的に TransformException エラー コードを取得する」を参照してください。

シグネチャ

xf:substring(xs: string? $string-var, xs: decimal xs: $decimal-var) —> xs: string?

xf:substring(xs: string?$string-var, xs: decimal?$decimal-var,xs: decimal ?$decimal-var) —> xs: string?

表 3-15 引数 
データ型
引数
説明
$string-var
ソース文字列を表します。
$decimal-var
返すサブ文字列の抽出を開始する位置を表します。

注意 : 文字列の最初の文字を指定するには、0 ではなく 1 を使用します。

$optional-decimal-var
(省略可能) 抽出される文字列の長さを表します。

戻り値
substring($string-var, $decimal-var) の場合

$decimal-var で指定した開始位置からソース文字列 $string-var の一部を返します。

2 つの引数のどちらかの値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

substring($string-var, $decimal-var, $optional-decimal-var) の場合

ソース文字列 $string-var$decimal-var で指定した開始位置から、$optional-decimal-var で指定した文字数分の文字列が返されます。

3 つの引数のいずれかの値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

開始位置のみを指定する例

substring("supercalifragilistic", 15) を呼び出すと、次のクエリ例に示すように、文字列 listic が返されます。

<result>{xf:substring("supercalifragilistic", 15)}</result>

次の結果が生成されます。

<result>listic</result>

開始位置と長さを指定する例

substring("supercalifragilistic", 1, 5) を呼び出すと、次のクエリ例に示すように、文字列 super が返されます。

<result>{xf:substring("supercalifragilistic", 1, 5)}</result>

次の結果が生成されます。

<result>super</result>

注意 : 文字列の最初の文字を指定するには、0 ではなく 1 を使用します。
文字列の途中からの例

substring("supercalifragilistic", 6, 4) を呼び出すと、次のクエリ例に示すように、文字列 cali が返されます。

<result>{xf:substring("supercalifragilistic", 6, 4)}</result>

次の結果が生成されます。

<result>cali</result>

null が渡される例

substring((), 1) を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。

<result>{xf:substring((), 1)}</result>

注意 : 文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

次の結果が生成されます。

<result/>

エラー - 範囲外の例

substring("super", 6) を呼び出すと、指定されたインデックス (6) は文字列 super よりも長いため、エラーが出力されます。

たとえば、次のクエリ例の場合、

<result>{xf:substring("super", 6)}</result>

次のようなエラーが生成されます。

XQuery を実行中にエラーが発生しました : インデックス "6" が範囲外です (0, 5)。

注意 : インデックスは 0 ではなく 1 から始まるため、インデックス 6 は文字列 super の最後の文字を超えることになります (文字列 super の文字 r のインデックスは 5 です)。
関連トピック

W3C の substring 関数の説明。

 


xf: string-length

$string-var の長さを数えます。

$string-var の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

xf:string-length(xf: string?$string-var) —> xf: integer?

表 3-16 引数
データ型
引数
説明
xs:string?
$string-var
長さを数える文字列を表します。

戻り値

$string-var の長さに等しい整数が返されます。

単純な例

string-length("moo cow") を呼び出すと、次のクエリ例に示すように、整数 7 が返されます。

<result>{xf:string-length("moo cow")}</result>

次の結果が生成されます。

<result>7</result>

null が渡される例

string-length(()) を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。

<result>{xf:string-length(())}</result>

注意 : 文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

次の結果が生成されます。

<result/>

関連トピック

W3C の string-length 関数の説明。

 


xf: substring-before

$string-var1 の中で $string-var2 より前にあるサブ文字列を検索します。

シグネチャ

xf:substring-before(xs: string ? $string-var1, xs:string? $string-var2) —> xs:string?

表 3-17 引数
データ型
引数
説明
xs:string?
$string-var1
ソース文字列を表します。
xs:string?
$string-var2
比較する文字列を表します。

戻り値

ソース文字列 $string-var1 の中で $string-var2 よりも前の部分が返されます。

$string-var2 が長さゼロの文字列 ("") である場合は、$string-var1 の値が返されます。

$string-var1$string-var2 が含まれていない場合は、長さゼロの文字列 ("") が返されます。

$string-var1 または $string-var2 の値が空のシーケンスである場合、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

表 3-18 例
クエリ
生成される結果
<r>{xf:substring-before("super", "p")}</r>
<r>su</r>
<r>{xf:substring-before("super", "")}</r>
<r>super</r>
<r>{xf:substring-before("super", "z")}</r>
<r/>
<r>{xf:substring-before("super", ())}</r>
<r/>

関連トピック

W3C の substring-before 関数の説明。

 


xf: substring-after

$string-var1 の中で $string-var2 より後にあるサブ文字列を検索します。

シグネチャ

xf:substring-after(xs: string? $string-var1, xs:string?$string-var2)—> xs:string?

表 3-19 引数
データ型
引数
説明
xs:string?
$string-var1
ソース文字列を表します。
xs:string?
$string-var2
比較する文字列を表します。

戻り値

ソース文字列 $string-var1 の中で $string-var2 よりも後ろにある部分が返されます。

$string-var2 が長さゼロの文字列 ("") である場合は、$string-var1 の値が返されます。

$string-var1$string-var2 が含まれていない場合は、長さゼロの文字列 ("") が返されます。

$string-var1 または $string-var2 の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

表 3-20 例
クエリ
生成される結果
<r>{xf:substring-after("super", "p")}</r>
<r>er</r>
<r>{xf:substring-after("super", "")}</r>
<r>super</r>
<r>{xf:substring-after("super", "z")}</r>
<r/>
<r>{xf:substring-after("super", ())}</r>
<r/>

関連トピック

W3C の substring-after 関数の説明。

 


xf: normalize-space

$string-var の先頭と末尾にあるホワイト スペースを削除し、重複するホワイト スペースを 1 つのスペースで置換します。

削除処理は次の順序で行われます。

  1. タブ (#x9)、ライン フィード (#xA)、およびキャリッジ リターン (#xD) は、すべてスペース (#x20) で置換されます。
  2. 連続するスペース (#x20) のシーケンスは、1 つのスペース (#x20) に縮小されます。
  3. 先頭および末尾のスペース (#x20) は削除されます。

$string-var の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

xf:normalize-space(xs: string?$string-var) —> xs:string?

表 3-21 引数
データ型
引数
説明
xs:string?
$string-var
変換する文字列を表します。

戻り値

上で述べたようなホワイト スペースの削除処理を実行後の $string-var が返されます。

スペースを縮小する例

変換処理では、次のクエリ例に示すように、連続するスペース (#x20) のシーケンスは 1 つのスペース (#x20) に縮小され、先頭と末尾のスペース (#x20) は削除されます。

<result>{xf:normalize-space(" x y z ")}</result>

上のクエリからは、次の XML の結果が生成されます。

<result>x y z</result>

null が渡される例

normalize-space(()) を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。

<result>{xf:normalize-space(())}</result>

注意 : 文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

次の結果が生成されます。

<result/>

関連トピック

W3C の normalize-space 関数の説明。

 


xf: upper-case

$string-var のすべての小文字を大文字に変換します。

$string-var の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

xf:upper-case(xs: string? $string-var) —> xs:string?

表 3-22 引数
データ型
引数
説明
xs:string?
$string-var
変換する文字列を表します。

戻り値

ソース文字列 $string-var を大文字に変換した文字列が返されます。

単純な例

upper-case("cat") を呼び出すと、次のクエリ例に示すように、文字列 CAT が返されます。

<result>{xf:upper-case("cat")}</result>

次の結果が生成されます。

<result>CAT</result>

null が渡される例

upper-case(()) を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。

<result>{xf:upper-case(())}</result>

注意 : 文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

次の結果が生成されます。

<result/>

関連トピック

W3C の upper-case 関数の説明。

 


xf: lower-case

$string-var (文字列) のすべての大文字を小文字に変換します。

$string-var の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

xf:lower-case(xs: string? $string-var) —>xs:string?

表 3-23 引数
データ型
引数
説明
xs:string?
$string-var
変換する文字列を表します。

戻り値

ソース文字列 $string-var を小文字に変換した文字列が返されます。

単純な例

lower-case("CAT") を呼び出すと、次のクエリ例に示すように、文字列 cat が返されます。

<result>{xf:lower-case("CAT")}</result>

次の結果が生成されます。

<result>cat</result>

null が渡される例

lower-case(()) を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。

<result>{xf:lower-case(())}</result>

注意 : 文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

次の結果が生成されます。

<result/>

関連トピック

W3C の lower-case 関数の説明。

 


xf: translate

$string-var1 に含まれる $string-var2 をすべて $string-var3 で置換します。

$string-var1$string-var2、または $string-var3 の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

xf:translate(xs: string? $string-var1, xs:string?$string-var2, xs:string?$string-var3) —> xs:string

表 3-24 引数
データ型
引数
説明
xs:string?
$string-var1
ソース文字列を表します。
xs:string?
$string-var2
検索文字列を表します。
xs:string?
$string-var3
置換文字列を表します。

戻り値

$string-var1 に含まれる $string-var2 をすべて $string-var3 で置換した後の $string-var1 の値が返されます。$string-var2 (検索文字列) の長さが $string-var3 (置換文字列) の長さよりも短い場合は、N 文字のみが置換されます。ここで、N は $string-var2 の長さです (下の 3 番目の例を参照してください)。

$string-var2 が長さゼロの文字列 ("") である場合は、$string-var1 の値が返されます。

単純な例

translate("fghXfgh", "fgh", "yz") を呼び出すと、次のクエリ例に示すように、文字列 xyXyz が返されます。

<result>{xf:translate("fghXfgh", "fgh", "yz")}</result>

次の結果が生成されます。

<result>yzXyz</result>

置換文字列がソース文字列よりも長い例

translate("abcdabc", "ab", "ABC") を呼び出すと、次のクエリ例に示すように、文字列 ABcdABc が返されます。

<result>{xf:translate("abcdabc", "ab", "ABC")}</result>

次の結果が生成されます。

<result>ABcdABc</result>

注意 : ab (検索文字列) の長さが ABC (置換文字列) の長さよりも短いため、置換文字列 ABC の最初の 2 文字 (AB) のみが代入されます。検索文字列の長さが置換文字列の長さより短い場合、置換される文字数は検索文字列の長さによって決まります。
置換文字列が空である例

translate("abcdabc", "abc", "") を呼び出すと、置換文字列が長さゼロの文字列であるため、次のクエリ例に示すように、文字列 d が返されます。

<result>{xf:translate("abcdabc", "abc", "")}</result>

次の結果が生成されます。

<result>d</result>

検索文字列が空である例

translate("abcdabc", "", "AB") を呼び出すと、検索文字列が長さゼロの文字列であるため、次のクエリ例に示すように、文字列 abcdabc が返されます。

<result>{xf:translate("abcdabc", "", "AB")}</result>

次の結果が生成されます。

<result>abcdabc</result>

null が渡される例

translate((), "ab", "ABC") が呼び出されると、次のクエリ例に示すように、null 文字列が返されます。

<result>{xf:translate((), "ab", "ABC")}</result>

注意 : 文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

次の結果が生成されます。

<result/>

関連トピック

W3C の translate 関数の説明。

 


xf: string-pad

$string-var$decimal-var の数だけ連結した文字列を返します。

シグネチャ

xf:string-pad(xs: string? $string-var, xs: decimal? $decimal-var) —> xs:string?

表 3-25 引数
データ型
引数
説明
xs:string?
$string-var
複製する文字列を表します。
xs:decimal?
$decimal-var
$string-var を複製する回数を表します。

戻り値

$string-var$decimal-var の数だけ連結した文字列が返されます。

$string-var2 が長さゼロの文字列 ("") である場合は、$string-var1 の値が返されます。

$decimal-var が 0 に等しい場合は、長さゼロの文字列 ("") が返されます。

$string-var または$decimal-var の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

表 3-26 例
クエリ
生成される結果
<r>{xf:string-pad("cat", 2)}</r>
<r>catcat</r>
<r>{xf:string-pad("super", 0)}</r>
<r/>
<r>{xf:string-pad("super", ())}</r>
<r/>

関連トピック

W3C の string-pad 関数の説明。

 


xf: matches

$string-var1$string-var2 の正規表現に対して比較します。

$string-var3 (フラグ文字列) に m または i 以外の文字を指定すると、エラー コード RT_REGEXP_FLAGS で TransformException 例外が発生します。マッパーには、次のエラーが表示されます。

XQuery を実行中にエラーが発生しました : 正規表現の構文が無効です (フラグ : "a")。

$string-var1、$string-var2、または $string-var3 の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

アンカーのない $string-var2 (正規表現文字列) が、$string-var1 (ソース文字列) 内に見つかった場合、正規表現は一致したと見なされ、ブール値 true が返されます (詳細については、以下の「文字列が一致する例」を参照してください)。ただし、アンカー (^ $) が $string-var2 (正規表現文字列) 内で使用されている場合は、文字列 (文字列モードの場合) または行 (複数行モードの場合) の先頭または末尾がアンカーと一致する必要があります (詳細については、以下の「開始アンカーが一致する例」と「開始アンカーが一致しない例」を参照してください)。

シグネチャ

xf:matches(xs: string? $string-var1, xs:string? $string-var2) —>xs: boolean?

xf:matches(xs:string? $string-var1, xs:string? $string-var2, xs:string? $string-var3) —>xs: boolean?

表 3-27 引数
データ型
引数
説明
xs:string?
$string-var1
ソース文字列を表します。
xs:string?
$string-var2
正規表現文字列を表します。詳細については、Regular Expressions を参照してください。
xs:string?
$string-var3
正規表現の比較に影響を与えるフラグを指定します (省略可能)。
   
m
指定した場合、複数行モードでマッチングが行われます。指定されていない場合、マッチングは文字列モードで行われます。
   
i
指定した場合、マッチングは大文字と小文字を区別しないモードで行われます。デフォルトでは、マッチングは大文字と小文字を区別するモードで行われます。

戻り値

$string-var2 で指定した正規表現に $string-var1 が一致する場合は、ブール値 true が返されます。

$string-var2 で指定した正規表現に $string-var1 が一致しない場合は、ブール値 false が返されます。

正規表現が一致する例

matches("abc", "[cxy]") を呼び出すと、正規表現 [cxy] にある文字 c がソース文字列 abc で見つかるため、次のクエリ例に示すように、ブール値 true が返されます。

<result>{xf:matches("abc", "[cxy]")}</result>

次の結果が生成されます。

<result>true</result>

正規表現が一致しない例

matches("abc", "[xy]") を呼び出すと、正規表現 [xy] にある文字がソース文字列 abc で見つからないため、次のクエリ例に示すように、ブール値 false が返されます。

<result>{xf:matches("abc", "[xy]")}</result>

次の結果が生成されます。

<result>false</result>

文字列が一致する例

matches("uvwxyz", "xyz") を呼び出すと、正規表現文字列 xyz がソース文字列 uvwxyz で見つかるため、次のクエリ例に示すように、ブール値 true が返されます。

<result>{xf:matches("uvwxyz", "xyz")}</result>

次の結果が生成されます。

<result>true</result>

開始アンカーが一致する例

matches("uvwxyz", "^uv") を呼び出すと、ソース文字列 uvwxyz が uv で始まっているため、次のクエリ例に示すように、ブール値 true が返されます。

<result>{xf:matches("uvwxyz", "^uv")}</result>

次の結果が生成されます。

<result>true</result>

注意 : 正規表現 ^uv とソース文字列が一致するには、ソース文字列が文字列 uv で開始されている必要があります。
開始アンカーが一致しない例

matches("uvwxyz", "^yz") を呼び出すと、ソース文字列 uvwxyz が文字列 yz で始まっていないため、次のクエリ例に示すように、ブール値 false が返されます。

<result>{xf:matches("uvwxyz", "^yz")}</result>

次の結果が生成されます。

<result>false</result>

注意 : 正規表現 ^yz とソース文字列が一致するには、ソース文字列が文字列 yz で開始される必要があります。
終了アンカーが一致する例

matches("uvwxyz", "yz$") を呼び出すと、ソース文字列 uvwxyz が文字列 uv で終わっているため、次のクエリ例に示すように、ブール値 true が返されます。

<result>{xf:matches("uvwxyz", "yz$")}</result>

次の結果が生成されます。

<result>true</result>

注意 : 正規表現 yz$ とソース文字列が一致するには、ソース文字列が文字列 yz で終了する必要があります。
終了アンカーが一致しない例

matches("uvwxyz", "vw$") を呼び出すと、ソース文字列 uvwxyz が文字列 yz で終わっていないため、次のクエリ例に示すように、ブール値 false が返されます。

<result>{xf:matches("uvwxyz", "vw$")}</result>

次の結果が生成されます。

<result>false</result>

注意 : 正規表現 yz$ とソース文字列が一致するには、ソース文字列が文字列 yz で終了する必要があります。
大文字と小文字を区別しないモードの例

matches("aBc", "abc", "i") を呼び出すと、文字列の大文字と小文字の区別を無視した場合、ソース文字列 aBc は文字列 abc を含んでいるため、次のクエリ例に示すように、ブール値 true が返されます。

<result>{xf:matches("aBc", "abc", "i")}</result>

次の結果が生成されます。

<result>true</result>

null が渡される例

matches("abc", ()) を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。

<result>{xf:matches("abc", ())}</result>

注意 : 文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

次の結果が生成されます。

<result/>

関連トピック

W3C の matches 関数の説明。

W3C の Regular Expressions の説明。

 


xf: replace

$string-var1 に含まれる、$string-var2 で指定された正規表現に一致する部分をすべて $string-var3 で置換します。

$string-var4 (フラグ文字列) に m または i 以外の文字を指定すると、エラー コード RT_REGEXP_FLAGS で TransformException 例外が発生します。マッパーには、次のエラー メッセージが表示されます。

XQuery を実行中にエラーが発生しました : 正規表現の構文が無効です (フラグ : "a")。

$string-var1、$string-var2$string-var3、または $string-var4 の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

シグネチャ

xf:replace(xs: string? $string-var1, xs:string?$string-var2 xs:string?$string-var3) —> xs:string

xfreplace(xs:string $string-var1, xs:string $string-var2, xs:string $string-var3, xs:string? $string-var4) —> xs:string

表 3-28 引数
データ型
引数
説明
xs:string?
$string-var1
ソース文字列を表します。
xs:string?
$string-var2
正規表現文字列を表します。詳細については、Regular Expressions を参照してください。
xs:string?
$string-var3
置換文字列を表します。
xs:string?
$string-var4
正規表現の比較に影響を与えるフラグを指定します (省略可能)
   
m
指定した場合、マッチングは複数行モードで行われます。デフォルトでは、マッチングは文字列モードで行われます。
   
i
指定した場合、マッチングは大文字と小文字を区別しないモードで行われます。デフォルトでは、マッチングは大文字と小文字を区別するモードで行われます。

戻り値

置換を実行した後の文字列が返されます ($string-var1 に含まれる、$string-var2 で指定された正規表現に一致する部分が、すべて $string-var3 で置換されます)。

単純な例

replace("xyzaxyz", "yz", "o") を呼び出すと、次のクエリ例に示すように、文字列 xoaxo が返されます。

<result>{xf:replace("xyzaxyz", "yz", "o")}</result>

次の結果が生成されます。

<result>xoaxo</result>

欲張りな修飾子の例

replace("xyzaxyz", "x.*z", "o") を呼び出すと、正規表現 x.*z が欲張りな修飾子として機能するため、文字列 o が返されます。最初のマッチングが実行される前にソース文字列全体が読み込まれ、ソース文字列全体での最初のマッチングが失敗した場合にのみ、ソース文字列のサイズを 1 文字減らしてマッチングが再び実行されます。この処理がソース文字列に文字がなくなるまで繰り返されます。この場合、正規表現 x.*z はソース文字列 xyzaxyz の全体に一致するため、次のクエリ例に示すように、ソース文字列全体が文字列 o で置換されます。

<result>{xf:replace("xyzaxyz", "x.*z", "o")}</result>

次の結果が生成されます。

<result>o</result>

ものぐさな修飾子の例

replace("xyzaxyz", "x.*?z", "o") を呼び出すと、正規表現 x.*?z がものぐさな修飾子として機能するため、文字列 oao が返されます。マッチングはソース文字列の先頭から開始され、一致が見つかるまで一度に 1 文字ずつ「ものぐさに」読み込まれます。一致が見つかると置換が実行され、残りのソース文字列に対して他の一致がないかどうかが検索されます。この場合、正規表現 x.*?z ではソース文字列 xyzaxyz 内に一致が 2 回見つかるため、次のクエリ例に示すように、ソース文字列内に 2 つある文字列 xyz が文字列 o で置換されます。

<result>{xf:replace("xyzaxyz", "x.*?z", "o")}</result>

次の結果が生成されます。

<result>oao</result>

置換文字列が空である例

replace("xyzaxyz", "x", "") を呼び出すと、置換文字列が長さゼロの文字列であるため、次のクエリ例に示すように、文字列 yzayz が返されます。

<result>{xf:replace("xyzaxyz", "x", "")}</result>

次の結果が生成されます。

<result>yzayz</result>

大文字と小文字を区別しないモードの例

replace("Xax", "x", "o", "i") を呼び出すと、文字列 oao が返されます。$string-var4i フラグは、マッチングにおいて大文字と小文字の区別が無視されることを指定するので、次のクエリ例に示すように、X と x に対して 2 回の置換が発生します。

<result>{xf:replace("Xax", "x", "o", "i")}</result>

次の結果が生成されます。

<result>oao</result>

null が渡される例

replace("xyz", "xyz",()) を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。

<result>{xf:replace("xyz", "xyz",())}</result>

注意 : 文字列「()」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。

次の結果が生成されます。

<result/>

関連トピック

W3C の replace 関数の説明。

W3C の Regular Expressions の説明。

 


xf: tokenize

$string-var2 で指定された正規表現の区切り記号に基づいて、$string-var1 をサブ文字列に分割します。

$string-var1$string-var2、または $string-var3 の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。

$string-var3 (フラグ文字列) に m または i 以外の文字を指定すると、エラー コード RT_REGEXP_FLAGS で TransformException 例外が発生します。マッパーには、次のエラー メッセージが表示されます。

XQuery を実行中にエラーが発生しました : 正規表現の構文が無効です (フラグ : "a")。

シグネチャ

xf:tokenize(xs: string?$string-var1, xs:string?$string-var2) —> xs:string

xf:tokenize( xs:string? $string-var1, xs:string? $string-var2 xs:string? $string-var3) —> xs:string*

表 3-29 引数
データ型
引数
説明
xs:string?
$string-var1
ソース文字列を表します。
xs:string?
$string-var2
ソース文字列の分割方法を決定する正規表現を表します。詳細については、Regular Expressions を参照してください。
xs:string?
$string-var3
正規表現の解釈方法に影響を与えるフラグを指定します (省略可能)
   
m
指定した場合、マッチングは複数行モードで行われます。デフォルトでは、マッチングは文字列モードで行われます。
   
i
指定した場合、マッチングは大文字と小文字を区別しないモードで行われます。デフォルトでは、マッチングは大文字と小文字を区別するモードで行われます。

戻り値

$string-var2 で指定したパターンに基づいて $string-var1 を分割した後の文字列が返されます。

ホワイト スペースで区切られたリストの例

tokenize("Jane fell down the hill", "\s") を呼び出すと、文字列のシーケンス ("Jane", "fell", "down", "the", "hill") が返されます。正規表現 \s は、区切り文字列がホワイト スペースであることを指定しています。そのためこの場合、次のクエリ例に示すように、ソース文字列はホワイト スペースで分割されます。

<l>{

for $tok in xf:tokenize("Jane fell down the hill", "\s")

return <i>{ $tok }</i>

}</l>

次の結果が生成されます。

<l>

<i>Jane</i>

<i>fell</i>

<i>down</i>

<i>the</i>

<i>hill</i>

</l>

カンマで区切られたリストの例

tokenize("3,20,,27,60", ",") を呼び出すと、文字列 ("3", "20","","27","60") が返されます。この場合、区切り記号はカンマであるため、次のクエリ例に示すように、ソース文字列はカンマで分割されます。

<l>{

for $tok in xf:tokenize("3,20,,27,60", ",")

return <i>{ $tok }</i>

}</l>

次の結果が生成されます。

<l>

<i>3</i>

<i>20</i>

<i></i>

<i>27</i>

<i>60</i>

</l>

カンマとホワイトスペースで区切られたリストの例

tokenize("3, 4, 27,67", ",\s") を呼び出すと、文字列 ("3", "4", "27,67") が返されます。正規表現 ,\s は、区切り文字がホワイト スペースを伴うカンマであることを指定しています。そのためこの場合、次のクエリ例に示すように、ソース文字列はホワイト スペースを伴うカンマで分割されます。

<l>{

for $tok in xf:tokenize("3, 4, 27,67", ",\s")

return <i>{ $tok }</i>

}</l>

次の結果が生成されます。

<l>

<i>3</i>

<i>4</i>

<i>27,67</i>

</l>

注意 : ソース文字列の 27 と 26 の間にはホワイト スペースがなく、カンマだけなので、数 27 と 26 はトークンとして分割されません。
大文字と小文字を区別しないモードの例

tokenize("1a2A3a4A5", "a", "i") を呼び出すと、文字列 ("1","2","3","4","5") が返されます。$string-var3 の i フラグは、マッチングにおいて大文字と小文字の区別が無視されることを指定します。そのためこの場合、次のクエリ例に示すように、ソース文字列は大文字 A と 小文字 a の両方で分割されます。

<l>{

for $tok in xf:tokenize("1a2A3a4A5", "a", "i")

return <i>{ $tok }</i>

}</l>

次の結果が生成されます。

<l>

<i>1</i>

<i>2</i>

<i>3</i>

<i>4</i>

<i>5</i>

</l>

関連トピック

W3C の tokenize 関数の説明。

W3C の Regular Expressions の説明。


  ページの先頭       前  次