XSLT - Klient

Hvis din browser understøtter XSLT, kan det bruges til at konvertere dokumenter til XHTML i browseren.

JavaScript-løsning

I tidligere kapitler har vi forklaret, hvordan man bruger XSLT til at konvertere en XML-dokument til XHTML. Vi gjorde dette ved at tilføje en XSL-stilark til XML-filen og udføre konverteringen gennem browseren.

Selvom denne metode fungerer godt, er det ikke altid tilfredsstillende at inkludere stilarkreferencer i XML-filer (f.eks. fungerer denne metode ikke i browsere, der ikke kan genkende XSLT).

En mere generel metode er at bruge JavaScript til at udføre konverteringen.

Ved hjælp af JavaScript kan vi:

  • Udfør browserbekræftelsestest
  • Brug forskellige stilark baseret på browserens og brugerens behov

Dette er kraften i XSLT! En af XSLT's designmål er at gøre det muligt at konvertere fra én format til en anden, samtidig med at det understøtter forskellige typer browsere og forskellige brugerbehov.

XSLT-konvertering på klientens side vil sikkert blive en af de vigtigste opgaver, som fremtidige browsere skal udføre, og vi vil også se dens vækst i specifikke browsermarkeder (blindtext, netværksprintere, lydudstyr, osv.).

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>
    <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-stilskabelon:

<?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.

Vigtigt:Dette betyder, at XML-filen kan konverteres til XHTML ved hjælp af flere forskellige XSL-stilskabeloner.

Konverter XML til XHTML i browseren

Dette er kildekoden til at konvertere XML-filer til XHTML på klienten:

<html>
<body>
<script type="text/javascript">
// Load XML 
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("cdcatalog.xml")
// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("cdcatalog.xsl")
// Transform
document.write(xml.transformNode(xsl))
</script>
</body>
</html>

Tip:Hvis du ikke kender til at skrive JavaScript, så lær voresJavaScript undervisning》。

Det første stykke kode opretter en instans af Microsofts XML parser og læser XML-filen ind i hukommelsen. Det andet stykke kode opretter en anden instans af parseren og læser denne XSL-fil ind i hukommelsen. Det sidste stykke kode bruger XSL-dokumentet til at konvertere XML-dokumentet og viser resultaterne som XHTML i browseren. Opgaven er færdig!

Se, hvordan det fungerer i IE