使用XML中的XSLT进行动态数据操作
我不会使用XSLT,不会太久。我了解到XSLT的变量不能动态更新,因此如何执行以下任务 我想将购买和销售相加,并将它们放入一个变量中,然后根据这些值做出一些决策。(例如,如果购买量大于销售量,则采取措施;如果购买量大于销售量,则采取措施)使用XML中的XSLT进行动态数据操作,xml,xslt,Xml,Xslt,我不会使用XSLT,不会太久。我了解到XSLT的变量不能动态更新,因此如何执行以下任务 我想将购买和销售相加,并将它们放入一个变量中,然后根据这些值做出一些决策。(例如,如果购买量大于销售量,则采取措施;如果购买量大于销售量,则采取措施) 100 100 19.16 12.94 0.67 2.74 71.95 61.54 3.62 14.72 8.80 1.22 -4.28 6.53 如果有人知道,请帮助我。XSL变量是更多常量:一旦设置,它们的值就不能更改。更改变量的唯一方法是使用递归模板
100
100
19.16
12.94
0.67
2.74
71.95
61.54
3.62
14.72
8.80
1.22
-4.28
6.53
如果有人知道,请帮助我。XSL变量是更多常量:一旦设置,它们的值就不能更改。更改变量的唯一方法是使用递归模板,并使用命名参数保存当前和 或者,如果XSLT没有
sum
函数,您也会这样做
<xsl:variable name="$purchase-total" select="sum(col[@attr2='Purchase'])" />
<xsl:variable name="$sales-total" select="sum(col[@attr2='Sales'])" />
<xsl:choose>
<xsl:when test="$purchase-total > $sales-total">
<!-- Do something -->
</xsl:when>
<xsl:otherwise>
<!-- Do something -->
</xsl:otherwise>
</xsl:choose>
您可以计算@Eric示例中所示的总和 您在评论中提出的问题:要计算
x
的绝对值,请使用以下XPath表达式:
(x > 0)*x - not(x > 0)*x
例如:
4.28
使用提供的XML文档
<xsl:variable name="x" select="(/*/*/col[@attr2='Purchase'])[position()=last()]"/>
<xsl:value-of select="($x > 0)*$x - not($x > 0)*$x"/>
谢谢你的快速申请,效果很好。我需要购买和销售的绝对金额。我不能在这里使用abs功能?sum(arg(number(col[@attr2='Sales']))是否还有其他方法可以使用它。
arg()
?你的意思是不是abs()
?不,我认为您不能:abs()
不返回节点集。你为什么要绝对数?对不起!它是abs()。在购买/销售中有'-'价值。我只想要购买/销售的ABS值。那么我该怎么做呢?不应该使用node-set()
函数。这是xslt的扩展。谢谢回复。你能告诉我这里的“x”是什么吗?我尝试将col[@attr2='Sales']作为“x”,但它不起作用。如果您提供一点细节,那么它将非常有用。@Imrul:我已经更新了我的答案,以演示如何使用此XPath表达式。您可能没有选择正确的节点$x——请输出此值以确保您选择的是正确的节点。
4.28