Cal*_*ass 1 xml xslt xslt-2.0 xpath-2.0
我希望在每次迭代 for-each 时将变量的值附加到自身,问题是我不确定如何解决这个问题。这是我目前拥有的:
<xsl:variable name="lineQty" select="0" />
<xsl:for-each select="/*/*/*/*/*/xsales:CustInvoiceTrans">
<xsl:value-of select="$lineQty + (xsales:LineNum * xsales:Qty)" />
</xsl:for-each>
<test>
<xsl:value-of select="$lineQty" />
</test>
Run Code Online (Sandbox Code Playgroud)
这只是输出 0
我将其更改为以下内容:
<xsl:variable name="lineQty">
<xsl:for-each select="/*/*/*/*/*/xsales:CustInvoiceTrans">
<xsl:value-of select="xsales:LineNum * xsales:Qty" />
</xsl:for-each>
</xsl:variable>
Run Code Online (Sandbox Code Playgroud)
但这输出12345. 这样做的原因是它完成了 1x1、2x1、3x1、4x1、5x1,因为我的 5 行每行的数量都是 1。所以现在需要发生的就是将这些值相加,这可能吗?
您在使用 XSLT 2.0 吗?如果是这样,试试这个:
<xsl:variable name="seq" as="xs:double*">
<xsl:for-each select="/*/*/*/*/*/xsales:CustInvoiceTrans">
<xsl:sequence select="xs:double(xsales:LineNum) * xs:double(xsales:Qty)"/>
</xsl:for-each>
</xsl:variable>
<test>
<xsl:value-of select="sum($seq)"/>
</test>
Run Code Online (Sandbox Code Playgroud)
编辑
@Markus 建议使用更短的版本:
<test>
<xsl:value-of select="sum(/*/*/*/*/*/xsales:CustInvoiceTrans/(xs:double(xsales:LineNum) * xs:double(xsales:Qty)))" />
</test>
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
| 归档时间: |
|
| 查看次数: |
2906 次 |
| 最近记录: |