Several readers were asking for an code sample that performs XSLT transformation in the browser, so here it is :) To start with, you should use a wrapper library to isolate yourself from browser version/platform inconsistencies. I'm using Sarissa to deal with XML, XSLT and HttpRequest and X library to deal with DHTML-related functions.
The most common XSLT-related operation that you do in your browser is this:
- Download XML document from the web server using XMLHttpRequest;
 - Transform the XML into application-specific HTML markup with an XSLT transformation;
 - Insert the resulting HTML markup into the web page.
 
Sarissa library has a function (Sarissa.updateContentFromURI) that does almost exactly what you need to get there, so you only need to perform the following steps:
- Load the XSLT stylesheet as XML document (sync load is easier to do).
 - Import the loaded XML document into an XSL processor (special object that can perform the XSLT transformations).
 - Call the updateContentFromURI function.
 
The resulting code is very simple:
// load XSLT stylesheet, done only once.
var xsl = loadURI("moveRoutes_lists.xsl");
if (!xsl) throw("Cannot load XSL stylesheet");
var xform = new XSLTProcessor();
xform.importStylesheet(xsl);
// the following call transforms a remote XML document
// into HTML fragment and inserts it into the target
// element
Sarissa.updateContentFromURI(remoteURI, xGetElementById(targetElement),xform);
Notes:
- sarissa.js as well as sarissa_dhtml.js libraries have to be included in the source document.
 - xGetElementById function is part of the X library.
 - loadURI function is documented here.
 

No comments:
Post a Comment