XSLT - På servern

Eftersom inte alla webbläsare stöder XSLT, ett annat alternativ är att slutföra konverteringen från XML till XHTML på servern.

Korswebbläsarlösning

I föregående kapitel har vi förklarat hur man använder XSLT för att konvertera XML till XHTML i webbläsaren. Vi skapade ett JavaScript som använder XML-parser för att genomföra konverteringen. JavaScript-lösningen fungerar inte i webbläsare utan XML-parser. För att XML-data ska kunna användas i alla typer av webbläsare måste vi konvertera XML-dokumentet på servern och sedan skicka det som XHMTL till webbläsaren.

Detta är en annan fördel med XSLT. Ett av målen med XSLT:s design är att göra det möjligt att konvertera data från ett format till ett annat på servern och returnera läsbara data till alla typer av webbläsare.

XML-fil och XSL-fil

Se denna XML-dokument som redan har visats i föregående kapitel:

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd>
    <titel>Empire Burlesque</titel>
    <artist>Bob Dylan</artist>
    <land>USA</land>
    <bolag>Columbia</bolag>
    <pris>10.90</pris>
    <år>1985</år>
  </cd>
.
.
.
</catalog>

Se denna XML-fil.

och tillhörande XSL-stylesheets:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>Min CD-samling</h2> 
    <table border="1">
      <tr bgcolor="#9acd32">
        <th align="left">Titel</th> 
        <th align="left">Artist</th> 
      </tr>
      <xsl:for-each select="catalog/cd">
      <tr>
        <td><xsl:value-of select="title" /></td>
        <td><xsl:value-of select="artist" /></td>
      </tr>
      </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

Se denna XSL-fil.

Observera att denna XML-fil innehåller ingen referens till XSL-filen.

Viktigt:Detta uttryck innebär att XML-filen kan konverteras till XHTML med flera olika XSL-stylesheets.

Konvertera XML till XHTML på servern

Detta är källkoden för att konvertera XML-filen till XHTML på servern:

<%
'Ladda XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))
'Load XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))
'Transform file
Response.Write(xml.transformNode(xsl))
%>

Tips:Om du inte känner till hur man skriver ASP, kan du läsa vår:ASP Tutorial>

Det första kodsegmentet skapar ett exempel på Microsofts XML-parser, läser sedan in XML-filen i minnet. Det andra kodsegmentet skapar en annan instans av paret och läser sedan in XSL-filen i minnet. Det sista raden använder XSL-dokumentet för att konvertera XML-dokumentet och skickar resultatet som XHTML till din webbläsare. Uppgiften är klar!

Se hur det fungerar.