xpath encuentra si existe un nodo

Usando una consulta xpath, ¿cómo se encuentra si existe un nodo (etiqueta)?

Por ejemplo, si necesito asegurarme de que una página web tenga la estructura básica correcta como / html / body y / html / head / title

... 

así por ejemplo

 body node exists body node missing 

Pruebe la siguiente expresión: boolean(path-to-node)

Patrick tiene razón, tanto en el uso del xsl:if , como en la syntax para verificar la existencia de un nodo. Sin embargo, como implica la respuesta de Patrick, no hay equivalente xsl a if-then-else, por lo que si buscas algo más parecido a un if-then-else, normalmente es mejor utilizar xsl:choose y xsl:otherwise . Entonces, la syntax de ejemplo de Patrick funcionará, pero esta es una alternativa:

  body node exists body node missing  

Sería mejor utilizar una opción, no tener que escribir (o posiblemente escribir mal) sus expresiones más de una vez, y le permite seguir comportamientos diferentes.

Muy a menudo uso count(/html/body) = 0 , ya que el número específico de nodos es más interesante que el conjunto. Por ejemplo … cuando inesperadamente hay más de 1 nodo que coincida con su expresión.

          

Trabajo en Ruby y usando Nokogiri busco el elemento y miro para ver si el resultado es nulo.

 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? 

Una variación al usar xpath en Java usando count ():

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