이 XML이 주어지면 XPath는 prop
속성에 포함 된 모든 요소 Foo
(처음 세 개의 노드)를 반환합니다 .
<bla>
<a prop="Foo1"/>
<a prop="Foo2"/>
<a prop="3Foo"/>
<a prop="Bar"/>
</bla>
이 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에 대한 정답을 반환하지만 "bla"요소의 "a"요소 만 얻으려면 다른 사용자도 언급했듯이
/bla/a[contains(@prop,'Foo')]
이것은 "blah"요소에 내포되어 있는지에 관계없이 전체 xml 문서에서 모든 "a"요소를 검색합니다.
//a[contains(@prop,'Foo')]
나는 철저하고 스택 오버 플로우 정신을 위해 이것을 추가했습니다. :)
xmlme.com
이제 다른 호스트로 리디렉션되고 도구 또는 이와 유사한 것을 호스팅하지 않는 것으로 보입니다.
descendant-or-self::*[contains(@prop,'Foo')]
또는:
/bla/a[contains(@prop,'Foo')]
또는:
/bla/a[position() <= 3]
해부 :
descendant-or-self::
축-아래의 모든 노드와 노드 자체를 검색합니다. //보다 이것을 말하는 것이 더 낫습니다. // 어디에서나 (루트 노드의 자손 또는 자손) 의미하는 구현이 있습니다. 다른 하나는 기본 축을 사용합니다.
* or /bla/a
태그-와일드 카드 일치 및 / bla / a는 절대 경로입니다.
[contains(@prop,'Foo')] or [position() <= 3]
[] 내의 조건입니다. attribute는 다른 검색 축이므로 @prop는 attribute :: prop의 약자입니다. 또는 position () 함수를 사용하여 처음 3 개를 선택할 수 있습니다.
링크 자체의 내용과도 일치해야하는 경우 text ()를 사용하십시오.
//a[contains(@href,"/some_link")][text()="Click here"]