The usage is obvious:
nxsltc <source files> [options] where possible options include: /out:<file> Specifies the output file name. /debug[+|-] Emit debugging information. /nowarn Disable all warnings. /namespace:<string> Specifies namespace for compiled stylesheets. /help Display this usage message. (Short form: /?) /nologo Do not display compiler copyright banner.
Here is a little sample. Consider this dummy XSLT stylesheet (catalog2html.xslt):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="catalog"> <table> <xsl:apply-templates/> </table> </xsl:template> <xsl:template match="book"> <tr> <td> <xsl:value-of select="title" /> </td> <td> <xsl:value-of select="price" /> </td> </tr> </xsl:template> </xsl:stylesheet>
Let's compile it:
nxsltc.exe catalog2html.xslt /namespace:Foo.Bar /out:stylesheets.dll /debug+
The compilation result is stylesheets.dll, which contains our compiled stylesheet as Foo.Bar.catalog2html class:
How do you run such compiled stylesheet? Easy. XslCompiledTransform class has new overloaded Load() method in .NET 3.5, which accepts Type:
XPathDocument doc = new XPathDocument("books.xml"); XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load(typeof(Foo.Bar.catalog2html)); xslt.Transform(doc, null, Console.Out);
Above obviously assumes you have added a reference to the stylesheets.dll into your project. Alternatively you can load dll with compiled stylesheets dynamically using Assembly.Load().
I didn't tested performance yet, but it feels like a rocket, very fast. More to come. Get nXSLTC.exe v1.0b here. Enjoy!
PS. And sorry to Microsoft XML Team for spoiling their XSLTC.exe ;)