어떤 속성 값이있는 노드를 선택하는 XPath가 다른 노드의 속성 값과 같음 [닫힘]


87
<grand id="grand">
  <parent>
    <child age="18" id="#not-grand"/>
    <child age="20" id="#grand"/> <!-- This is what I want to locate -->
  </parent>
</grand>

아무도 두 번째 아이를 찾기 위해 표현하는 방법을 말해 줄 수 있습니까?

작동하지 않습니다 ...

"/grand/parent/child[@id=concat('#',/grand/@id)]/@age"

감사합니다.


죄송 해요. 표현은 괜찮습니다. 나는 표현 자체가 아닌 다른 영역에서 몇 가지 문제가 있음을 발견했습니다.


3
귀하의 xpath는 나를 위해 잘 작동합니다.
dogbane

3
저도 마찬가지입니다. 여기에서 테스트 하고 두 번째 자식 요소를 선택합니다.
Andreas Dolk

2
맞아 ... 표정은 괜찮아. 죄송 해요. 식 (네임 스페이스 접두사)과 인스턴스 문서에서 몇 가지 실수를했습니다. 감사합니다.
Jin Kwon

답변:


95

이 XPath는 제공 한 코드 스 니펫에 고유합니다. 당신이 쓸 수있는 <child>대로 id로 선택하려면 .#grand//child[@id='#grand']

나이를 얻으려면 //child[@id='#grand']/@age

도움이 되었기를 바랍니다


1
Vaman 감사합니다. 도움이되었습니다. 먼저 평가해야 할 값 ( '#grand')이 아니라 한 번 평가할 때 표현식 ( '/ grand / @ id')을 참조했습니다.
Jin Kwon

내 XML에 이름 속성이있는 섹션 목록이 있으면 어떻게 선택해야합니까? 예 : <section name="valuation"> <capital-value> some data </capital-value> <location> some data </location> </section> <section name="subject-property"> <address>72 Gordon Avenue</address> <postcode>HA7 3QS</postcode> <bedrooms>2</bedrooms> </section>
Sanjay Sahani

30

나는 이것이 당신이 원하는 것이라고 생각합니다.

/grand/parent/child[@id="#grand"]

2
MarcoS 감사합니다. 먼저 평가해야 할 값 ( '#grand')이 아니라 한 번 평가할 때 표현식 ( '/ grand / @ id')을 참조했습니다.
Jin Kwon

2
@ jin-kwon : 그렇군요. 그래서 XPath는 괜찮습니다.
MarcoS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.