2011-10-19 2 views
5

안녕하세요 다음 xpath가 작동하지 않는 것 같습니다.합계 문자열 - 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

string-length() 호출을 제공하려고 시도했지만 실패한 함수는 sum()입니다. sum()이 여기서는 적절한 함수로 보이지 않습니다.

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

또는 먼저, 다음 길이를 얻을 연결할 사용할 수 있습니다 :

당신은 어느 단지 술어에 직접 길이를 추가 할 수 있습니다

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

또는, 당신의 조각은 대표적인 경우 모든 FullName 요소에 대해 문맥 노드의 모든 텍스트 노드 내용의 길이를 다음과 같이 고려하십시오.

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

마지막 제안에만 작동 '또한 공백을 포함 달리 길이. –

+0

정보 주셔서 감사합니다! 감사합니다 – james31rock

2

이름의 수가 다를 수있는 경우 (예 : Middle Initil, orefix, suffix, etc ...), 일반적으로 단일 XPath 1.0 표현식으로 원하는 합계를 얻을 수 없습니다.

는 XPath는 2.0이있다 : 스타일 시트 '를 지정하는 경우

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