<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="../make-menu.xsl" type="text/xsl"?><html>
   <head>
      <this-is section="xsl-elements" page="patterns" subpage=""/>
      <!--
           Generated at 2011-12-09T20:47:22.916Z--><title>Saxonica: XSLT and XQuery Processing: XSLT Patterns</title>
      <meta name="coverage" content="Worldwide"/>
      <meta name="copyright" content="Copyright Saxonica Ltd"/>
      <meta name="title" content="Saxonica: XSLT and XQuery Processing: XSLT Patterns"/>
      <meta name="robots" content="noindex,nofollow"/>
      <link rel="stylesheet" href="../saxondocs.css" type="text/css"/>
   </head>
   <body class="main">
      <h1>XSLT Patterns</h1>
      <p>This section gives an informal description of the syntax of XSLT patterns.
For a formal specification, see the XSLT recommendation. Pattern syntax did not
change significantly in XSLT 2.0, except by allowing any XPath 2.0 expression to
be used within a predicate. XSLT 3.0 introduces extension, described below, to
      allow atomic values as well as nodes to be matched, and by removing a number of restrictions.
      Some of these changes (but not all) are implemented in Saxon 9.4 when XSLT 3.0 processing is enabled.</p>
      <p>Patterns define a condition that a node may or may not satisfy: a node either matches the
pattern, or it does not. The syntax of patterns is a subset of that for
the <a class="bodylink" href="../expressions/intro.xml">XPath expressions</a>, and formally, a node matches
a pattern if it is a member of the node set selected by the corresponding expression, with
some ancestor of the node acting as the current node for evaluating the expression. For example
a TITLE node matches the pattern "TITLE" because it is a member of the node set selected by the
expression "TITLE" when evaluated at the immediate parent node.</p>
      <p>In XSLT stylesheets, patterns are used primarily in the <code>match</code> attribute of the 
<code>xsl:template</code> element.
They are also used in the <code>count</code> and <code>from</code> attributes of <code>xsl:number</code>, the
<code>match</code> attribute of <code>xsl:key</code>, and the <code>group-starting-with</code> and <code>group-ending-with</code>
attributes of <code>xsl:for-each-group</code>.</p>
      <p>The next page gives some examples of match patterns and their meaning. This is followed
by a page that gives a summary of the XSLT 2.0 syntax, and another page that describes the extensions
      to patterns in XSLT 3.0.</p>
      <ul>
         <li>
            <p><a class="bodylink" href="patterns/examples.xml">Examples of XSLT 2.0 Patterns</a></p>
         </li>
         <li>
            <p><a class="bodylink" href="patterns/syntax.xml">Pattern syntax</a></p>
         </li>
         <li>
            <p><a class="bodylink" href="patterns/patterns-30.xml">Patterns in XSLT 3.0</a></p>
         </li>
      </ul>
      <table width="100%">
         <tr>
            <td>
               <p align="right"><a class="nav" href="patterns/examples.xml">Next</a></p>
            </td>
         </tr>
      </table>
   </body>
</html>