2016-11-29 47 views
0

我正在使用ant的xslt-task和一个合适的XSLT脚本从我们正在生成的XML文档中删除某些节点。为了在处理过程中获得一些反馈,我在脚本中添加了一些消息语句。这些工作都很好,除了所有发出的消息都有一个“:Warning!”字首。由于这些消息是信息性的,所以我只想/需要摆脱这些警告前缀以防止警告用户,否则用户可能会认为某些事情不好。 如何避免该前缀? XSLT消息函数似乎除“terminate =”yes“|”no“之外没有别的选项。可以以某种方式控制该消息前缀吗?如果是这样的话:怎么样?如何防止XSLT消息功能发出“警告!”?

我使用内置的蚂蚁默认XSLT任务,即我的目标如下:

<xslt in="${source.xml}" out="${output.xml}" style="${stylesheet.xsl}" processor="trax"> 
</xslt> 

与杂项。属性设置为指向适当的位置。我发现在其他一些堆栈溢出附加命令。

我的蚂蚁版本上写着:

C:\Users\mmo>ant -version 
Apache Ant(TM) version 1.8.2 compiled on December 20 2010 
+0

对于来自使用Saxon的XSLT处理器的ant xslt任务的'xsl:message'文本,还没有看到。请添加一个显示问题的[mcve],并说明您正在使用的XSLT处理器,蚂蚁版本等。谢谢。 – kjhughes

+0

我添加了我使用的蚂蚁片段和ant版本。 – mmo

回答

1

我想你可能使用的是默认的Xalan处理器,我怕我不能劝你是否/如何其XSL:消息处理可定制。

如果您要切换到使用Saxon,您不仅可以通过使用XSLT 2.0而不是1.0来获得生产率提高一倍的好处,但您还可以获得(a)用于定制xsl:message输出的接口和( b)可以回答这样的问题的活跃用户社区的成员资格。 (实际上,现在我想起来,我似乎回想起用Xalan,xsl:message输出被发送到注册的ErrorListener的warning()方法,所以如果你不想切换,你可以尝试并写入一个ErrorListener。)

+0

谢谢。默认情况下Xalan发送给警告方法的评论看起来是正确的。我不太清楚如何使用默认的xslt任务编写和添加/注册(?)不同的错误侦听器。任何指针? – mmo

+0

根据您的建议,我需要做些什么才能切换到使用撒克逊?使用不同的蚂蚁版本?或者安装一些额外的.jar?去哪儿? – mmo

+0

要使Ant调用Saxon,请参阅http://stackoverflow.com/questions/919692/how-to-execute-xslt-2-0-with-ant另一种有用的技术是编写您自己的TransformerFactory(使用Java),调用Xalan(或Saxon)完成任何所需的配置后,例如一个自定义的ErrorListener;然后你可以用同样的方式从Ant中调用你的TransformerFactory。 –