我想获取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);