[xsl] XSLT 1.0 support in browsers, as of June 2008

Subject: [xsl] XSLT 1.0 support in browsers, as of June 2008
From: Julian Reschke <julian.reschke@xxxxxx>
Date: Wed, 18 Jun 2008 10:04:04 +0200
(this updates a summary I sent one year ago with the latest browser releases)


recently, I hear the claim "XML on the web has failed" a lot. In particular, in the context of the HTML5 proposal worked on in the WHATWG WG, backed by Apple/Mozilla/Opera.

Of course, this is not really true. A lot of XML is being exchanged through HTTP, be it in XML-RPC & SOAP (gasp), WebDAV, or RSS and Atom.

It seems that most of the time people are referring to the support of XML in the browser, mainly with respect to XHTML (which indeed is a failure so far due to the fact that IE doesn't support it), and client-side XSLT.

There are several ways to do client-side XSLT, one of which is through the xml-stylesheet processing instruction. For a long time, that worked only in IE, but nowadays support in Firefox, Opera and Safari is getting better. In fact, it has become so good that it can *almost* be used portably.

The purpose of this mail is to document the current shortcomings of the implementations, as experienced by me supporting rfc2629.xslt (the RFC2629 XML format is used in the IETF for formatting Internet Drafts and RFCs). My experience is that it's incredibly hard to do complex stuff without either XSLT 1.1 (not finished), XSLT 2.0, or at least XSLT 1.0 + node-set extension function, therefore I'm looking at the node-set support as well...

(1) Internet Explorer (MSXML)

- It does implement msxsl:node-set, but it would be *really* great if it would also do exslt:node-set, which is supported by Opera and Firefox 3. Putting in special cases just for IE really is a pain. (*)

2008-06: we've got a solution to that one (thanks to David Carlisle): <http://dpcarlisle.blogspot.com/2007/05/exslt-node-set-function.html>

- IE suffers from an IMHO bad decision to strip out whitespace before passing the XML document to the XSLT processor (see <http://msdn2.microsoft.com/en-us/library/ms760265.aspx>). I understand that Microsoft can't simple change that without breaking deployed content, but it would be *really* cool if one could "opt out" of that behavior somehow (PI at the start of the document???).

Summary: good, but room for improvement

(2) Firefox

- Works ok (although slow compared to IE), except for the lack of exslt:node-set, which will be fixed in Firefox3.

Summary: will be good in next release

2008-06: Firefox 3 ships, and exslt:node-set works finally.

(3) Opera

- Has been improving a lot, and also has exslt:node-set since 9.2 (?), but the current release unfortunately aborts with a fatal error upon complex XPath expressions. Right now unusable for rfc2629.xslt (see <http://greenbytes.de/tech/webdav/rfc2629xslt/rfc2629xslt.html#opera>).

Summary: please fix this, and your XSLT rocks.

2008-06: Opera 9.5 fixes this, but introduces a new bug (CSS not being applied to transformation result). Opera bug 337388.

(4) Safari (and WebKit?)

- I had no opportunity to test lately, but AFAIK it still lacks support for exslt:node-set (see <http://greenbytes.de/tech/webdav/rfc2629xslt/rfc2629xslt.html#safari>).

2008-06: exslt:node-set is there (as of Safari 3.1 I think).


(*) of course that problem could also be solved by Mozilla/Opera/Safari implementing msxsl:node-set().

Current Thread