gpt4 book ai didi

xml - 撒克逊语中的 xslt:message - 消息在哪里?

转载 作者:数据小太阳 更新时间:2023-10-29 02:06:16 26 4
gpt4 key购买 nike

我使用 Saxon XSLT 版本 9.6.0.1。样式表包含此代码:

...
<xsl:message terminate="yes">errormessage</xsl:message>
...

我的应用程序按预期终止,但出现以下异常:

net.sf.saxon.expr.instruct.TerminationException: Processing terminated by xsl:message at line 45 in 
at net.sf.saxon.expr.instruct.Message.processLeavingTail(Message.java:253) at net.sf.saxon.expr.instruct.Message.processLeavingTail(Message.java:253)
at net.sf.saxon.expr.instruct.Choose.processLeavingTail(Choose.java:822)

现在我想知道“errormessage”文本的实际去向。我可以在 stderr 上看到它,但需要将它显示给用户或将其放入日志文件中。

如何以编程方式访问消息文本?

最佳答案

如果您使用 Saxon s9api,请查看 saxon 资源中的示例文件 S9APIExamples(位于 http://saxonica.com/download/download_page.xml ),它有一个设置 的示例消息监听器:

        Processor proc = new Processor(false);
XsltCompiler comp = proc.newXsltCompiler();
String stylesheet =
"<xsl:transform version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>\n" +
" <xsl:template name='main'>\n" +
" <xsl:message><msg>Reading http://www.w3.org/TR/xslt20/ ...</msg></xsl:message>/>\n" +
" <exists>\n" +
" <xsl:value-of select=\"doc-available('http://www.w3.org/TR/xslt20/')\"/>\n" +
" </exists>\n" +
" <xsl:message><msg>finishing</msg></xsl:message>\n" +
" </xsl:template>\n" +
"</xsl:transform>";
StringReader reader = new StringReader(stylesheet);
StreamSource styleSource = new StreamSource(reader, "http://localhost/string");
XsltExecutable templates = comp.compile(styleSource);
XsltTransformer transformer = templates.load();
transformer.setInitialTemplate(new QName("main"));
transformer.setMessageListener(
new MessageListener() {
public void message(XdmNode content, boolean terminate, SourceLocator locator) {
System.err.println("MESSAGE terminate=" + (terminate ? "yes" : "no") + " at " + new Date());
System.err.println("From instruction at line " + locator.getLineNumber() +
" of " + locator.getSystemId());
System.err.println(">>" + content.getStringValue());
}
}
);
Serializer out = proc.newSerializer(System.out);
transformer.setDestination(out);
transformer.transform();

关于xml - 撒克逊语中的 xslt:message - 消息在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27522994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com