Källkoden för /anders.enges/xml/xml24.asp
<!--#include file="../inc/navstuff.asp" -->
<h4>xsl:apply-templates</h4>
<p>Om vi skriver program i ett "normalt" programmeringsspråk blir
   det fort en ruskig "spagettikod" om man inte använder subrutiner
   (Sub och Function för VB programmerare - riktiga programmerare har bara
   function). Motsvarande gäller även för XSL. Man måste få
   någon form av subrutiner för att strukturera koden.</p>
<p>Nedan kommer ett exempel på apply-templates.</p>
<p>XML filen:</p>
<p>
   <%  show "xml24_2.xml" %>
</p>
<p>XSL filen</p>
   <p>
   <%  show "xml24_2.xsl" %>
</p>
<p>Detta fungerar så att man kör apply-templates "i blindo".
   XSL kommer då att titta på vilken tagg (nod) som gäller för
   tillfället. Om noden är <name> kör tolken den template
   som finns för name. Om noden är <nationality> körs en annan
   template. </p>
<p>Vid första anblicken verkar detta inte så impunerande men tänk
   igenom hur det skulle se ut i ett "vanligt" programmeringsspråk.
   Något i den här stilen skulle behövas:</p>
<div class="code">If typeOf node is name Then<br>
      doName<br>
   elseIf TypeOf node is description then<br>
      doDescription<br>
   Else <br>
      doNationality <br>
   End If</div>
<p>Programlogiken i XSL är snarare:</p>
<div class="code">Här har du någonting. Se efter om det finns någonting att
   göra av det, tack.</div>
<p>Man kan även specificera vilken template som skall matchas genom att sätta
   select="<i>pattern</i>" i apply-templates satsen.</p>
<h4>Mer avancerat exempel på apply-templates</h4>
<p>Nedan har jag ett exempel. För att göra livet lite mer spännande
   har jag använt en rekursiv XML fil som då även kräver en
   rekursiv XSL. </p>
<p>
   <%  show "xml24_1.xml" %>
   <%  show "xml24_1.xsl" %>
</p>
<p> </p>
<!--#include file="../inc/footer.asp" -->