2010-05-08 124 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