簡體   English   中英

使用 Xpath 對兩個不同節點的字符串長度求和 - 對兩個節點的字符串長度求和

[英]Sum String-Length of two different nodes with Xpath - Sum two nodes string-length

以下 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]

任何幫助,將不勝感激。

sum()函數需要一個 node-set ,您嘗試通過string-length()調用提供它,但失敗了。 sum()在這里似乎不是合適的函數。

您可以直接在謂詞中添加長度:

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

或者您可以先使用連接,然后獲取長度:

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

或者,如果您的代碼段代表所有FullName元素,只需考慮上下文節點的所有文本節點內容的長度,如下所示:

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

如果名稱的數量可能會有所不同(例如 Middle Initil、orefix、suffix 等...),通常無法使用單個 XPath 1.0 表達式獲得所需的總和。

在 XPath 2.0 中,這是可能的

//FullName[sum(*/stringlength()) ge 30]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM