online node attribute and xslt xpath expression

xslt - node - xpath encuentra si el nodo existe



xpath php (6)

Patrick es correcto, tanto en el uso de xsl:if , como en la sintaxis para verificar la existencia de un nodo. Sin embargo, como lo indica la respuesta de Patrick, no hay xsl equivalente a if-then-else, por lo que si está buscando algo más parecido a if-then-else, normalmente es mejor usar xsl:choose xsl:otherwise y xsl:otherwise else. Entonces, la sintaxis de ejemplo de Patrick funcionará, pero esta es una alternativa:

<xsl:choose> <xsl:when test="/html/body">body node exists</xsl:when> <xsl:otherwise>body node missing</xsl:otherwise> </xsl:choose>

Usando una consulta xpath, ¿cómo 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


Podría ser mejor usar una opción, no tiene que escribir (o mal escribir) sus expresiones más de una vez, y le permite seguir comportamientos diferentes adicionales.

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 hay inesperadamente más de 1 nodo que coincide con su expresión.

<xsl:choose> <xsl:when test="/html/body"> <!-- Found the node(s) --> </xsl:when> <!-- more xsl:when here, if needed --> <xsl:otherwise> <!-- No node exists --> </xsl:otherwise> </xsl:choose>


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


Trabajo en Ruby y, utilizando Nokogiri, busco el elemento y veo 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 cuando se usa xpath en Java usando count ():

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


<xsl:if test="xpath-expression">...</xsl:if>

así por ejemplo

<xsl:if test="/html/body">body node exists</xsl:if> <xsl:if test="not(/html/body)">body node missing</xsl:if>