무엇이 올바른 XPath 선택에 대한 특성을 포함하는"foo"?
문제
주어진 이 XML,무엇 XPath 반환 모든 요소 누구 prop
특성 포함 Foo
(첫 번째 세 개의 노드):
<bla>
<a prop="Foo1"/>
<a prop="Foo2"/>
<a prop="3Foo"/>
<a prop="Bar"/>
</bla>
해결책
//a[contains(@prop,'Foo')]
작품을 사용하면 이 XML 결과를 얻는다.
<bla>
<a prop="Foo1">a</a>
<a prop="Foo2">b</a>
<a prop="3Foo">c</a>
<a prop="Bar">a</a>
</bla>
편집:또는 동안 XPath 위의 반환에 대한 정답은 특정 xml,을 보장하고 싶으면 당신은 단지 당신의"a"요소 요소는"즐",당신은 또한 사용
/bla/a[contains(@prop,'Foo')]
이 검색 것입니다 당신은 모두"a"요소의 전체 xml 문서에 관계없이,되고 중첩에서"ㅋ"소
//a[contains(@prop,'Foo')]
이를 위해 철저하고 정신에서 유래.:)
다른 팁
이 XPath 을 줄 것이다 당신은 모든 노드가 있는 특성을 포함하는'Foo'에 관계없이 노드 이름이나 특성을 이름:
//attribute::*[contains(., 'Foo')]/..
물론,더 관심이 있는 경우에는 내용의 특성을 자체,그리고 반드시 그 부모 노드,드롭/..
//attribute::*[contains(., 'Foo')]
descendant-or-self::*[contains(@prop,'Foo')]
또:
/bla/a[contains(@prop,'Foo')]
또:
/bla/a[position() <= 3]
해부:
descendant-or-self::
Axis-검색를 통해 모든 노드를 아래와 노드 자체.그것은 종종 더 나은 이것을 말하다//.가 발생하는 몇 가지 구현//미나(decendant 또는 자기의 루트 노드).다른 사용하여 기본다.
* or /bla/a
태그-와일드카드 경기/bla/a 은 절대적인 경로입니다.
[contains(@prop,'Foo')] or [position() <= 3]
조건에[].@소품이 속한 속성:버팀대,특성으로 또 다른 검색 axis.또는 당신이 선택할 수 있습니다 먼저 3 사용하여 위치()함수입니다.
John C 은 가장 가까운,그러나 XPath 민감한 경우에,그래서 올바른 XPath 이 될 것이다:
/bla/a[contains(@prop, 'Foo')]
당신은 시도 다음과 같습니다.
//a[포함(@prop,"Foo")]
나는 결코 사용되는 포함 기능에 의심해야 하는 광고를 작동...
또한 필요한 경우에 맞게 컨텐츠의 링크 자체,사용(텍스트):
//a[contains(@href,"/some_link")][text()="Click here"]
/bla/a[포함(@prop,"foo")]
위의 코드는...//*[포함(@소품,'foo')]
이것을 보십시오:
//a[포함(@소품,'foo')]
해야 하는 작업에 대한 모든"a"태그에서 문서