.net System.Xml.Xsl:如何将Xsl:message元素生成的输出重定向到跟踪侦听器?

.net System.Xml.Xsl:如何将Xsl:message元素生成的输出重定向到跟踪侦听器?,.net,xslt,.net,Xslt,我知道Console.SetOut,但不知道应该传递给此方法什么。Console.SetOut将为控制台输出设置流。 使用XsltMessageEncountered类的XsltArgumentList事件,并使用Trace.write将消息写入跟踪列表 void TestTransform() { XsltArgumentList xsltargs = new XsltArgumentList(); xsltargs.XsltMessageEncountered += new

我知道
Console.SetOut
,但不知道应该传递给此方法什么。

Console.SetOut
将为控制台输出设置流。 使用
XsltMessageEncountered
类的
XsltArgumentList
事件,并使用
Trace.write
将消息写入跟踪列表

void TestTransform()
{
    XsltArgumentList xsltargs = new XsltArgumentList();
    xsltargs.XsltMessageEncountered += new XsltMessageEncounteredEventHandler(OnXsltMessageEncountered);

    XslCompiledTransform transform = new XslCompiledTransform();
    //....some code to load xslt and other stuffs. Pass the xsltargs to transform
}

void OnXsltMessageEncountered(object sender, XsltMessageEncounteredEventArgs e)
{
    //write the message to Trace.
    Trace.Write(e.Message);
}

是的,我已经找到了这个解决方案。这仅由XslCompiledTransform支持。Console.SetOut是使用XslTransform执行此操作的唯一方法。这是特定于XSLT处理器的。XSLT语言中没有强制执行这一点的内容。这就是为什么 XSLTPrime标签。我认为XSLT的主题比XSLT语言本身更广泛。但是,好的,我将恢复
xsltprocessor
标记,尽管如果没有在标记wiki中进行解释,它的含义还不够明显。根据经验,如果问题或答案包含任何对XSLT指令的引用,那么它就不是一个XSLT问题。我的问题引用了xsl:message!:)