2011-08-18 4 views
1

im은 변수 값 (반복 할 때마다 변경됨)을 기반으로 스키마에서 요소를 찾으려고합니다. catch는 요소가 스키마 내부의 아무 곳에 나있을 수 있음을 나타냅니다.변수를 사용하여 xpath 요소를 찾으십시오.

<... 
    <foo> 
    <bar> 
     <bar1>BB</bar1> 
     <bar2>CC</bar2> 
    </bar> 
    <rab> 
     <rab1>DD</rab1> 
    </rab> 
    </foo> 
/...> 

$ 속성 = BAR1 (그 다음 반복, $ 속성이 동일 할 수 rab1) 나를 찾을 수있는 내가 표현을 쓰기 얼마나

: .../foo/bar/$attribute

예를 들어

내가 찾을 수있는 가장 가까운 것은 ...//*[name()=$attribute]이지만 작동하지 않습니다. 다른 방법이 있습니까?

도움 주셔서 감사합니다.

+0

XML에 네임 스페이스 (xmlns)가 포함되어 있습니까? –

+0

"작동하지 않음"이 너무 흐립니다. 오류가 발생합니까? 반환해야하는 노드가있을 때 노드를 반환하지 않습니까? – LarsH

답변

2

문제는 중요 할 수 많은 세부 사항을 나뭇잎 있지만, 당신은 name()local-name()에 변경을 시도 할 수 :

...//*[local-name()='bar1'] 

을하고 문제가 해결되는지 확인합니다. name()의 리턴 값에는 요소 이름에있는 모든 접두어가 포함되어 있으므로 $attribute의 값과 일치하지 않을 수 있습니다. (@Kirill은 이것을 암시하고있었습니다.)

그래도 문제가 해결되지 않으면 더 많은 내용을 제공하십시오. 전체 XPath 표현식이란 무엇입니까? XSLT에서 어떻게 사용되고 있습니까? "작동하지 않는다"는 것을 어떻게 알 수 있습니까? (예상 결과 및 실제 결과 제공)

+2

모든 도움에 감사드립니다. 내가 언제'$ * [local-name() = string ($ attribute)]' 일했는지 – David

+0

@David :'$ attribute' 변수에 문자열 이외의 것이 포함되어 있는지 궁금합니다. 나는 그것이 차이를 만들 것이라고 생각하지 않지만 예기치 않은 행동이 일어나고 있는지를 모른 채 말하기는 어렵습니다. – LarsH

+1

@David 문제를 해결 한 이후로이 대답을 "수락"할 수 있습니다. – LarsH

관련 문제