|
この章では、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
(xs:
string $string-var1
, xs:
string $string-var2, ...
) —> xs:
string
文字列引数のいずれかの値が空のシーケンスの場合、その引数は長さゼロの文字列 ("") として扱われます。
W3C の concat 関数の説明。
$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
先頭のホワイト スペースを削除した後の $string-var
を返します。
trim-left(" abc ")
を呼び出すと、次のクエリ例に示すように、文字列 "abc "
が返されます。
<result>{bea-xf:trim-left(" abc ")}</result>
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
$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
末尾のホワイト スペースを削除した後の $string-var
を返します。
trim-rightl(" abc ")
を呼び出すと、次のクエリ例に示すように、文字列 " abc"
が返されます。
<result>{bea-xf:trim-right(" abc ")}</result>
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
$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
先頭と末尾のホワイト スペースを削除した後の $string-var
を返します。
trim(" abc ")
を呼び出すと、次のクエリ例に示すように、文字列 "abc"
が返されます。
<result>{bea-xf:trim(" abc ")}</result>
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
$string-var
(文字列) を normalizedString データ型に変換します。変換の際に、タブ (#x9)
、ライン フィード (#xA)
、およびキャリッジ リターン (#xD)
は、すべてスペース (#x20)
で置換されます。
xs:normalizedString
(xs:
string $string-var
) —> xs:
normalizedString
normalizedString データ型に変換した後の $string-var を返します。
normalizedString データ型への変換では、次のクエリ例に示すように、タブがスペースで置換されます。
<result>{xf:normalizedString( "tab1 tab2 tab3 tab4")}</result>
<result> tab1 tab2 tab3 tab4</result>
normalizedString データ型への変換では、次のクエリ例に示すように、キャリッジ リターンがスペースで置換されます。
<result>{xf:normalizedString("
W3C の normalizedString データ型の説明。
$string-var
(文字列) を token データ型に変換します。
タブ (#x9)
、ライン フィード (#xA)
、およびキャリッジ リターン (#xD)
は、すべてスペース (#x20)
で置換されます。
連続するスペース (#x20)
のシーケンスは、1 つのスペース (#x20)
に縮小されます。
xs:token
(xs:
string $string-var
) —> xs:
token
token データ型に変換した後の $string-var
を返します。
token データ型へ変換する際に、次のクエリ例に示すように、タブがスペースに置換され、次に先頭と末尾のスペースがすべて削除されます。
<result>{xf:token( "tab1 tab2 tab3 tab4")}</result>
<result>tab1 tab2 tab3 tab4</result>
注意 : | 文字列 tab1 の前にあるタブはスペースに置換された後で削除されます (変換の際に先頭と末尾のスペースはすべて削除されます)。 |
token データ型へ変換する際に、次のクエリ例に示すように、キャリッジ リターンがスペースに置換され、次に先頭と末尾のスペースがすべて削除されます。
注意 : | 文字列 CR1 の前、および CR2 の後にあるキャリッジ リターンは、スペースに置換された後で削除されます (変換の際に先頭と末尾のスペースはすべて削除されます)。 |
token データ型に変換する際に、次のクエリ例に示すように、連続するスペース (#x20)
は 1 つのスペース (#x20)
に縮小され、文字列の先頭と末尾のスペース (#x20)
は削除されます。
<result>{xf:token(" x y z ")}</result>
W3C の token データ型の説明。
$string-var1
と $string-var2
の値を比較します。
xf:compare
(xs:
string? $string-var1
, xs:
string?$string-var2
) —> xs:integer?
$string-var1
の値が $string-var2
の値よりも小さい場合は -1
、等しい場合は 0
、大きい場合は 1
を返します。
compare('abc', 'abcde')
を呼び出すと、次のクエリ例に示すように、$string-var1 が $string-var2
よりも小さいため、整数 -1 が返されます。
<result>{xf:compare('abc', 'abcde')}</result>
compare('abc', 'abc')
を呼び出すと、次のクエリ例に示すように、2 つの文字列が等しいため、整数 0
が返されます。
<result>{xf:compare('abc', 'abc')}</result>
compare('abcde', 'abc')
を呼び出すと、次のクエリ例に示すように、$string-var1
が $string-var2
よりも大きいため、整数 1 が返されます。
<result>{xf:compare('abcde', 'abc')}</result>
W3C の compare 関数の説明。
$string-var1
が $string-var2
で指定された文字列で始まるかどうかを判別します。
xf:starts-with
(xs:
string? $string-var1
, xs:
string? $string-var2
) —> xs:
boolean?
$string-var1
が $string-var2
に等しい文字列で開始される場合は、ブール値 true が返されます。
$string-var1
が $string-var2
に等しい文字列で開始されない場合は、ブール値 false が返されます。
$string-var2
が長さゼロの文字列 ("")
である場合は、ブール値 true が返されます。
$string-var1
が長さゼロの文字列 ("")
で、$string-var2
が長さゼロの文字列でない場合は、ブール値 false が返されます。
$string-var1
または $string-var2
の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
W3C の starts-with 関数の説明。
$string-var1
が $string-var2
で指定された文字列で終わるかどうかを判別します。
xf: ends-with
(xs:
string?$string-var1
,xs:
string? $string-var2
) —> xs:
boolean?
$string-var1
が $string-var2
に等しい文字列で終わる場合は、ブール値 true が返されます。
$string-var1
が $string-var2
に等しい文字列で終わらない場合は、ブール値 false が返されます。
$string-var2
が長さゼロの文字列 ("") である場合は、ブール値 true が返されます。
$string-var1
が長さゼロの文字列 ("")
で、$string-var2 が長さゼロの文字列でない場合は、ブール値 false が返されます。
$string-var1
または $string-var2
の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
W3C の ends-with 関数の説明。
$string-var1
に $string-var2
で指定された文字列が含まれているかどうかを判別します。
$string-var1
または $string-var2
の値が空のシーケンスである場合、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()」であり、SQL の null のようなものです。
xf:contains
(xs:
string?$string-var1
, xs:
string?$string-var2
) —>xs:
boolean?
$string-var1
に $string-var2
が含まれている場合は、ブール値 true が返されます。
$string-var1
に $string-var2
が含まれていない場合は、ブール値 false が返されます。
$string-var2
が長さゼロの文字列 ("") である場合は、ブール値 true が返されます。
$string-var1
が長さゼロの文字列 ("")
で、$string-var2 が長さゼロの文字列でない場合は、ブール値 false が返されます。
W3C の contains 関数の説明。
特定のインデックス位置で $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?
$decimal-var
で指定した開始位置からソース文字列 $string-var
の一部を返します。
2 つの引数のどちらかの値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
ソース文字列 $string-var
の $decimal-var
で指定した開始位置から、$optional-decimal-var
で指定した文字数分の文字列が返されます。
3 つの引数のいずれかの値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
substring("supercalifragilistic", 15)
を呼び出すと、次のクエリ例に示すように、文字列 listic が返されます。
<result>{xf:substring("supercalifragilistic", 15)}</result>
substring("supercalifragilistic", 1, 5)
を呼び出すと、次のクエリ例に示すように、文字列 super が返されます。
<result>{xf:substring("supercalifragilistic", 1, 5)}</result>
注意 : | 文字列の最初の文字を指定するには、0 ではなく 1 を使用します。 |
substring("supercalifragilistic", 6, 4)
を呼び出すと、次のクエリ例に示すように、文字列 cali が返されます。
<result>{xf:substring("supercalifragilistic", 6, 4)}</result>
substring((), 1)
を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。
<result>{xf:substring((), 1)}</result>
注意 : | 文字列「() 」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。 |
substring("super", 6)
を呼び出すと、指定されたインデックス (6)
は文字列 super
よりも長いため、エラーが出力されます。
<result>{xf:substring("super", 6)}</result>
XQuery を実行中にエラーが発生しました : インデックス "6" が範囲外です (0, 5)。
注意 : | インデックスは 0 ではなく 1 から始まるため、インデックス 6 は文字列 super の最後の文字を超えることになります (文字列 super の文字 r のインデックスは 5 です)。 |
W3C の substring 関数の説明。
$string-var
の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
xf:string-length
(xf:
string?$string-var
) —> xf: integer?
string-length("moo cow")
を呼び出すと、次のクエリ例に示すように、整数 7 が返されます。
<result>{xf:string-length("moo cow")}</result>
string-length(())
を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。
<result>{xf:string-length(())}</result>
注意 : | 文字列「() 」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。 |
W3C の string-length 関数の説明。
$string-var1
の中で $string-var2
より前にあるサブ文字列を検索します。
xf:substring-before(xs:
string ? $string-var1, xs:string? $string-var2) —> xs:string?
ソース文字列 $string-var1
の中で $string-var2
よりも前の部分が返されます。
$string-var2
が長さゼロの文字列 ("") である場合は、$string-var1
の値が返されます。
$string-var1
に $string-var2
が含まれていない場合は、長さゼロの文字列 ("")
が返されます。
$string-var1
または $string-var2
の値が空のシーケンスである場合、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
W3C の substring-before 関数の説明。
$string-var1
の中で $string-var2
より後にあるサブ文字列を検索します。
xf:substring-after
(xs:
string? $string-var1, xs:string?$string-var2)—> xs:string?
ソース文字列 $string-var1
の中で $string-var2
よりも後ろにある部分が返されます。
$string-var2
が長さゼロの文字列 ("") である場合は、$string-var1
の値が返されます。
$string-var1
に $string-var2
が含まれていない場合は、長さゼロの文字列 ("")
が返されます。
$string-var1
または $string-var2
の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
W3C の substring-after 関数の説明。
$string-var
の先頭と末尾にあるホワイト スペースを削除し、重複するホワイト スペースを 1 つのスペースで置換します。
$string-var
の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
xf:normalize-space(
xs:
string?$string-var) —> xs:string?
上で述べたようなホワイト スペースの削除処理を実行後の $string-var
が返されます。
変換処理では、次のクエリ例に示すように、連続するスペース (#x20)
のシーケンスは 1 つのスペース (#x20)
に縮小され、先頭と末尾のスペース (#x20)
は削除されます。
<result>{xf:normalize-space(" x y z ")}</result>
normalize-space(())
を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。
<result>{xf:normalize-space(())}</result>
注意 : | 文字列「() 」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。 |
W3C の normalize-space 関数の説明。
$string-var
のすべての小文字を大文字に変換します。
$string-var
の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
xf:upper-case(
xs:
string? $string-var) —> xs:string?
ソース文字列 $string-var
を大文字に変換した文字列が返されます。
upper-case("cat")
を呼び出すと、次のクエリ例に示すように、文字列 CAT
が返されます。
<result>{xf:upper-case("cat")}</result>
upper-case(())
を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。
<result>{xf:upper-case(())}</result>
注意 : | 文字列「() 」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。 |
W3C の upper-case 関数の説明。
$string-var
(文字列) のすべての大文字を小文字に変換します。
$string-var
の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
xf:lower-case(
xs:
string? $string-var) —>xs:string?
ソース文字列 $string-var
を小文字に変換した文字列が返されます。
lower-case("CAT")
を呼び出すと、次のクエリ例に示すように、文字列 cat が返されます。
<result>{xf:lower-case("CAT")}</result>
lower-case(())
を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。
<result>{xf:lower-case(())}</result>
注意 : | 文字列「() 」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。 |
W3C の lower-case 関数の説明。
$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
$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>
translate("abcdabc", "ab", "ABC")
を呼び出すと、次のクエリ例に示すように、文字列 ABcdABc
が返されます。
<result>{xf:translate("abcdabc", "ab", "ABC")}</result>
注意 : | ab (検索文字列) の長さが ABC (置換文字列) の長さよりも短いため、置換文字列 ABC の最初の 2 文字 (AB) のみが代入されます。検索文字列の長さが置換文字列の長さより短い場合、置換される文字数は検索文字列の長さによって決まります。 |
translate("abcdabc", "abc", "")
を呼び出すと、置換文字列が長さゼロの文字列であるため、次のクエリ例に示すように、文字列 d が返されます。
<result>{xf:translate("abcdabc", "abc", "")}</result>
translate("abcdabc", "", "AB")
を呼び出すと、検索文字列が長さゼロの文字列であるため、次のクエリ例に示すように、文字列 abcdabc が返されます。
<result>{xf:translate("abcdabc", "", "AB")}</result>
translate((), "ab", "ABC")
が呼び出されると、次のクエリ例に示すように、null 文字列が返されます。
<result>{xf:translate((), "ab", "ABC")}</result>
注意 : | 文字列「() 」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。 |
W3C の translate 関数の説明。
$string-var
を $decimal-var
の数だけ連結した文字列を返します。
xf:string-pad(
xs:
string? $string-var
, xs: decimal? $decimal-var) —> xs:string?
$string-var
を $decimal-var
の数だけ連結した文字列が返されます。
$string-var2
が長さゼロの文字列 ("") である場合は、$string-var1
の値が返されます。
$decimal-var
が 0 に等しい場合は、長さゼロの文字列 ("")
が返されます。
$string-var
または$decimal-var
の値が空のシーケンスである場合は、空のシーケンスが返されます。空のシーケンスとは項目を含まないシーケンス「()
」であり、SQL の null のようなものです。
W3C の string-pad 関数の説明。
$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?
$string-var2
で指定した正規表現に $string-var1
が一致する場合は、ブール値 true が返されます。
$string-var2
で指定した正規表現に $string-var1
が一致しない場合は、ブール値 false が返されます。
matches("abc", "[cxy]")
を呼び出すと、正規表現 [cxy]
にある文字 c がソース文字列 abc で見つかるため、次のクエリ例に示すように、ブール値 true が返されます。
<result>{xf:matches("abc", "[cxy]")}</result>
matches("abc", "[xy]")
を呼び出すと、正規表現 [xy]
にある文字がソース文字列 abc で見つからないため、次のクエリ例に示すように、ブール値 false が返されます。
<result>{xf:matches("abc", "[xy]")}</result>
matches("uvwxyz", "xyz")
を呼び出すと、正規表現文字列 xyz がソース文字列 uvwxyz で見つかるため、次のクエリ例に示すように、ブール値 true が返されます。
<result>{xf:matches("uvwxyz", "xyz")}</result>
matches("uvwxyz", "^uv")
を呼び出すと、ソース文字列 uvwxyz が uv
で始まっているため、次のクエリ例に示すように、ブール値 true が返されます。
<result>{xf:matches("uvwxyz", "^uv")}</result>
注意 : | 正規表現 ^uv とソース文字列が一致するには、ソース文字列が文字列 uv で開始されている必要があります。 |
matches("uvwxyz", "^yz")
を呼び出すと、ソース文字列 uvwxyz
が文字列 yz
で始まっていないため、次のクエリ例に示すように、ブール値 false が返されます。
<result>{xf:matches("uvwxyz", "^yz")}</result>
注意 : | 正規表現 ^yz とソース文字列が一致するには、ソース文字列が文字列 yz で開始される必要があります。 |
matches("uvwxyz", "yz$")
を呼び出すと、ソース文字列 uvwxyz
が文字列 uv
で終わっているため、次のクエリ例に示すように、ブール値 true が返されます。
<result>{xf:matches("uvwxyz", "yz$")}</result>
注意 : | 正規表現 yz$ とソース文字列が一致するには、ソース文字列が文字列 yz で終了する必要があります。 |
matches("uvwxyz", "vw$")
を呼び出すと、ソース文字列 uvwxyz
が文字列 yz
で終わっていないため、次のクエリ例に示すように、ブール値 false が返されます。
<result>{xf:matches("uvwxyz", "vw$")}</result>
注意 : | 正規表現 yz$ とソース文字列が一致するには、ソース文字列が文字列 yz で終了する必要があります。 |
matches("aBc", "abc", "i")
を呼び出すと、文字列の大文字と小文字の区別を無視した場合、ソース文字列 aBc は文字列 abc
を含んでいるため、次のクエリ例に示すように、ブール値 true が返されます。
<result>{xf:matches("aBc", "abc", "i")}</result>
matches("abc", ())
を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。
<result>{xf:matches("abc", ())}</result>
注意 : | 文字列「() 」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。 |
W3C の matches 関数の説明。
W3C の Regular Expressions の説明。
$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
置換を実行した後の文字列が返されます ($string-var1
に含まれる、$string-var2
で指定された正規表現に一致する部分が、すべて $string-var3
で置換されます)。
replace("xyzaxyz", "yz", "o")
を呼び出すと、次のクエリ例に示すように、文字列 xoaxo
が返されます。
<result>{xf:replace("xyzaxyz", "yz", "o")}</result>
replace("xyzaxyz", "x.*z", "o")
を呼び出すと、正規表現 x.*z
が欲張りな修飾子として機能するため、文字列 o
が返されます。最初のマッチングが実行される前にソース文字列全体が読み込まれ、ソース文字列全体での最初のマッチングが失敗した場合にのみ、ソース文字列のサイズを 1 文字減らしてマッチングが再び実行されます。この処理がソース文字列に文字がなくなるまで繰り返されます。この場合、正規表現 x.*z
はソース文字列 xyzaxyz
の全体に一致するため、次のクエリ例に示すように、ソース文字列全体が文字列 o
で置換されます。
<result>{xf:replace("xyzaxyz", "x.*z", "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>
replace("xyzaxyz", "x", "")
を呼び出すと、置換文字列が長さゼロの文字列であるため、次のクエリ例に示すように、文字列 yzayz
が返されます。
<result>{xf:replace("xyzaxyz", "x", "")}</result>
replace("Xax", "x", "o", "i")
を呼び出すと、文字列 oao が返されます。$string-var4
の i
フラグは、マッチングにおいて大文字と小文字の区別が無視されることを指定するので、次のクエリ例に示すように、X と x に対して 2 回の置換が発生します。
<result>{xf:replace("Xax", "x", "o", "i")}</result>
replace("xyz", "xyz",())
を呼び出すと、次のクエリ例に示すように、null 文字列が返されます。
<result>{xf:replace("xyz", "xyz",())}</result>
注意 : | 文字列「() 」は (SQL の null と同様の) 空のシーケンスであり、項目を含まないシーケンスです。 |
W3C の replace 関数の説明。
W3C の Regular Expressions の説明。
$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*
$string-var2
で指定したパターンに基づいて $string-var1
を分割した後の文字列が返されます。
tokenize("Jane fell down the hill", "\s")
を呼び出すと、文字列のシーケンス ("Jane", "fell", "down", "the", "hill")
が返されます。正規表現 \s
は、区切り文字列がホワイト スペースであることを指定しています。そのためこの場合、次のクエリ例に示すように、ソース文字列はホワイト スペースで分割されます。
for $tok in xf:tokenize("Jane fell down the hill", "\s")
tokenize("3,20,,27,60", ",")
を呼び出すと、文字列 ("3", "20","","27","60")
が返されます。この場合、区切り記号はカンマであるため、次のクエリ例に示すように、ソース文字列はカンマで分割されます。
for $tok in xf:tokenize("3,20,,27,60", ",")
tokenize("3, 4, 27,67", ",\s")
を呼び出すと、文字列 ("3", "4", "27,67")
が返されます。正規表現 ,\s は、区切り文字がホワイト スペースを伴うカンマであることを指定しています。そのためこの場合、次のクエリ例に示すように、ソース文字列はホワイト スペースを伴うカンマで分割されます。
for $tok in xf:tokenize("3, 4, 27,67", ",\s")
注意 : | ソース文字列の 27 と 26 の間にはホワイト スペースがなく、カンマだけなので、数 27 と 26 はトークンとして分割されません。 |
tokenize("1a2A3a4A5", "a", "i")
を呼び出すと、文字列 ("1","2","3","4","5")
が返されます。$string-var3 の i フラグは、マッチングにおいて大文字と小文字の区別が無視されることを指定します。そのためこの場合、次のクエリ例に示すように、ソース文字列は大文字 A
と 小文字 a
の両方で分割されます。
for $tok in xf:tokenize("1a2A3a4A5", "a", "i")
W3C の tokenize 関数の説明。
W3C の Regular Expressions の説明。