列表中的 XSLT math:min() 不起作用,而排序不起作用



我想获取索引最低的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);

显式指定要使用 EXSLT 扩展的命名空间时,math:minmath:lowest 都会完成这项工作。

<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:math="http://exslt.org/math">
                                       ...
例如在

Java中使用math:min(...)(确切地说是-math.min(...))。

min(...).

我试过这个并得到了正确的结果。

相关内容

  • 没有找到相关文章

最新更新