Можно ли, с помощью XPath выражения получить максимальное значение какого либо тега

_RVK_

Новичок
Можно ли, с помощью XPath выражения получить максимальное значение какого либо тега

Ну например:
<?xml version="1.0"?>
<root>
<code>1</code>
<code>2</code>
<code>3</code>
...
<code>10</code>
</root>

Могу я получить сразу 10, или придется проходить по всем code?
 

chameleon

Новичок
чистым xpath никак.
PHP:
<xsl:template name="math:max">
   <xsl:param name="nodes"
              select="/.." />
   <xsl:choose>
      <xsl:when test="not($nodes)">NaN</xsl:when>
      <xsl:otherwise>
         <xsl:for-each select="$nodes">
            <xsl:sort data-type="number"
                      order="descending" />
            <xsl:if test="position() = 1">
               <xsl:value-of select="number(.)" />
            </xsl:if>
         </xsl:for-each>
      </xsl:otherwise>
   </xsl:choose>
</xsl:template>
 

jian

Guest
a eto dlya mazohistov :)
xml
Код:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="mazo.xsl"?>
<root>
<code>2</code>
<code>3</code>
<code>1</code>
<code>10</code>
<code>3</code>
<code>6</code>
</root>
xsl
Код:
<?xml version="1.0"?> 
<xsl_:_stylesheet 
      xmlns_:_xsl="http_:_//www.w3.org/1999/XSL/Transform" 
      version="1.0"> 
<xsl_:_strip-space elements="*" /> 
<xsl_:_output indent="yes" method="html" /> 

<xsl_:_template match="/"> 
  <xsl_:_apply-templates select="root/code[1]" mode="get_max"/> 
</xsl_:_template> 

<xsl_:_template match="code" mode="get_max"> 
 <xsl_:_param name="max" select="."/> 
 <xsl_:_param name="buffer" select="$max"/> 
  <xsl_:_if test="not(following-sibling_:__:_code[1])"> 
    <xsl_:_choose> 
    <xsl_:_when test="$buffer > $max"> 
     <xsl_:_value-of select="$buffer"/> 
    </xsl_:_when> 
    <xsl_:_otherwise> 
     <xsl_:_value-of select="$max"/> 
    </xsl_:_otherwise> 
    </xsl_:_choose> 
  </xsl_:_if> 
 <xsl_:_apply-templates select="following-sibling_:__:_code[1]" mode="get_max"> 
   <xsl_:_with-param name="buffer"> 
    <xsl_:_choose> 
    <xsl_:_when test="$buffer > $max"> 
     <xsl_:_value-of select="$buffer"/> 
    </xsl_:_when> 
    <xsl_:_otherwise> 
     <xsl_:_value-of select="$max"/> 
    </xsl_:_otherwise> 
    </xsl_:_choose> 
   </xsl_:_with-param> 
  </xsl_:_apply-templates> 
</xsl_:_template> 

</xsl_:_stylesheet>
rezultat
Код:
10
hehe
 

_RVK_

Новичок
Спасибо, не надо :) Я лучше в цикле прйдусь, и выберу максимальный
 
Сверху