2012-04-20 17 views
93

Quale XPath posso utilizzare per selezionare qualsiasi categoria con un attributo nome specificato e qualsiasi autore del nodo figlio con il valore specificato.XPath con condizioni multiple

ho provato diverse varianti del percorso seguito senza successo:

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

L'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> 

risposta

154

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

+0

Per i follower, il messaggio di errore "Previsto], ma trovato: &&" significato "utilizza la parola chiave invece di &&" (come specifica questa risposta) – rogerdpack

11

questione non è chiara, ma quello che ho capito è necessario selezionare una categoria che ha attributo nome e dovrebbe avere autore figlio con valore specificato, corretto me se sto worng

ecco un XPath

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

Uso:

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

o l'uso:

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

E 'buona norma cercare di evitare utilizzando lo pseudo-operatore // quando possibile, perché la sua valutazione ca n in genere essere molto lento.

anche:

./somename 

è equivalente a:

somename 

cui si consiglia di utilizzare quest'ultimo.

Problemi correlati