<xsl:key> Element

The <xsl:key> element declares a named key — that is, a name-value pair assigned to a specified element in an XML document. The key is used with the key() function in XPath expressions to help you access the assigned elements in a complex XML document efficiently.

  name = QName
  match = Pattern
  use = Expression


  • match
    Specifies the Patterns that identifies a node that holds this key.
  • use
    Specifies an Expressions to be used as the value of the key. The key value can be one of the following: an attribute, a child element, or the content of the matched element.

Element Information

Number of occurrences


Parent elements


Child elements

(No child elements)


You can use keys as generalized IDs for referencing elements in an XML document. To do this, first use <xsl:key> to declare a key for a node. Then call the key() function to retrieve the node, supplying the name and value of the key as the function arguments,. For more information, see the example below.

Multiple keys can be declared on a node. This provides multiple ways to query a node.

When you work with relatively large XML documents, a key is often a fast wayto query elements. This is because it essentially indexes the locations of the desired nodes ahead of time. However, when <xsl:key> elements are compiled, the XSLT processor will not create such indexes unless a key() function is called against the keys. This ensures that the time-intensive indexing operation is performed only when it is necessary.

In a stylesheet, <xsl:key> elements are top-level elements, and cannot appear within a template. To avoid circular references, you cannot use parameter or variable references as part of an <xsl:key> match.


The following topic provides an example of the <xsl:key> element.