Skip to content

XSLT <xsl:key>

How to use the XSLT <xsl:key> element to define named keys for efficient node lookup with the key() function in XSL transformations.

XSLT <xsl:key>

The <xsl:key> element is a top-level element which declares a named key that can be used in the style sheet with the key() function.

Syntax

<xsl:key
	name="name"
	match="pattern"
	use="expression"/>

Attributes

Attribute Value Required/Optional Description
name name Required Specifies the name of the key
match pattern Required Defines the nodes to which the key will be applied
use expression Required The value of the key for each of the nodes

Example

Suppose you have an XML file called "persons.xml":

persons.xmlxml
<persons>  
	<person name="Natan" id="020534"/>
	<person name="Leon" id="030359"/>
	<person name="Tom" id="123456"/>
</persons>

You can define a key in an XSL file like this:

<xsl:key name="preg" match="person" use="@id"/>

To find the person with id="123456", write (in the XSL file):

<?xml version="1.0" encoding="UTF-8"?>
<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','123456')">
    <p>
    Id: <xsl:value-of select="@id"/><br />
    Name: <xsl:value-of select="@name"/>
    </p>
  </xsl:for-each>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>
Navigation