2.contains(translate(。 "ABCEDF ..."、 "abcdef ...")、 "case-insentive-string")]'も失敗しました。
これを書く適切な方法は次のとおりです。
/root/book[contains(translate(., $vUpper, $vLower),
translate($vCaseInsentiveString, $vUpper, $vLower)
)
]
ここで$vUpper
、および$vLower
は文字列として定義されます(置換する必要があります)。
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
と
'abcdefghijklmnopqrstuvwxyz'
大文字と$vCaseInsentiveString
小文字を区別しない特定の文字列として定義されます(置換する必要があります)。
たとえば、次のXMLドキュメントがあるとします。
<authors>
<author>
<name>Victor Hugo & Co.</name>
<nationality>French</nationality>
</author>
<author period="classical" category="children">
<name>J.K.Rollings</name>
<nationality>British</nationality>
</author>
<author period="classical">
<name>Sophocles</name>
<nationality>Greek</nationality>
</author>
<author>
<name>Leo Tolstoy</name>
<nationality>Russian</nationality>
</author>
<author>
<name>Alexander Pushkin</name>
<nationality>Russian</nationality>
</author>
<author period="classical">
<name>Plato</name>
<nationality>Greek</nationality>
</author>
</authors>
次のXPath式(変数を対応する文字列に置き換えます):
/*/author/name
[contains(translate(., $vUpper, $vLower),
translate('lEo', $vUpper, $vLower)
)
]
この要素を選択します:
<name>Leo Tolstoy</name>
説明:関数の両方の引数がcontains()
小文字に変換されてから、比較が実行されます。