我有一个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以外的任何东西? –