Specifying XSLT Patterns and Expressions

In a stylesheet's xsl:template, xsl:apply-templates, xsl:for-each, and xsl:value-of instructions, you specify patterns or expressions as the values for the match or select attributes. These patterns are XPath expressions. You specify patterns or expressions to

  • Define which nodes a template rule matches.
  • Select lists of source nodes to process.
  • Extract source node contents to generate result nodes.

Depending on the context, an XSLT pattern or expression can mean one of the following:

  • Does this template match the current node?
  • Given the current node, select all matching source nodes.
  • Given the current node, select the first matching source node.
  • Given the current node, do any source nodes match?

Patterns or expressions can match or select any type of node. The XSLT processor can match a pattern to a node based on the existence of the node, the name of the node, or the value of the node. You can combine patterns and expressions with Boolean operators. For detailed information about patterns and expressions, see Chapter 9Writing XPath Expressions.

Examples of Patterns and Expressions

Following are examples of patterns and expressions you can specify in stylesheet instructions:


              xsl:template match = "book/price" 
               

            

Matches any price element that is a child of a book element.


              xsl:template match = "book//award" 
               

            

Matches any award element that is a descendant of a book element.


              xsl:template match = "book [price]" 
               

            

Matches any book element that has a child that is a price element.


              xsl:template match = "book [@price]" 
               

            

Matches any book element that has a price attribute.


              xsl:template match = "book [price=14]" 
               

            

Matches any book element that has a child that is a price element whose value is 14.


              xsl:template match = "book [@price=14]"
               

            

Matches any book element that has a price attribute whose value is 14.


              xsl:apply-templates select = "book"
               

            

Selects all book elements that are children of the current element.


              xsl:apply-templates select = "book/price"
               

            

Selects all price elements that are children of book elements that are children of the current element.


              xsl:apply-templates select = "//book"
               

            

Selects all book elements in the source document.


              xsl:apply-templates select = ".//book"
               

            

Selects all book elements that are descendants of the current element.

XML Schema-Aware Queries and Stylesheets

Learn how to simplify XSLT and XQuery applications using Schema Aware XSLT and XQuery processing technologies.

Learn Convert to XML

Convert to XML lets you convert .txt, binary, and EDI files to XML documents. Convert to XML works on a single document, or to build reusable converters that let you open flat files as XML documents. Free online demonstration!

ADO to XML

The Stylus Studio ADO to XML data coversion wizard simplifies extracting of relational data into any XML format.

XML Code Folding

Stylus Studio's XML Editor features XML code folding, a powerful and intuitive way to maximize limited screen real-estate and help make sense of large XML files.

Stylus Most Wanted

 
Free Stylus Studio XML Training:
W3C Member