Posted by mkarg
on June 14, 2009 at 4:52 AM PDT
The XML Stylesheet Language (XSL) is a great solution for a lot of problems. It covers not only the transformation of one XML schema into another, like it is used in enterprise application integration (EAI), it also contains a unique standard for rendering any XML input to virtually any (even non XML) output, like HTML or PDF, what is a foundation for vendor independent reporting and rendering. In fact, XSL 1.0 was so powerful already, that several vendors built an eco system around it with different types of tools, extensions and libraries. Such libraries allow things like mathematic or string operations, others can render XML data to SVG vectors "on the fly" (without intermediate file creation, what is rather performant) to create brilliant charts. What the authors propably never expected is that people started to use XSL as a programming language, using templates as functions or sub procedures.
To better cover the issues raised by these programmers (besides a lot of other topics), the authors of XSL 2.0 added a lot of improvements to that second release of the language. There now is native support for "real" functions, and calling functions from XPath expressions which offers a lot of new possibilities. Output can now be used as input again, and there now are real loops (not just stack-limited recursion). All that small but tedious limitations had been adressed and eliminated, turning XSL 2.0 into the programming language XSL 1.0 seemed to be like but actually was not. A big easing for all the XSL programmers, which everybody thought to be the final breakthrough for XSL.
But while XSL 2.0 became a W3C recommendation in January 2007 already, there still is no broad support for it in the Java world. The reason is simple: While JAXP (Java's API for XSL) is well known and used since years, virtually nobody likes to provide a third party XSL 2.0 processor like SAXON and instruct the user to install it. People just stick with the RI and wait for XSL 2.0 to come, because everything else is too much work. But unless people demand XSL 2.0, it will never be there. Actually I was quite astonished to hear that Apache's XALAN team did get enough requests for it to make it happen, and that "some major stakeholder" wrote that he is not capable of providing XSL 2.0 in the near future "due to resource problems". This is a bit funny, because Michael Kay wrote his XSL 2.0 compatible transformer virtually alone. This is a shame for the big vendors. But not only for them, also for the praised open source community (of which I am part of). Where are all those thousands of ambitious coders that everybody cites when praising open source? I asked that once in the Apache forum and they gave me the same answer like ever: Do it on your own. Well guys, if I would do that every time I got told it, then it wouldn't be a community anymore (a community implies more than one person). And, if I do it on my own, what is Apache's XALAN team actually good for (or made of)? Also, certainly my answer is the same that everybody gives: I have no time to do that. So this is not the solution.
I do not say that I know any solution to this, but I know that it is a pity and a shame that more than two years after the official W3C recommendation there still is neither any noteworthy competitor to SAXON, nor there is a real plan to adopt XSL 2.0 in neither JAXP nor XALAN which in my opinion is the bigger scandal after all (the JAXP team told me they discussed adoption of XSL 2.0 in "some future release", but neither this decision is fixed, nor is there any plans for any such release at any time).
Shame on us all, including myself! When will there be a brave knight fighting this battle for us? Or do we have to surrender to Michael Kay for being the only living human being able to provide a complete open source XSL 2.0 implementation?