我有一個XSLT程序,我試圖從for-each循環中獲取計數的總和。但它只返回最後一個循環總和。請找到下面部分XSLTXSLT:從每個循環中獲取計數總和
<xsl:for-each select = "/PURCHASE_ORDER_DISPATCH/MsgData/Transaction/PO_POD_HDR_EVW1/PO_ID">
<xsl:variable name = "N1Count" select = "count(..)"/>
<xsl:variable name = "PO1Count" select = "count(../PO_POD_LN_EVW1)"/>
<xsl:variable name = "TotalSeg">
<xsl:value-of select = "normalize-space((2 * $N1Count) + $PO1Count)"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"/>
</xsl:variable>
<EDI_TXN_850P.VERSION_1:EDI_FLD_96>
<xsl:value-of select="normalize-space($TotalSeg + 5.0)"/>
</EDI_TXN_850P.VERSION_1:EDI_FLD_96>
</xsl:for-each>
在爲N1和PO1上述for-each循環基本上,我得到計數,然後進行一些計算後,試圖分配((2 * $ N1Count) + $ PO1Count)到$ TotalSeg變量。問題在於它只獲取最新/最近的大部分循環。例如,如果我有兩個循環可以通過,比如說第一個循環中的$ N1Count = 2,$ PO1Count = 3,$ N1Count = 2,$ PO1Count = 5秒,那麼$ TotalSeg只會被賦值((2 * 2)+5)= 9(第二循環值)而不是((2 * 4)+8)= 16(所有值的總和)。
我如何使用XSLT做到這一點。
感謝
請顯示您的XML輸入示例。一般來說,您可以直接從它們的父/祖先中總結/計算節點,而不需要xsl:for-each。 –
爲什麼計數(..)會返回除1以外的任何東西? –