如何在Saxon-HE中使用XSLT fn:document函数?我知道.net可以使用Xml Resolver的“EnableDocumentFunction”。如何/在哪里插入XmlResolver在我的下面的编码。如何在Saxon-HE中使用XSLT fn:document函数?
#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
感谢Adavance。 Saran
非常感谢,它的工作很好。 – 2014-10-06 10:41:08
嗨马丁,我有一个更多的怀疑相关的问题,我的xslt使用“exslt”,以便我得到它Saxon.Api.DynamicError,“无法找到匹配的1个参数函数名为{http://exslt.org/common } node-set()。没有使用本地名称node-set的撒克逊扩展函数,请帮助解决。 – 2014-10-29 03:18:27
@saravanans,这是一个完全不同的问题,你应该问它一个新的问题。但是对于XSLT 2.0,不需要该功能,只需替换任何用途即可。 'exsl:node-set($ var)'例如'$ var'。 – 2014-10-29 08:47:11