An allen Templates hat man die Möglichkeit einen selbst deklarierten Modus anzugeben. Wenn dann der XSLT Prozessor in eine bestimmte Richtung gepusht, vgl. Push vs. Pull Stylesheets , wird, werden nur diejenigen Regeln zur Auswertung herangezogen, die im selben Modus sind, wie der apply-templates Call selbst.
Beispielsweise möchte man die Titel im Kapitel anders behandeln als die Kapitel im Inhaltsverzeichnis, denn im TOC sollen z.B. keine Fussnoten-Marker angezeigt werden.
In Templates formuliert würde so eine Anweisung folgendermassen aussehen:
<xsl:template match="title" mode="toc"> <div class="toc-entry"> <xsl:apply-templates select="node()[not(self::footnote)]"/> </div> </xsl:template> <xsl:template match="title"> <h1> <xsl:apply-templates/> </h1> </xsl:template>Plain Text
Die Generierung des TOC könnte dann so ablaufen:
<xsl:for-each select="chapter"> <xsl:apply-templates select="title" mode="toc"> </xsl:for-each>Plain Text
Bzgl. der Eindeutigkeit der Regelbasis kann man so anhand des Mode-Attributes XSLT Konstrukte Mode Attribut Attribute mode Ausführungsgruppen bilden.