XSLT <xsl:key>Elemento
Manual de referencia completo de elementos XSLT
Definición y uso
El elemento <xsl:key> es un elemento de nivel superior (top-level element) que declara una clave con nombre (es decir, un par de nombre y valor asignado a los elementos especificados en un documento XML). Esta clave se utiliza en la hoja de estilo mediante la función key(), lo que le ayuda a acceder de manera eficiente a los elementos asignados en documentos XML complejos.
Nota:¡Las claves no tienen que ser únicas!
Sintaxis
<xsl:key
name="name"
match="pattern"
use="expression"/>
name="name"
match="pattern"
use="expression"/>
Atributos
| Atributos | Valor | Descripción |
|---|---|---|
| name | name | Obligatorio. Especifica el nombre de la clave. |
| match | pattern | Obligatorio. Define a qué nodo se aplica la clave. |
| use | expression | Obligatorio. Especifica la expresión que se utilizará como valor de la clave para cada nodo. |
Ejemplo 1
Supongamos que tiene un archivo XML llamado "persons.xml":
<persons>
<person name="Tarzan" id="050676"/>
<person name="Donald" id="070754"/>
<person name="Dolly" id="231256"/>
</persons>
<person name="Tarzan" id="050676"/>
<person name="Donald" id="070754"/>
<person name="Dolly" id="231256"/>
</persons>
Puede definir una clave en el archivo XSL de la siguiente manera:
<xsl:key name="preg" match="person" use="@id"/>
Para encontrar la persona con id="050676", use este código (en el archivo XSL):
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="preg" match="person" use="@id"/>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="key('preg','050676')">
<p>
Id: <xsl:value-of select="@id"/><br />
Name: <xsl:value-of select="@name"/>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="preg" match="person" use="@id"/>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="key('preg','050676')">
<p>
Id: <xsl:value-of select="@id"/><br />
Name: <xsl:value-of select="@name"/>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Manual de referencia completo de elementos XSLT Otras extensiones