<xsl:apply-templates> |
Instructs the XSLT processor to apply the appropriate templates to a node-set.
Category
Instruction
Required Attributes
None.
Optional Attributes

select
  Contains an XPath expression that selects the nodes to which templates should be applied. Valid values include * to select the entire node-set. Without this attribute, all element children of the current node are selected.

mode
  Defines a processing mode, a convenient syntax that lets you write specific templates for specific purposes. For example, I could write an < xsl:template > with mode= " toc " to process a node for the table of contents of a document, and other < xsl:template > s with mode= " print " , mode= " online " , mode= " index " , etc. to process the same information for different purposes.

Content
The <xsl:apply-templates> element can contain any number of <xsl:sort> and <xsl:with-param> elements. In most cases, <xsl:apply-templates> is empty.
Appears in
<xsl:apply-templates> appears inside a template.
Defined in
XSLT section 5.4, Applying Template Rules.
Example
In our case study (see Chapter 9), we needed to create several different outputs from the same data. We addressed this need with the mode attribute of the <xsl:apply-templates> element. Here's the main template (match="/"):
    <xsl:template match="/">
      <xsl:apply-templates select="tutorial" mode="build-main-index"/>
      <redirect:write select="concat($curDir, $fileSep, 'index.html')">
        <xsl:apply-templates select="tutorial" mode="build-main-index"/>
      </redirect:write>
      <xsl:apply-templates select="tutorial" mode="build-section-indexes"/>
      <xsl:apply-templates select="tutorial" mode="build-individual-panels"/>
      <xsl:apply-templates select="tutorial" mode="generate-graphics"/>
      <xsl:apply-templates select="tutorial" mode="generate-pdf-file">
        <xsl:with-param name="page-size" select="'ltr'"/>
      </xsl:apply-templates>

      <xsl:apply-templates select="tutorial" mode="generate-pdf-file">
        <xsl:with-param name="page-size" select="'a4'"/>
      </xsl:apply-templates>
      <xsl:apply-templates select="tutorial" mode="generate-zip-file"/>
    </xsl:template>
Notice that this example selects the <tutorial> element eight times, but applies templates with a different mode (or different parameters for the same mode) each time.