XSL 2.0 - 对组的所有元素应用谓词

时间:2016-12-28 19:43:03

标签: xml xslt xpath

我有这样的节点:

<Node name="_1" W="0" n=".2" L="A" ProcessTime="56" units="ms"/>
<Node name="_2" W="0" n=".8" L="B" ProcessTime="6" units="us"/>

按属性L分组。我的目标是写一个单行来获取n * ProcessTime * units

的值

为了得到单位的乘数,我也有一个变量

<xsl:variable name="units">
    <multiplier ns="1E-9" ms="1E-3" us="1E-6"/>
</xsl:variable>

在for-each-group循环的分组范围内。

目前我有这样的表达:

<xsl:value-of select="sum(current-group()/(@numberOfVisits * @ProcessTime * $units/multiplier/@*[name()=current()/@units]))"/>

它有效,但仅使用第一个元素的@units值,将其应用于current-group()

的每个其他元素

问题是:如何使此表达式使用组中每个元素的单个@units值?

1 个答案:

答案 0 :(得分:1)

使用for .. return ..

sum(for $node in current-group() return $node/(@numberOfVisits .. $units/ multiplier/@*[name() = $node/@units]))表达式