我有这样的节点:
<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
值?
答案 0 :(得分:1)
使用for .. return ..
sum(for $node in current-group() return $node/(@numberOfVisits .. $units/ multiplier/@*[name() = $node/@units]))
表达式