如何在Saxon HE中使用XSLT-fn:document函数
本文关键字:XSLT-fn document 函数 Saxon HE | 更新日期: 2023-09-27 18:25:35
如何在Saxon HE中使用XSLT-fn:document函数?我知道.net可以通过Xml解析程序使用"EnableDocumentFunction"。如何在下面的代码中插入XmlResolver。
#region "saxon"
public static StringWriter saxonmethod(string sourceFile, Stream XSLT)
{
Processor processor = new Processor();
TextReader stringReader = new StringReader(sourceFile);
XmlTextReader reader2 = new XmlTextReader(stringReader);
reader2.XmlResolver = null;// Load the source document
XdmNode input = processor.NewDocumentBuilder().Build(reader2);
// Create a transformer for the stylesheet.
XsltTransformer transformer = processor.NewXsltCompiler().Compile(XSLT).Load();
transformer.InputXmlResolver = null;
// Set the root node of the source document to be the initial context node
transformer.InitialContextNode = input;
// Create a serializer
StringWriter s = new StringWriter();
Serializer serializer = new Serializer();//serializer.SetOutputWriter(Console.Out);
serializer.SetOutputWriter(s);
// Transform the source XML to System.out.
transformer.Run(serializer);
return s;
}
#endregion
谢谢阿达万斯。Saran
试着简单地删除transformer.InputXmlResolver = null;
行,那么我认为document/doc
应该可以工作。如果没有,则可以设置transformer.InputXmlResolver = new XmlUrlResolver();
。
您没有说明样式表在做什么,也没有说明它是如何失败的,所以我们在这里的工作相当黑暗。我的猜测是,document()调用的参数是一个相对URI,它失败了,因为没有已知的基URI,或者基URI不正确。默认情况下,document()使用样式表的基本URI,当从Stream加载样式表时,这是未知的,因此需要在XsltCompiler上设置BaseUri属性。