En XSLT existe
<xsl:value-of select="expression"/>
para obtener el valor de un elemento, pero ¿hay algo para seleccionar el nombre de etiqueta del elemento?
En una situación como esta:
<person>
<!-- required stuff -->
<name>Robert</name>
<!-- optional stuff, free form for future extension.
Using XMLSchema's xsd:any -->
<profession>programmer</profession>
<hobby>photography</hobby>
</person>
<xsl:for-each select="person">
<xsl:tag-of select="."/> : <xsl:value-of select="."/>
</xsl:for-each>
Para obtener un resultado como este:
name : Robert profession : programmer hobby : photography
Por supuesto, el XSLT anterior no se compilará porque
<xsl:tag-of select="expression"/>
no existe. Pero, ¿cómo podría hacerse esto?
Respuestas:
Esto le dará el nombre del elemento actual (nombre de etiqueta)
OP-Edit: esto también hará el truco:
fuente
Nadie señaló la sutil diferencia en la semántica de las funciones
name()
ylocal-name()
.name(someNode)
devuelve el nombre completo del nodo, y eso incluye el prefijo y los dos puntos en caso de que el nodo sea un elemento o un atributo.local-name(someNode)
devuelve solo el nombre local del nodo, y eso no incluye el prefijo y los dos puntos en caso de que el nodo sea un elemento o un atributo.Por lo tanto, en situaciones en las que un nombre puede pertenecer a dos espacios de nombres diferentes, se debe usar la
name()
función para que estos nombres aún se distingan.Y, por cierto, es posible especificar ambas funciones sin ningún argumento :
name()
es una abreviatura dename(.)
local-name()
es una abreviatura delocal-name(.)
Finalmente , recuerde que no solo los elementos y atributos tienen nombres, estas dos funciones también se pueden usar en los PI y en estos son idénticos).
fuente
fuente
Para los interesados, no hay:
Sin embargo, puede volver a crear la etiqueta / elemento yendo a:
Esto es útil en una plantilla xslt que, por ejemplo, maneja valores de datos de formato para muchos elementos diferentes. Cuando no conoce el nombre del elemento en el que se está trabajando y aún puede generar el mismo elemento y modificar el valor si es necesario.
fuente
fuente