xsl visor tutorial transformar online freeformater español ejemplos convertir xml xslt xpath

xml - visor - xslt editor



¿Cómo obtener el nombre de la etiqueta del elemento raíz en un documento XML con XSLT? (4)

Me interesa asignar el nombre de la etiqueta del elemento raíz en un documento xml a una variable xslt. Por ejemplo, si el documento se veía como (menos el DTD):

<foo xmlns="http://....."> <bar>1</bar> </foo>

y quería asignar la cadena ''foo'' a una variable xslt. ¿Hay alguna manera de hacer referencia a eso?

Gracias, Matt


Creo que desea recuperar el nombre del elemento XML más externo. Esto se puede hacer como en la siguiente muestra XSL:

<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="outermostElementName" select="name(/*)" /> <xsl:template match="/"> <xsl:value-of select="$outermostElementName"/> </xsl:template> </xsl:stylesheet>

Tenga en cuenta que existe una ligera diferencia en la terminología de XPath:

La parte superior del árbol es un nodo raíz (terminología 1.0) o nodo de documento (2.0). Esto es a lo que se refiere "/". No es un elemento: es el padre del elemento más externo (y los comentarios y las instrucciones de procesamiento que preceden o siguen al elemento más externo). El nodo raíz no tiene nombre.

Ver http://www.dpawson.co.uk/xsl/sect2/root.html#d9799e301


Lo averigué. El nombre de la función () dado el parámetro * devolverá foo.


Use la función de name() XPath name() .

Una expresión XPath para obtener el nombre del elemento superior (¡no root!) Es:

name(/*)

La función name () devuelve el nombre completo del nodo, por lo que para un elemento <bar:foo/> se devolverá la cadena "bar: foo".

En caso de que solo se desee la parte local del nombre (sin prefijo y ":"), se debe usar la función XPath local-name() .