attribute
El elemento attribute
permite añadir atributos a los elementos. Este elemento permite reemplazar atributos ya existentes con nombres equivalentes.
La estructura de este elemento es la siguiente:
<xsl:attribute name="nombre" namespace="URI">
<!-- template -->
</xsl:attribute>
Donde:
name
es un atributo obligatirio que permite especificar el nombre del atributo.select
es un atributo opcional que define la URI del espacio de nombres (namespace) utilizado para el atributo
Para añadir un atributo color
a un elemento <pintura>
, se utilizaría el siguiente código:
<pintura>
<xsl:attribute name="color"/>
</pintura>
El valor de un atributo se define en el contenido del elemento attribute
:
<pintura>
<xsl:attribute name="color">Rojo</xsl:attribute>
</pintura>
Opcionalmente, se puede obtener el valor mediante el elemento value-of
:
<pintura>
<xsl:attribute name="color">
<xsl:value-of select="valor"/>
</xsl:attribute>
</pintura>
Si se añade un atributo a un elemento que tiene contenido, el elemento attribute
debe ir en primer lugar:
<pintura>
<xsl:attribute name="color">
<xsl:value-of select="valor-atributo"/>
</xsl:attribute>
<xsl:value-of select="valor-elemento"/>
</pintura>
Es decir, lo siguiente sería incorrecto:
<pintura>
<xsl:value-of select="valor-elemento"/>
<xsl:attribute name="color">
<xsl:value-of select="valor-atributo"/>
</xsl:attribute>
</pintura>
Plantillas de valores de atributos
Las plantillas de valores de atributos o Attribute Value Templates son una característica de XSLT que permiten insertar expresiones dinámicas dentro de los valores de los atributos utilizando llaves (curly braces).
La sintaxis sería la siguiente:
<pintura color="{valor-atributo}"></pintura>
Esta sintaxis permite simplificar las hojas XSL ya que permiten omitir el uso del elemento attribute
. El código equivalente utilizando attribute
sería el siguiente:
<pintura>
<xsl:attribute name="color" select="valor-atributo"/>
</pintura>