Requête XPath comment obtenir la valeur d'un attribut basé sur deux attribut
Je veux extraire le nom de l'attribut value de la balise suivante
<application
comments="Do not erase this one"
executable="run_CIET"
icon="default"
instances="1"
mode="1"
name="CIET"
order="10"
selection="1"
tool="y"
/>
Je peux facilement obtenir la valeur de l'attribut nom de la valeur basée sur la valeur de mode comme indiqué ci-dessous
xpath Applications.xml '//applications/application[@mode='3']'/@name
Mais si je veux ajouter plus de service qui est "obtenir la valeur d'attribut de nom si mode=X et outil attribut n'est pas là dans l'application de la balise"
Comment faisons-nous cela? J'ai essayé quelque chose comme
xpath Applications.xml '//applications/application[@mode='3' and !@tool]'/@name
mais sa ne fonctionne pas.
Je n'ai pas utilisé de XPath avant et je trouve ça difficile, je recherche W3C aider sur XPath, mais n'a pas trouvé ce que je voulais. S'il vous plaît aider.
source d'informationauteur u449355 | 2010-10-06
Vous devez vous connecter pour publier un commentaire.
est pas valide la syntaxe XPath. Il y a un
!=
de l'opérateur, mais pas de!
opérateur.Utilisation:
Il y a deux choses que vous devriez toujours essayer d'éviter:
à l'aide de la
!=
opérateur -- c'est bizarre de définition et de ne pas se comporter comme lenot()
fonction --ne jamais l'utiliser si l'un des opérandes est un node-set.Essayez d'éviter, autant que possible, à l'aide de la
//
abréviation -- cela peut entraîner signifficant inefficacité et dispose également d'comportement anormal qui n'est pas apperent pour la plupart des gens.À l'aide de
not(@tool)
au lieu de!@tool
devrait faire le travail. Si votre moteur XPath n'est pas se comporter de vous pourrait fairecount(@tool)=0
mais cela ne devrait pas être nécessaire.