xpath find si le noeud existe

Utiliser une requête xpath Comment trouvez-vous si un nœud (tag) existe du tout?

Par exemple si je devais m’assurer qu’une page de site Web a la structure de base correcte telle que / html / body et / html / head / title

... 

ainsi par exemple

 body node exists body node missing 

Essayez l’expression suivante: boolean(path-to-node)

Pasortingck a raison, à la fois dans l’utilisation de xsl:if et dans la syntaxe pour vérifier l’existence d’un nœud. Cependant, comme la réponse de Pasortingck l’implique, il n’ya pas de xsl équivalent à if-then-else, donc si vous cherchez quelque chose qui ressemble plus à if-then-else, vous devriez normalement utiliser xsl:choose et xsl:otherwise . Ainsi, l’exemple syntaxique de Pasortingck fonctionnera, mais c’est une alternative:

  body node exists body node missing  

Peut-être vaut-il mieux utiliser un choix, ne pas avoir à taper (ou éventuellement à typer) vos expressions plus d’une fois et vous permet de suivre des comportements différents.

J’utilise très souvent count(/html/body) = 0 , car le nombre spécifique de nœuds est plus intéressant que l’ensemble. Par exemple … lorsqu’il y a plus de 1 nœud de manière inattendue qui correspond à votre expression.

          

Je travaille en Ruby et en utilisant Nokogiri, je récupère l’élément et regarde si le résultat est nul.

 require 'nokogiri' url = "http://somthing.com/resource" resp = Nokogiri::XML(open(url)) first_name = resp.xpath("/movies/actors/actor[1]/first-name") puts "first-name not found" if first_name.nil? 

Une variation lors de l’utilisation de xpath en Java avec count ():

 int numberofbodies = Integer.parseInt((Ssortingng) xPath.evaluate("count(/html/body)", doc)); if( numberofbodies==0) { // body node missing }