我想获得索引最低的medias
节点的代码。源XML看起来类似于:
<item>
<medias>
<index>999997</index>
<code>0001</code>
</medias>
<medias>
<index>1</index>
<code>0002</code>
</medias>
<medias>
<index>999998</index>
<code>0003</code>
</medias>
<medias>
<index>999999</index>
<code>0004</code>
</medias>
</item>
在我的XSLT中,我尝试了这个:
<xsl:variable name="minIndex" select="math:min(item/medias/index)" />
<xsl:value-of select="item/medias[index=$minIndex]/code" />
但由于某些原因,minIndex
变量并未获得所有值的最低值,而只是第一个节点的值,在本例中为999997
。
在排序节点时,值正确排序:
<xsl:for-each select="item/medias">
<xsl:sort select="index" />
<xsl:value-of select="." /><xsl:text>,</xsl:text>
</xsl:for-each>
输出:
1,999997,999998,999999
使用math:min
时还有其他什么需要注意吗?我还尝试在我的选择结尾添加/text()
(index
之后),但这也不起作用。
编辑:我正在使用Java编译我的XSL转换器,只使用这段代码并将XSLT文件作为源代码:
Transformer transformer = TransformerFactory.newInstance().newTransformer(xsltSource);
答案 0 :(得分:0)
当明确指定名称空间以使用EXSLT扩展时,DF[paste0("X", cutOffYear+1:forecast_years)]
和math:min
都可以完成工作。
math:lowest
答案 1 :(得分:0)
math:min(...)
,例如在Java中(正是 - math.min(...)
)。
只写min(...)
。
我试过这个并得到了正确的结果。