C# 从XSLT输出参数

C# 从XSLT输出参数,c#,.net,xslt,xslt-1.0,C#,.net,Xslt,Xslt 1.0,我熟悉将输入参数传递给XSLT CompiledTransformation类,以便解析器利用XSL文件中提供的处理指令中的参数来处理XSL文件 有没有一种方法可以从XSLT到宿主语言(如C#?)获取输出参数(比如node或其他值) 这段代码确实输出了转换后的XML,但我的问题是,我们能从XSL转换(XSLT文件)中只取一个值作为输出参数吗 大概是这样的: xslArg.OutputParam("testing"); //Something like this? ........ .......

我熟悉将输入参数传递给XSLT CompiledTransformation类,以便解析器利用XSL文件中提供的处理指令中的参数来处理XSL文件

有没有一种方法可以
从XSLT到宿主语言(如C#?)获取输出参数
(比如node或其他值)

这段代码确实输出了转换后的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#中,最好的方法是在XSLT代码中放入
指令,并钩住类上的事件


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

我认为这是不可能的。也许您可以使用扩展类调用自己的逻辑来传递xslt的值,但这似乎不是一种正确的方法。为什么不能解析结果xslt?xslt是一种函数式语言。除其他外,这意味着XSLT不能/不修改
xsl:variable
xsl:param
。想知道如何做你想做的事情,请看这里:@DimitreNovatchev,您好,它不需要修改任何参数!我希望XSLT中有一些输出参数或属性,XSL可以与宿主程序通信!顺便说一句,弗林提到了
!我会试试看,结果会出来的。。感谢您的回复!:)@JanNovák,我想在宿主程序中节省额外的工作量和代码!如果XML输出是我想要的一件事,那么我还想从C#格式的XML中读取节点的值或计算值(在转换之后或之前)。XML-DOM+XPath应该使用
selectSingleNode
为我实现这一点,但为什么我需要额外的代码,而XSLT能够做到这一点,而且我已经准备好了转换!(想一次性完成)@GeekWorking,你真的需要阅读我第一篇评论中链接到的文章中描述的技术——这比
xsl:message
谢谢你更优雅、更强大。。那么,我可以将
的内容存储到字符串或其他地方吗?随你怎么想。事件args上有一个
Message
属性,类型为
string
,您可以使用它执行任何操作。这让我很高兴:)我将尝试并接受您的答案!谢谢你帮助弗林:)
xslArg.OutputParam("testing"); //Something like this?
........
........
xslTransform.Transform(xpathXmlOrig, xslArg, objMemoryStream);
string outputparam = xslArg.GetParam("testing"); //ideal way of getting param after traformation!