2012-02-06 3 views
8

XPath의 starts-with 함수를 값 대신 노드 이름에 적용 할 수 있습니까? 이 텍스트 노드, 예를 기반으로 검색 할 starts-with를 사용할 수 있다는특정 패턴과 일치하는 노드 이름에 대한 XPath 쿼리

<?xml version="1.0" encoding="UTF-8" ?> 
<RootNode> 
    <FOObar xmlns="http://sample.example.com"> 
     <value>numOne</value> 
    </FOObar> 
    <FOObaz xmlns="http://sample.example.com"> 
     <value>numTwo</value> 
    </FOObaz> 
    <notFOO xmlns="http://sample.example.com"> 
     <value>numThree</value> 
    </notFOO> 
</RootNode> 

내가 얻을 : 나는 notFOO 노드를 선택하지 않고 다음과 같은 XML 문서에서 FOObarFOObaz 노드를 선택합니다

//sample:value[starts-with(.,'num')] 

구문 적으로 유효한 다음을 작성하는 방법이 있습니까?

//sample:[starts-with(node(),'FOO')] 

이 질문에

는 원래 SSCCE와 함께,하지만 지금은 질문이 대답되었는지, 모든 코드는 혼란이다. 물론 revision history에서 계속 사용할 수 있습니다.

답변

22

이름으로 노드를 참조하는 name() 또는 local-name() 기능을 사용

//*[starts-with(local-name(), 'FOO')] 
+0

아, 나는 시간()''로컬 이름 같은 것을 찾고 있었어요. 그런 기능이 없다고 생각하기 시작했습니다. 미래 방문객을위한 참고 사항입니다.이 답변은 네임 스페이스와 호환됩니다 : // sample : * [starts-with (local-name(), 'FOO')] – Pops

+2

'local-name'의 W3C 사양 : http : // www .w3.org/TR/xpath/# function-local-name – Pops

관련 문제