xsl:applytemplates
bruges til at kalde en anden template inde fra en template. Syntaksen er:
<xsl:apply-templates select="xpath udtryk" mode="mode navn">
Vi kommer tilbage til brugen af mode atributten senere.
Hvis vi kigger på dette lille eksempel
<xsl:template match="Nummer">
<Track>
<xsl:apply-templates>
</Track>
</xsl:template>
Når XSL processoren behandler denne template vil alle elementer der hedder "Nummer" blive fundet og for hver nummer vil der blive indsat et element der hedder "Track" i resultatet - men som følge af xsl:apply-templates vil processoren løbe xml dokumentet igennem for at se om der er templates der matcher - nu med udgangspunkt i "Nummer" elementet.
Det giver først for alvor mening, hvis der er en flere templates i xsl dokumentet.
Her er et lille eksempel:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="ISO-8859-1" />
<xsl:template match="/">
<html>
<head><title>Et eksempel</title></head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="Kunstner">
<p>Kunstner</p>
</xsl:template>
</xsl:stylesheet>
Denne lille leg går galt som vi tidligere har set - på grund af standard templates. Det er der to løsninger på - enten kan vi bruge
<xsl:template match="text() | @*"></xsl:template>
Eller også kan vi specificere hvad vi vil matche med i apply-templates
<xsl:apply-templates select="RytmiskMusik/Nummer/Kunstner"/>