XslCompiledTransform Transform call cause DTD crash



I have some problems when I want loading an Xslt transformation file. I using XslCompiledTransform object on .Net framework 4.0.



XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load(<filename>, new XsltSettings(true, false), null);
XPathNavigator nav = v_xdoc.CreateNavigator();

using (TextWriter myWriter = File.CreateText("result.scpt"))
{
myXslTrans.Transform(nav, null, myWriter);
}


I have this crash:


For safety reasons, in this document prohibited DTD XML. To enable DTD processing set on Parse the property on XmlReaderSettings DtdProcessing and pass parameters to the method XmlReader.Create.


When I change my code with XmlReaderSettings :



XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load(
XmlReader.Create(<filename>, new XmlReaderSettings()
{
DtdProcessing = DtdProcessing.Parse
}),
new XsltSettings(true,false),
null
);
XPathNavigator nav = v_xdoc.CreateNavigator();

using (TextWriter myWriter = File.CreateText("result.scpt"))
{
myXslTrans.Transform(nav, null, myWriter);
}


I have the same crash. My Xslt file header contains a DOCTYPE



<?xml version="1.0"?>

<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#x00A0;">
<!ENTITY euro "&#8364;" >
]>

<xsl:stylesheet xmlns:xsl="http://ift.tt/tCZ8VR"
xmlns:csv="csv:csv"
version="1.0">
<xsl:output method="text" encoding="utf-8"/>
<xsl:variable name="delimiter" select="';'"/>
...


When i remove the DOCTYPE it work fine but i need it. I don't find the good arguments for load my xslt file. Someone have an idea ?


No comments:

Post a Comment