Elemento <xsl:attribute>

Crea un nodo de atributo y lo asocia a un elemento resultante.

<xsl:attribute
  name = "attribute-name"  
  namespace = "uri-reference">
</xsl:attribute>

Atributos

  • nombre
    Necesario. Nombre del atributo que se va a crear. Si este valor es un nombre completo (QName), el nodo de atributo se crea en el espacio de nombres enlazado en ese momento al prefijo, a menos que un atributo namespace lo sobrescriba. El valor del atributo name se interpreta como una plantilla de valores de atributos (las expresiones de las llaves se evalúan y se convierten en cadenas como en el elemento <xsl:value-of>). Esto permite calcular u obtener el nombre del atributo a partir del XML de origen.
  • espacio de nombres
    El identificador URI de espacio de nombres del atributo creado. Si el atributo name contiene un QName, el prefijo especificado estará enlazado al espacio de nombres especificado en el atributo de espacio de nombres. Es posible que, como resultado, se añadan otras declaraciones de espacios de nombres al realizar la serialización. Este valor se interpreta como una plantilla de valores de atributos.

Información del elemento

Número de apariciones

Ilimitado

Elementos primarios

xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:template, xsl:variable, xsl:when, xsl:with-param

Elementos secundarios

xsl:apply-imports, xsl:apply-templates, xsl:call-template, xsl:choose, xsl:copy, xsl:copy-of, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:number, xsl:text, xsl:value-of, xsl:variable

Comentarios

El contenido de este elemento especifica el valor del atributo.

Los atributos pueden añadirse o modificarse durante la transformación colocando el elemento <xsl:attribute> dentro de elementos que generan resultados, como el elemento <xsl:copy>. Recuerde que <xsl:attribute> puede utilizarse directamente en los elementos resultantes y no sólo junto con <xsl:element>.

Todos los atributos deben aplicarse antes de añadir los elementos secundarios al elemento.

Ejemplos

Este pequeño ejemplo genera un atributo que obtiene su valor de la fuente XML. Genera resultados con la forma <IMG src="value-from-XML-source"/> utilizando una expresión XPath que recupera los datos adecuados de la fuente XML; en este caso, "imagenames/imagename".

Archivo XSLT

<IMG>
  <xsl:attribute name="src">
    <xsl:value-of select="imagenames/imagename" />
  </xsl:attribute>
</IMG>

Resultados

<IMG src=" imagenames/imagename"/>

Aunque el elemento <xsl:attribute> puede ser muy útil para crear de forma dinámica atributos resultantes que no se conocen antes de transformar un documento, no es necesario utilizar este elemento si ya conoce los atributos. En el ejemplo anterior, es posible que ya sepa que un elemento IMG debe contener un atributo src. Como conoce este requisito antes de transformar el documento, no necesitará utilizar el elemento <xsl:attribute>. Puede simplificar la sintaxis de transformación y obtener el mismo resultado si utiliza lo siguiente:

<IMG src="{imagenames/imagename}"/>

Al utilizar el elemento <xsl:attribute> en vez de plantillas de valores de atributos, puede:

  • Calcular el nombre del atributo.

  • Utilizar elementos condicionales, plantillas y conjuntos de atributos junto con la generación de atributo.

  • Añadir atributos a un elemento generado por el elemento <xsl:copy> o <xsl:element>.

Esta sección incluye también los siguientes ejemplos completos: