Thursday, August 27, 2009

Where is Microsoft's XSLT 2?

In January 2007 you found this announcement in the Microsoft XML Team Blog

"We are pleased to note that XSLT 2.0 and XPath 2.0 are now W3C Recommendations. Microsoft contributed thousands of person-hours to the W3C efforts that developed these standards and is committed assist with the further development of XML standards at W3C.
Neither are yet implemented over standalone documents in our libraries, mainly because we have a policy of not implementing W3C specifications in the core System.Xml and MSXML libraries until they are official Recommendations. "

As XSLT 2 is still not found in any library published by Microsoft, given their policies XSLT 2 is 2.5 years overdue.

Even worse. I think no one has ever heard of XSLT 2 by Microsoft again. Just lately Microsoft has released the MSXML 6 ServicePack 3. Still nothing about XSLT 2.

XSLT 1 is simply insufficient. Without the non XSLT 1 function node-set() you cannot even sum up two related fields like here.

<xsl:value-of select="sum(./nominal * ./prices)"/><!-- Not working in XSLT 1 -->

What about alternatives? There is for example Saxon that is both available for .Net and Java. But unfortunately Saxxon is still working as an interpreter. This eliminates this choice for high performance XSLT transformations, e.g. if you need to deserialize the result of the transformation into objects.

So for high performance scenarios there is still no available XSLT 2 processor on the market for .Net which is, after Microsoft contributed thousands of hours to the standard, quite awkward in my eyes.

I think it is definitely time for Microsoft to bring XSLT 2 to the masses, including a high performance XSLTCompiledtransform2 library for .Net.

In order to raise the pressure, please write the Microsoft XML team why you need XSLT 2.

On 23.09.2009 is asked through their team blog the following....


I recently found out that IBM published a public beta regarding XSLT 2. Intel is obviously working on XSLT 2 as well.

What is the status of XSLT 2 at Microsoft?


The answer to my question comes a week later...


While XML continues to be a key part of our platform going forward, we have decided not to pursue an XSLT 2.0 implementation at this time. If there is a specific XSLT task you’re trying to accomplish and are having difficulty with XSLT 1.0, please let us know and we’ll do our best to help.



Don Demsak said...


I think you should start up an open source project, and implement it. I know that it isn't easy to leverage the stuff in System.Xml to do it. But, if you really want it, you'll stand a better chance of getting XSLT 2.0 in .Net if it was an open source project. With all the cutbacks at MSFT, and the focus on other technologies, I wouldn't expect MSFT to implement this. I think it is time for the open source community to do something like this, if it is really needed.

I know it sounds like a cop out, but, if enough people want it, but not enough to warrant adding it to the core framework, open source is the only option.

elLoco said...

Basically a good idea.
Starting an open source project leaves two questions open though.
First: I am not sure wether I am bright enough for getting a XSLTCompiledTransform2 to fly. XSLCompiledTransform makes profound use of System.Emit. Means you have to translate into bytecode by hand. And I don't expect to find a rich set of documentation here.
Second: You need a sponsor.

girish said...

Don't know about Microsoft, but Intel appears to be releasing xslt 2.0, take a look at recent blog:

elLoco said...

Today if found this at the IBM websphere community blog:

My team and I have been working very hard to bring the W3C standards of XPath 2.0, XSLT 2.0, and XQuery 1.0 to life. I'm proud to announce, that today, you can download, install, and work with the WebSphere Application Server V7.0 Feature Pack for XML Beta containing these critically important standards.

Luke Thompson said...

Just posted my comment to Microsoft XML team. It's ridiculous that this isn't part of the core .NET framework.

Of course it is needed. We're limping along with XSLT 1.0.

The simplest things like getting a min, max, avg over a nodeset are stupidply hard in XSLT 1.0 and involve writing your own poorly performing versions of these with long winded and unfathomably dumb syntax.

MS just need to implement XSLT 2.0 / XPath 2.0 in the core .NET base class library. It's a dumb idea to do it as an open source project; sure it could work but as previous comments have indicated it will never be as fast, as easy to distribute and maintain as MS doing it.

Anonymous said...

XQSharp ( includes full XSLT 2.0 support in .NET, along with XQuery 1.0 and XPAth 2.0.

Max Toro said...

Saxon is a compiled, not interpreted, processor. Not as fast as XslCompiledTransform, but still fast.

Anonymous said...

Microsoft is now reconsidering supporting XSLT 3.0 in .NET framework. The work item is currently Under Review and will largely base on how many people feel it’s important. Please submit your vote below if you want to see it included as part of the core framework.