Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XML中的XSLT进行动态数据操作_Xml_Xslt - Fatal编程技术网

使用XML中的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变量是更多常量:一旦设置,它们的值就不能更改。更改变量的唯一方法是使用递归模板

我不会使用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变量是更多常量:一旦设置,它们的值就不能更改。更改变量的唯一方法是使用递归模板,并使用命名参数保存当前和

或者,如果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 &gt; $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