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

有没有一种方法可以使我们从XSLT get output param(例如node或其他值)到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是否为这种情况提供范围?

最佳答案

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

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

关于c# - XSLT的输出参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14159319/

10-15 21:21