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