Как применить XsltSettings И XmlReaderSettings при загрузке преобразования? - PullRequest
0 голосов
/ 12 октября 2011

Я пытаюсь загрузить преобразование xslt в .NET 2.0.Я беру XML-документ, который уже находится в памяти, так как он динамически генерируется перед этим.Когда я использую опцию XMLReader с ProhibitDTD = false, я получаю сообщение об ошибке, в котором говорится, что мне нужно включить сценарии в XsltSettings.Если я использую метод Load с XsltSettings (Trusted), я получаю ошибку DTD.Любые мысли о том, как применить ProhibitDTD = false И EnableScript = true?

    public static string ConvertXML(XmlDocument InputXMLDocument, string XSLTFilePath, XsltArgumentList XSLTArgs)
{
    StringWriter sw = new System.IO.StringWriter();
    XslCompiledTransform xslTrans = new XslCompiledTransform();
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ProhibitDtd = false;

    XmlReader reader = XmlReader.Create(XSLTFilePath, settings);

    try
    {

        //xslTrans.Load(reader);
        xslTrans.Load(XSLTFilePath, XsltSettings.TrustedXslt, new XmlUrlResolver());

        xslTrans.Transform(InputXMLDocument.CreateNavigator(), XSLTArgs, sw);

        return sw.ToString();
    }

1 Ответ

0 голосов
/ 12 октября 2011

Я понял - был перегруженный метод, который не казался слишком очевидным с правильными типами, но он работает.

public static string ConvertXML(XmlDocument InputXMLDocument, string XSLTFilePath, XsltArgumentList XSLTArgs)
{

    StringWriter sw = new System.IO.StringWriter();
    XslCompiledTransform xslTrans = new XslCompiledTransform();
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ProhibitDtd = false;

    XmlReader reader = XmlReader.Create(XSLTFilePath, settings);


    try
    {

        xslTrans.Load(reader, XsltSettings.TrustedXslt, new XmlUrlResolver());
 //       xslTrans.Load(XSLTFilePath, XsltSettings.TrustedXslt, new XmlUrlResolver());

        xslTrans.Transform(InputXMLDocument.CreateNavigator(), XSLTArgs, sw);

        return sw.ToString();
    }
    catch (Exception ex)
    {
        //Error email code omitted

    }
    return "";


}
...