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:
namees un atributo obligatirio que permite especificar el nombre del atributo.selectes 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>