从XSLT中的多个字段中获取最高值

时间:2014-01-30 09:27:41

标签: xml xslt xpath

我希望让xslt抓住每个字段的出现,在这种情况下是//字段,然后找到保存的最大值并输出......就像下面的工作一样?我之前使用过similair,但我对sort select'“value”有点不确定

<xsl:choose>
    <xsl:when test="count(//field1) &gt; 0">
        <xsl:for-each select="//field1">
            <xsl:sort select="value" order="descending" />
                <xsl:if test="position() = 1">
                    <xsl:value-of select="."/>
                </xsl:if>
        </xsl:for-each>
    </xsl:when>
    <xsl:otherwise>0</xsl:otherwise>
</xsl:choose>

xml的格式如下所示

<1>
   <2>
       <field>125</field>
   </2>
</1>
<1>
   <2>
       <field>10</field>
   </2>
</1>
<1>
   <2>
       <field>0</field>
   </2>
</1>

(不是我选择的XML格式,但它是我被抛弃使用...在msot情况下这个字段出现28次,但我总是需要最高值。

2 个答案:

答案 0 :(得分:1)

尝试使用max() ...

<xsl:value-of select="max(//field)"/>

答案 1 :(得分:1)

不确定XSLT 2,但EXSLT提供math:max

<h1>Max value is <xsl:value-of select='math:max(//field)' /></h1>

http://www.xmlplayground.com/3D3tUE