-*- mode: text -*- 

AJAXSLT -- AN XSLT PROCESSOR LIBRARY FOR AJAX APPLICATIONS


INTRODUCTION

 AJAXSLT is an implementation of XSLT in JavaScript. Because XSLT uses
 XPath, it is also an implementation of XPath that can be used
 independently of XSLT. This implementation has the advantange that it
 makes XSLT uniformly available on more browsers than natively provide
 it, and that it can be extended to still more browsers if
 necessary.

 AJAXSLT is interesting for developers who strive aggressively for
 cross browser compatibility of their advanced web applications.

 This implementation of XSLT operates at the DOM level on its input
 documents. It internally uses a DOM implementation to create the
 output document, but usually returns the output document as text
 stream. The DOM to construct the output document can be supplied by
 the application, or else an internal minimal DOM implementation is
 used. This DOM comes with a minimal XML parser that can be used to
 generate a suitable DOM representation of the input documents if they
 are present as text.


TESTS AND USAGE EXAMPLES

 The files ending in _unittest.html are jsunit test pages. See
 <http://www.jsunit.net/>. There is a test runner online at
 <http://www.jsunit.net/runner/testRunner.html>.
 
 The files xslt.html and xpath.html in the directory test are
 interactive tests. They can be run directly from the file system; no
 HTTP server is needed.

 Both unit tests and interactive tests demonstrate the use of the
 library functions. There is not much more documentation so far.

CONFORMANCE

 A few features that are required by the XSLT and XPath standards were
 left out. They are marked in the source code using alert()
 statements. See xslt.js.

 The DOM implementation is minimal so as to support the XSLT
 processing, and not intended to be complete.

 The implementation is all agnostic about namespaces. It just expects
 XSLT elements to have tags that carry the xsl: prefix, but we
 disregard all namespace declaration for them.

 There are a few nonstandard XPath functions. Grep xpath.js for "ext-"
 to see their definitions.


BROWSER COMPATIBILITY

 The library works in these browsers:
 
 - Firefox/1.0, Firefox/1.5

 - Internet Explorer/6.0

 - Safari/1.2, Safari/1.3, Safari/2.0

 - Opera/8.0, Opera/8.5

 - Omniweb TODO(mesch): verify this.


Remarks:

 Safari/1.2 JavaScript is very slow, and apply larger stylesheets
 usually results in Safari freezing for a few seconds, and showing
 the beach ball.

 Safari/2.0 has XSLT built in, but it is not exposed to JavaScript,
 but is only applied to XML documents that have a stylesheet
 declaration when they are loaded.

 Internet Explorer exposes XSLT via the transformNode() method on the
 XML DOM. However, this is not avaiable if ActiveX is disabled.

 Firefox exposes XSLT via the XSLTProcessor() object, and XPath in the
 document object in the DOM, so we don't need all this there.

 The library probably still works in Opera/7.5, but we don't
 explicitly support this browser version anymore.


REFERENCES

 [XPATH] XPath Specification
     <http://www.w3.org/TR/1999/REC-xpath-19991116>.
 [XSLT] XSLT Specification
     <http://www.w3.org/TR/1999/REC-xslt-19991116>.
 [DOM] W3C DOM Level 3 Core Specification
     <http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/>.
 [ECMA] ECMAScript Language Specification
     <http://www.ecma-international.org/publications/standards/Ecma-262.htm>.
