XSLT - On the Server
Since not all browsers support XSLT, one solution is to transform the
XML to XHTML on the server.
A Cross Browser Solution
In the previous chapter we explained how XSLT can be used to transform a document
from XML to XHTML in the browser. We created a JavaScript that used an XML
parser to do the transformation. The JavaScript solution will not work
in a browser that doesn't have an XML parser.To make XML data available to all kind of browsers, we
must transform the XML document on the
SERVER and send it as XHTML back to the browser.
That's another beauty of XSLT. One of the design goals for XSLT was to make it possible to
transform data from one format
to another on a server, returning readable data to all kinds of browsers.
The XML File and the XSLT File
Look at the XML document that you have seen in the previous chapters:
<?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>
|
View the XML file.
And the accompanying XSL style sheet:
<?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>My CD Collection</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>
|
View the XSL file.
Notice that the XML file does not have a reference to the XSL file.
IMPORTANT: The above sentence indicates that an XML file could be
transformed using many different XSL style sheets.
Transforming XML to XHTML on the Server
Here is the ASP source code needed to transform the XML file to XHTML on the
server:
<%
'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: If you don't know
how to write ASP, you can study our ASP tutorial.
The first block of code creates an instance of the Microsoft XML parser
(XMLDOM), and loads the XML file into memory. The second block of code creates
another instance of the parser and loads the XSL file into memory. The last
line of code transforms the XML document using the XSL document, and sends the
result as XHTML to your browser. Nice!
See how it works.
|