2

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

有没有一种方法可以让我们get output param(比如节点的值或其他东西)从 XSLT 到像 C# 这样的宿主语言?

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 转换(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 是否为这样的事情提供了范围?

4

1 回答 1

0

在 C# 中,最好的办法是将<xsl:message>指令放入 XSLT 代码中,并挂接到XsltArgumentList类上的XsltMessageEncountered事件。

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

于 2013-01-04T16:08:56.373 回答