.NET转换xslt中有document方法的XML文档的问题

为了方便测试转换结果,自己写了个小程序来用xslt转换xml文档,xslt文档中用到document方法引用外部xml文档。

  1. 执行转换时报“禁止执行document()函数”。

    解决:
    //第一个参数代表启用对document()支持,第二个参数代表是否支持script
    XsltSettings settings = new XsltSettings(true, false);
    reader = new System.Xml.XmlTextReader(xml);
    //转换时传入settings参数
    transform.Load(xslt, settings, null);
  2. 在执行转换又报错“XSLT编译错误”,调试下发现其实是报的“禁止解析外部URI”。
    解决:
    //注意第三个参数,不加的话同样无法支持document()
    transform.Load(xslt, settings, new XmlUrlResolver());
    //最后调用转换函数也得加。
    transform.Transform(reader, null, write, new XmlUrlResolver());

 

你可能感兴趣的:(XML技术,C#)