The XSL is
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl"
xmlns:cs="urn:cs">
<msxsl:script language="C#" implements-prefix="cs">
<msxsl:using namespace="System.IO" />
<![CDATA[public void f(){}]]>
</msxsl:script>
<xsl:output method="text" />
<xsl:template name="abc" />
</xsl:stylesheet>
Using XslCompiledTransform
I am able to validate this XSL easily using the following code:
var xslTransform = new XslCompiledTransform();
using (var stream = new FileStream(XSL_PATH, FileMode.Open))
{
using (var reader = XmlReader.Create(stream))
{
xslTransform.Load(reader, new XsltSettings(false, true), new XmlUrlResolver());
}
}
But, if I am trying to use the obsolete (I have reasons to) XslTransform
as below:
var xslTransform = new XslTransform();
using (var stream = new FileStream(XSL_PATH, FileMode.Open))
{
using (var reader = XmlReader.Create(stream))
{
xslTransform.Load(reader/*, new XsltSettings(false, true)*/, new XmlUrlResolver());
}
}
I get The 'msxsl:script' element cannot be empty.
Why?