XSLT - På serveren

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

Krydsbrowserløsning

I 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 anden fordel ved XSLT. En af designmålene for XSLT 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 vist i tidligere kapitler:

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

Se denne XML-fil.

og de tilhørende XSL-stilark:

<?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 venligst, at denne XML-fil ikke indeholder referencer til XSL-filen.

Vigtige oplysninger:Dette sætning indikerer, at XML-filen kan konverteres ved hjælp af flere forskellige XSL-stilark.

Serverens konvertering af XML til XHTML

Dette er koden til at 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 fil
Response.Write(xml.transformNode(xsl))
%>

Bemærk:Hvis du ikke kender til, hvordan man skriver ASP, kan du lære voresASP 教程

Første kode linje opretter en instans af Microsofts XML parser, og læser derefter XML-filen ind i hukommelsen. Anden kode linje opretter en anden instans af parseren, og læser derefter denne XSL-fil ind 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.