Chapter 4: Data Formats 165
PART I
After the loop is finished executing, finish off the table:
</tbody></table>
</xsl:template>
</xsl:stylesheet>
If you had an XML document holding the XSLT shown here in a variable named
bookmarkStylesheet, you could quickly apply it to the fetched bookmark content held in
xhr.responseXML:
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(bookmarkStylesheet);
var resultDocument = xsltProcessor.transformToFragment(xhr.responseXML, document);
and then all you have to do is append the resulting markup into the document like so:
responseOutput.appendChild(resultDocument);
You can find the Firefox version of this example at http://ajaxref.com/ch4/xmlxsltff.html.
Of course, the Internet Explorer way has to be different, otherwise our lives as Web
developers would be far too easy. First, you use the ActiveX-based XML parser to load up
the fetched XML document containing the bookmarks:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
/* we also could use our createDocument() wrapper function here but for
clearly acknowledging the ActiveX parsing involved we leave this here.
The online version does however use the wrapper */
xmlDoc.async="false";
xmlDoc.loadXML(xhr.responseText);
Next, you fetch the XSL file used to transform the XML into the table:
var xsl = new ActiveXObject("Microsoft.XMLDOM");
xsl.async = false;
xsl.load("bookmarks.xsl");
Now apply the XSLT to the first DOM tree with a simple command:
var transformed = xmlDoc.transformNode(xsl);
and then output the result into the document:
responseOutput.innerHTML = transformed;
The Internet Explorer version of the XSLT transformation can be found at http://ajaxref
.com/ch4/xmlxsltie.html.
Once again, let’s turn to the Sarissa library discussed in the XPath section to mitigate the
cross-browser issues. First, include the appropriate libraries:
<script type="text/javascript" src="sarissa.js"></script>
<script type="text/javascript" src="sarissa_ieemu_load.js"></script>
<script type="text/javascript" src="sarissa_ieemu_xpath.js"></script>