2011-02-28 4 views
1

matches 함수는 문자열 (결과는 문자열 유형의 단일 항목)에 대해 작동합니다. 동일한 정규식 일치를 수행하지만 항목 (결과는 노드/항목의 순서 임)을 수행하는 XPath의 방법을 찾고 있습니까?Xpath는 againt 항목과 일치합니다.

+0

XPath 2.0 ['matches()'] (http://www.w3.org/TR/xquery-operators/# func-matches) 함수를 평가하면 잘못된 것입니다 : 평가 결과는'xs : boolean'의 인스턴스입니다. –

+0

@Alejandro 나는/foo/bar의 결과가 문자열 일 때'matches (/ foo/bar, regexp ')'를 할 수 있다고 생각했다. (또는 더 정확하게는 하나의 요소 만있는 목록) – biziclop

+0

@biziclop : 거기에 몇 가지 제한이 있습니다. 싱글 톤 시퀀스를 xs : string으로 캐스팅 할 수 없으며 오류가 발생합니다. 좋은 XSLT 프로세서도 정적 오류를 일으킬 수 있습니다. –

답변

2
//foo/bar[matches(., 'regexp')] 

본인이 찾고있는 것이거나 내가 귀하의 질문에 대한 오해입니까? 그러면 모든 노드의 문자열 값을 기반으로 노드 목록 인 //foo/bar이 필터링됩니다. (요소의 문자열 값은 그 안에있는 모든 텍스트 노드의 연결입니다.)

+0

정확히 .... 웃기는 일은 똑같은 것을 테스트했지만 성냥 (text(), '')으로했지만 도움을 주셔서 감사합니다 !! –

+1

@Matthew Young'text()'와는 약간의 차이점이 있습니다 : 그 요소의 모든 텍스트 노드 목록을 반환합니다. 그래서 만일 당신이' text1 text2'이면'matches()'는 불평 할 것입니다. – biziclop

+0

니스 .... 팁 주셔서 감사합니다! –