5

次の xpath は機能していないようです。

//FullName[sum(string-length(FirstName) | string-length(LastName))>= 30]

エラー: 式はノード セットに評価される必要があります。

XML スニペット

<FullName>
 <FirstName>somereallylongfirstnameguy</FirstName>
 <LastName>somereallylonglasttnameguyabcdefghijklmnopqrstuv</LastName>
</FullName>

sum 関数は数値を加算し、文字列の長さは数値を返すことを知っています。

次の式は正常に機能します。

//FullName[string-length(FirstName) >= 1]

どんな助けでも大歓迎です。

4

2 に答える 2

4

このsum()関数は、呼び出しで提供しようとするnode-setstring-length()を必要としますが、失敗します。sum()ここでは適切な機能ではないようです。

述語で長さを直接合計することもできます。

//FullName[string-length(FirstName)+string-length(LastName) >= 30] 

または、最初に連結を使用してから、長さを取得できます。

//FullName[string-length(concat(FirstName,LastName)) >= 30] 

または、スニペットがすべてのFullName要素を代表するものである場合は、次のように、コンテキスト ノードのすべてのテキスト ノード コンテンツの長さを考慮してください。

//FullName[string-length() >= 30] 
于 2011-10-19T21:33:17.597 に答える
2

名前の数が異なる場合 (Middle Initil、orefix、suffix など)、通常、1 つの XPath 1.0 式で必要な合計を取得することはできません。

XPath 2.0 では、これが可能です。

//FullName[sum(*/stringlength()) ge 30]
于 2011-10-20T12:50:47.630 に答える