XSLT - På serveren

Da ikke alle browsere understøtter XSLT, er en anden løsning at udføre konverteringen fra XML til XHTML på serveren.

Krydsbrowserløsning

I de tidligere kapitler har vi forklaret, hvordan man bruger XSLT til at konvertere XML til XHTML i en browser. Vi har oprettet et JavaScript, der bruger en XML-parser til konvertering. JavaScript-løsningen virker ikke på browsere uden en XML-parser. For at XML-data skal kunne bruges i alle typer browsere, skal vi konvertere XML-dokumentet på serveren og sende det som XHMTL til browseren.

Dette er en af de mange fordele ved XSLT. En af XSLT's designmål er at gøre det muligt at konvertere data fra en format til en anden på serveren og returnere læsbare data til alle typer browsere.

XML-filer og XSL-filer

Se denne XML-dokument, som allerede er præsenteret i de tidligere kapitler:

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
.
</catalog>

Se denne XML-fil.

og tilhørende XSL-stilskabeloner:

<?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">Title</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 denne XSL-fil.

Bemærk, at denne XML-fil ikke indeholder referencer til XSL-filer.

Vigtig information:Denne setningen indikerer at XML-filen kan konverteres ved hjælp af flere forskellige XSL-stilskabeloner.

Konverter XML til XHTML på serveren

Dette er koden til å konvertere XML-filen til XHTML på serveren:

<%
Load 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))
%>

Tip:Hvis du ikke kender til at skrive ASP, kan du lære voresASP undervisning》。

Første kode linje opretter en instans af Microsofts XML parser, og indlæser derefter XML-filen i hukommelsen. Anden kode linje opretter en anden instans af parseren, og indlæser derefter denne XSL-fil i hukommelsen. Sidste linje bruger XSL-dokumentet til at konvertere XML-dokumentet, og sender resultaterne som XHTML til din browser. Opgaven er færdig!

Se, hvordan det fungerer.