XSLT的输出参数

时间:2013-01-04 14:48:13

标签: c# .net xslt xslt-1.0

我熟悉将Input Param传递给XSLT CompiledTransformation类,因此解析器负责处理在XSL文件中提供的处理指令中使用Param的XSL文件。

有没有办法可以从XSLT到C#等主机语言get output param(比如节点或其他东西的值)?

XslCompiledTransform xslTransform = new XslCompiledTransform();

string strXmlOutput = string.Empty;
StringWriter swXmlOutput = null;
MemoryStream objMemoryStream = null;
XPathDocument xpathXmlOrig = new XPathDocument(string_xmlInput);
swXmlOutput = new StringWriter();
objMemoryStream = new MemoryStream();

xslArg.AddParam("TESTING", "", SomeVar);
XsltSettings xslsettings = new XsltSettings(false, true);

xslTransform.Load(string_xslInput, xslsettings, new XmlUrlResolver());
xslTransform.Transform(xpathXmlOrig, xslArg, objMemoryStream);

这段代码确实输出了转换后的XML,但我的问题是我们可以从XSL Tranformation(XSLT文件)中只取一个值作为输出参数吗?

这样的事情:

xslArg.OutputParam("testing"); //Something like this?
........
........
xslTransform.Transform(xpathXmlOrig, xslArg, objMemoryStream);
string outputparam = xslArg.GetParam("testing"); //ideal way of getting param after traformation!

XSLT是否为此类提供了范围?

1 个答案:

答案 0 :(得分:0)

在C#中,最好的办法是在您的XSLT代码中添加<xsl:message>条指令,并挂钩XsltMessageEncountered类的XsltArgumentList事件。

你可以通过观察应用程序的输出,在没有事件处理程序的情况下测试它为你提供正确的输出,而不会挂钩事件,消息通过管道传输到标准输出。