Quiero comprobar que el padre del nodo actual es el nodo raíz o no está en Xslt. ¿Cómo hago eso? favor, me guía para salir de este problema ...cómo verificar el padre del nodo actual es el nodo raíz o no en xslt?
Gracias & Regards, P.SARAVANAN
Quiero comprobar que el padre del nodo actual es el nodo raíz o no está en Xslt. ¿Cómo hago eso? favor, me guía para salir de este problema ...cómo verificar el padre del nodo actual es el nodo raíz o no en xslt?
Gracias & Regards, P.SARAVANAN
Puede utilizar not(ancestor::*)
.
Ejemplo de uso:
<xsl:template match="node()|@*">
<xsl:if test="not(ancestor::*)">
<xsl:message>The root element is "<xsl:value-of select="name()"/>".</xsl:message>
</xsl:if>
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
Dos requisitos: (a) esto está bien para XSLT 1.0, donde el nodo raíz es siempre el nodo del documento; no está bien para 2.0, donde el nodo raíz podría ser un nodo de elemento (o incluso un atributo o nodo de texto). (b) El código proporcionado está bien, excepto por el mensaje. Un comentario o instrucción de procesamiento que es un elemento secundario del nodo raíz (documento) satisfará la prueba, pero producirá un mensaje espurio. –
Nice xpath para identificar el elemento raíz, +1 –
En XPath 1.0 (XSLT 1.0):
not(parent::*)
O puede usar:
generate-id(..) = generate-id(/)
En XPath 2.0 (XSLT 2.0):
.. is root()
Buena pregunta, +1. Vea mi respuesta para las soluciones * correctas *, tanto en XPath 1.0 como en XPath 2.0. –