Källkoden för /anders.enges/xml/xml16.asp
<!--#include file="../inc/navstuff.asp" -->
<h4>XSL i praktiken</h4>
<p>Vi utgår från en XML fil. Den måste vara well-formed och
   helst även validerad mot en DTD. Nedan finns en fil som uppfyller dessa
   villkor: </p>
   <%  show "xml16_1.xml" %>
<p>Denna fil skulle vi vilja visa på nätet och behöver för
   detta en XSL fil...</p>
<h4>Börja från en HTML fil</h4>
<p>Vi kan utan problem utgå från en HTML fil, som visedan modifierar
   till att bli en XSL fil. Nedan finns en liten HTML fil som vi kan utgå
   från. Eftersom XSL filen kommer att betraktas som en XML fil när
   den är färdig, är det noga med att även HTML koden är
   well-formed. Den skall gärna uppfylla XHTML normerna. </p>
<p>
   <%  show "xml16_1.htm" %>
</p>
<p>För att få html filen till en (simpel) XSL krävs några
   saker. </p>
<ul>
   <li>När du är nöjd med HTML filens utseende så sparar du
     den med filextension .xsl</li>
   <li>Sedan gör du de modifieringar som syns nedan. Det är tre rader
     som kommer in i början, och två som kommer till i slutet.</li>
</ul>
<p>
   <%  show "xml16_1.xsl" %>
</p>
<p>Den första raden är en normal XML Pi som säger att detta är
   en XML fil och den använder teckenuppsättningen från iso-8859-1.</p>
<p>Den andra raden säger vilken xml standard som används. Här är
   det lite jobbigt eftersom den rad som visas i ovanstående exempel inte
   följer senaste standard. Egentligen borde det stå:</p>
   <div class="code">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></div>
<p>Men eftersom Microsoft implementerade XML i IE före den senaste standarden
   blivit fastställd, så förväntar sig IE att får se
   den instruktion som då var gällande:</p>
   <div class="code">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"></div>
<p>OBS. Om du skriver för Microsoft Internet Explorer 6.0 och inte behöver
   beakta bakåtkompatibilitet, skall du använda den korrekta versionen.
   Det är dock inte en bug i IE5, utan MS gjorde det bästa de för
   tillfället kunde med denna browsers XML implementation.</p>
<p>Den tredje raden säger attdenna template skall matcha rotnoden. En template
   skall alltid ha en match mot roten "/", även om vi inte är
   intresserad av dess värden, utam bara data djupare in.</p>
<p>De två sista raderna avslutar template och stylesheet</p>
<h4>Nästa steg</h4>
<p>I detta skede har vi en fungerande XML fil och en giltig (men inte alltför
   effektiv) XSL fil. </p>
<p>Följande steg blir att koppla ihop dessa. Detta görs genom att sätta
   en hänvisning till XSL filen i XML filen. Se nedan:</p>
   <%  show "xml16_2.xml" %>
<p>Ovanstående exempel är fullt giltig XSL kod. Problemet är bara
   att det inte visas något data i sidan. Det är lätt fixat. Om
   vi sätter in några rader så att vi får följande
   kod så ser vi lite mer:</p>
<p>
   <%  show "xml16_3.xsl" %>
</p>
<p>Om denna modifierade XSL fil används i vår XML fil får vi
   följande resultat.</p>
<p>
   <%  show "xml16_3.xml" %>
</p>
<p>Detta fungerar så att raden </p>
<div class="code"><xsl:value-of select="products/product/code"/></div>
<p>säger att vi vill visa värdet (value-of) på det valda data
   (select) som finns under roten <b>products</b>, i en noden <b>product</b> och
   i dess nod <b>code. </b>Jämför gärna med hur man hänvisar
   till kataloger på en disk (paths). Samma regler om nuvarande katalog och
   underkataloger som finns för diskar, gäller även för XSL.
   MEr om detta senare i texten...</p>
<p> </p>
<!--#include file="../inc/footer.asp" -->