web-dev-qa-db-fra.com

XPath avec plusieurs conditions

Quel XPath puis-je utiliser pour sélectionner une catégorie avec un attribut de nom spécifié et tout auteur de noeud enfant avec la valeur spécifiée?.

J'ai essayé différentes variantes du chemin ci-dessous sans succès:

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

Le 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>
135
mjroodt

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

216
Cylian

tiliser:

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

ou utiliser:

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

Si vous le souhaitez, évitez autant que possible d'utiliser le pseudo-opérateur //, car son évaluation peut généralement être très lente.

Aussi:

./somename

est équivalent à:

somename

il est donc recommandé d'utiliser ce dernier.

26
Dimitre Novatchev

la question n'est pas claire, mais ce que je comprends, vous devez sélectionner une catégorie qui a un attribut name et devrait avoir un auteur enfant avec une valeur spécifiée, corrigez-moi si je suis porté

voici un xpath

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