/ / xpath関数ends-with()を使用して数字を検索します - xml、xpath

xpath関数ends-with()を使って数字を見つける - xml、xpath

文字列で始まり数字で終わる要素をループして見つけたいのですが、どうすればよいかわかりません。 ends-with()

ここにこのコードがあります

*[starts-with(name(), "cup") and ends-with(name(), "_number")]

ps:アプリケーションが使用しているxpathのバージョンがわからない

回答:

回答№1は1

XPath 2.0

これはXPath 2.0では簡単なことです。

//*[matches(name(), "^cup.*d$")]

名前がで始まるすべての要素を選択します cup 要求に応じて数字で終わります。

XPath 1.0

XPath 1.0には正規表現がないので、 ends-with()と、文字列が数字かどうかをテストする機能は、XPath 1.0では要求がより複雑になります。これが一つの可能​​な解決策です:

//*[starts-with(name(), "cup")
and number(substring(name(),string-length(name())))
= number(substring(name(),string-length(name())))]

2番目の節は テストするDimitre Novatchevによる賢い方法 XPath 1.0では、文字列が数値かどうか.

これがXPath 1.0で数字で終わることを確認するためのより短い方法です:

//*[starts-with(name(), "cup")
and not(translate(substring(name(),string-length(name())), "0123456789", ""))]

回答№2の場合は1

私は信じている ends-with Xpath 1.0にはありません。少なくともXPath 2.0を使用している必要があります。 matches() 文字列と末尾の数字を照合するには、次のようにします。

matches(name(), ".*d+$")

`xpathは次のようになります。

*[starts-with(name(), "cup") and matches(name(), ".*d+$")] あるいは@kjhughesが彼の答えで述べたように:

*[matches(name(), "^cup.*d+$")]