2010-06-04 24 views
0

的價值我有一個看起來像一個XML元素:XSL:是否有任何元素有n個

<account year="2010"> 
    <paymentDue> 
     <amount>0</amount> 
    </paymentDue> 
    <paymentDue> 
     <amount>752.00</amount> 
    </paymentDue> 
</account> 

我顯示由一年分組的帳戶和我使用的方法<xsl:choose>如果量說> 0,顯示付款鏈接。不過,我只能在每次付款時發生這種情況。如果任何付款到期金額大於0,我想顯示該年度的付款鏈接。

任何關於如何完成此操作的輸入將不勝感激。

+0

您應該將您的XSLT代碼發佈到相關部分(!)。否則很難說出你做錯了什麼。 – Tomalak 2010-06-04 14:53:08

回答

3

是否這樣?

<xsl:template match="account"> 
    <xsl:if test="paymentDue[number(amount) &gt; 0]"> 
    <!-- display payment link --> 
    </xsl:if> 
</xsl:template> 

XPath表達式paymentDue[number(amount) &gt; 0]選擇任何<paymentDue>節點其<amount>是大於0。<xsl:if>測試成功時,這導致一個非空的節點集(即,當存在滿足條件的至少一個節點)。

+0

這正是我所需要的。謝謝。我沒有發佈我的XSLT代碼,因爲沒有任何值得發佈的東西。儘管我已經使用了XSLT好幾年了,但這是我第一個使用它的第一個項目,並且一直在學習很多關於XPath等的知識。我感謝您的幫助! – Robert 2010-06-04 19:14:14

1

試試這個:

account[paymentDue/amount[text() > 0]] 

也就是說,「把那有至少有一個量節點,在文本大於0至少一個支付節點的所有帳戶節點」。

不會捕獲像有非數字值的錯誤,但它是一個開始。

+0

您將要使用'>',而不是'>'。或者,更好的是,'!=',只要這實際上是合適的。 – 2010-06-04 17:54:09

+0

你絕對正確。感謝您對此的更正。 – 2010-06-04 20:23:52

+0

@ Robert-Rossney:上面評論中的陳述是不真實的。不僅''''*可以被使用,但它更具可讀性並且被優先考慮!請考慮編輯或刪除您的評論! – 2010-06-05 13:12:19

相關問題