2010-05-08 125 views
2

使用cruisecontrol进行持续集成,我对Weblogic Ant任务以及他们认为服务器调试信息是警告而不是调试的一些烦恼,所以显示在我的构建报告电子邮件中。从巡航输出XML类似于:在XSL节点选择中基于属性通配符排除节点

<cruisecontrol> 
<build> 
    <target name="compile-xxx"> 
     <task name="xxx" /> 
    </target> 
    <target name="xxx.weblogic"> 
     <task name="wldeploy"> 
      <message priority="warn">Message which isn't really a warning"</message> 
     </task> 
    </target> 
</build> 
</cruisecontrol> 

在CruiseControl的XSL模板当前选择的任务列表是:

<xsl:variable name="tasklist" select="/cruisecontrol/build//target/task"/> 

我想什么是什么,其选择在同一个任务列表方式,但不包括任何具有属性name =“* weblogic”的目标节点,其中*是通配符。我试过

<xsl:variable name="tasklist" select="/cruisecontrol/build//target[@name!='*weblogic']/task"/> 

但是这似乎没有奏效。我不是XSLT方面的专家,只是想让这个问题得到解决,所以我可以继续进行项目的真正开发。任何帮助深表感谢。

+0

好问题(+1)!查看我的答案以获得完整的单线XPath解决方案。 :) – 2010-05-08 17:31:33

回答

2

在CruiseControl的XSL模板 当前选择的任务列表 是:

<xsl:variable name="tasklist" select="/cruisecontrol/build//target/task"/>  

我想是一些东西, 选择以同样的方式在任务列表, 但不包括具有属性 name =“* weblogic”的任何目标节点 其中*是通配符

使用

/cruisecontrol/build 
       //target 
        [not(substring(@name, string-length(@name)-7) 
         = 'weblogic' 
         ) 
        ]/task