2011-10-19 37 views
5

Xin chào các bạn Các xpath sau đây dường như không hoạt động.Tổng chiều dài chuỗi của hai nút khác nhau với Xpath - Tổng hai nút có chiều dài chuỗi

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

Lỗi: Biểu thức phải đánh giá thành bộ nút.

Đoạn mã XML

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

Tôi biết các chức năng tổng hợp cho biết thêm số với nhau, và con số lợi nhuận dài chuỗi.

biểu thức sau đây hoạt động tốt:

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

Bất kỳ trợ giúp sẽ được đánh giá, cảm ơn!

Trả lời

4

Chức năng sum()expects a node-set, mà bạn cố gắng cung cấp các cuộc gọi string-length() của mình, nhưng điều đó không thành công. sum() dường như không phải là chức năng thích hợp ở đây.

Bạn có thể chỉ cần thêm lên độ dài trực tiếp trong ngữ:

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

Hoặc bạn có thể sử dụng nối đầu tiên, sau đó nhận được chiều dài:

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

Hoặc, nếu đoạn mã của bạn là đại diện cho tất cả các phần tử FullName, chỉ cần xem xét độ dài của tất cả nội dung nút văn bản của nút ngữ cảnh như sau:

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

Các gợi ý cuối cùng chỉ hoạt động nếu stylesheet định '', nếu không thì chiều dài cũng sẽ bao gồm các khoảng trắng. –

+0

Cảm ơn thông tin! Tôi đánh giá cao nó – james31rock

2

Nếu số lượng tên có thể khác nhau (chẳng hạn như Middle Initil, orefix, hậu tố, vv ...), thường không thể nhận được số tiền mong muốn với một biểu thức XPath 1.0 đơn lẻ.

Trong XPath 2.0 này có thể:

//FullName[sum(*/stringlength()) ge 30] 
Các vấn đề liên quan