xpathを使用した2つの異なるノードの文字列長-2つのノードを合計する文字列長
-
27-10-2019 - |
質問
こんにちはみんな次のXpathは機能しないようです。
//FullName[sum(string-length(FirstName) | string-length(LastName))>= 30]
エラー:式はノードセットを評価する必要があります。
XMLスニペット
<FullName>
<FirstName>somereallylongfirstnameguy</FirstName>
<LastName>somereallylonglasttnameguyabcdefghijklmnopqrstuv</LastName>
</FullName>
合計関数が数値を追加し、文字列の長さが数値を返すことを知っています。
次の式は正常に機能します。
//FullName[string-length(FirstName) >= 1]
どんな助けも感謝します、ありがとう!
解決
sum()
関数 ノードセットが期待されます, 、あなたがあなたに提供しようとします string-length()
呼び出しますが、それは失敗します。 sum()
ここでは適切な機能ではないようです。
次のように、長さを直接加算することができます。
//FullName[string-length(FirstName)+string-length(LastName) >= 30]
または、最初に連結を使用してから、長さを取得できます。
//FullName[string-length(concat(FirstName,LastName)) >= 30]
または、スニペットがすべての人に代表される場合 FullName
要素、次のようなコンテキストノードのすべてのテキストノードの内容の長さを考慮してください。
//FullName[string-length() >= 30]
他のヒント
名前の数が異なる場合(Middle Initiil、Orefix、Suffixなど)、単一のXPath 1.0式で必要な合計を取得することはできません。
Xpath 2.0では、これが可能です:
//FullName[sum(*/stringlength()) ge 30]
所属していません StackOverflow