 Källkoden för /anders.enges/xml/xml24.asp
 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" -->