2012-04-20 6 views
93

이름 특성이 지정된 범주와 값이 지정된 모든 자식 노드 작성자를 선택하는 데 사용할 수있는 XPath는 무엇입니까?여러 조건을 가진 XPath

내가 더 성공을 아래 경로의 다양한 변화를 시도했다 :

//quotes/category[@name='Sport' and author="James Small"] 

는 XML :

<?xml version="1.0" encoding="utf-8"?> 
<quotes> 
    <category name="Sport"> 
    <author>James Small<quote date="09/02/1985">Quote One</quote><quote    date="11/02/1925">Quote nine</quote></author> 
    </category> 
    <category name="Music"> 
    <author>Stephen Swann 
<quote date="04/08/1972">Quote eleven</quote></author> 
    </category> 
    </quotes> 

답변

154

시도 :
//category[@name='Sport' and ./author/text()='James Small']

+0

추종자의 경우 "예상 됨"오류 메시지 : && "는"&& "대신에 and 키워드를 사용한다는 것을 의미합니다 (이 답변에서 지정한대로) – rogerdpack

11

문제는 분명하지 않지만 네가 name 속성을 가진 카테고리를 선택해야하고, 값이 지정된 올바른 하위 작성자가 있어야한다는 것을 이해했다. 나 여기

를 worng하고있는 경우는 XPath는에게

//category[@name='Required value'][./author[contains(.,'Required value')]] 
e.g 
//category[@name='Sport'][./author[contains(.,'James Small')]] 
15

사용입니다 :

/category[@name='Sport' and author/text()[1]='James Small'] 

또는 사용 :

/category[@name='Sport' and author[starts-with(.,'James Small')]] 

그것은 피하려고하는 것이 규칙입니다 가능하면 언제든지 // 의사 연산자를 사용하십시오. 일반적으로 매우 느립니다. 또한

: 후자를 사용하는 것이되어,

somename 

:

./somename 

는 동일하다.

관련 문제