Этот вопрос сформулирован неверно, а предоставленный "XML-документ" сформирован некорректно!
Обратите внимание, что обычно бессмысленно спрашивать о максимуме набора чисел . Может быть более одного числа с наибольшим значением. Поэтому в приведенных ниже решениях показан только первый элемент с максимальным значением.
Это одно из возможных решений XSLT 1.0 :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:variable name="vNameMaxCount">
<xsl:for-each select="*/*">
<xsl:sort select="count(*)" data-type="number"
order="descending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="concat(name(),'+', count(*))"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
One element with maximum children is: <xsl:text/>
<xsl:value-of select="substring-before($vNameMaxCount, '+')"/>
Maximum number of children: <xsl:text/>
<xsl:value-of select="substring-after($vNameMaxCount, '+')"/>
</xsl:template>
</xsl:stylesheet>
когда указанное преобразование применяется к следующему XML-документу (полученному из документа, предоставленного после 10 минут, чтобы сделать его правильно сформированным!):
<ROOT>
<MYNODES>
<MYNODE>A</MYNODE>
<MYNODE>B</MYNODE>
<MYNODE>C</MYNODE>
<MYNODE>D</MYNODE>
</MYNODES>
<DOCS>
<DOC>1</DOC>
<DOC>2</DOC>
<DOC>3</DOC>
</DOCS>
<PICS>
<PIC>a.jpeg</PIC>
<PIC>b.jpeg</PIC>
<PIC>c.jpeg</PIC>
<PIC>d.jpeg</PIC>
<PIC>e.jpeg</PIC>
</PICS>
</ROOT>
желаемый результат получен
One element with maximum children is: PICS
Maximum number of children: 5
Решение XSLT 2.0 (на самом деле это просто решение XPath 2.0):
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:sequence select=
"for $vmaxChildrein in max(/*/*/count(*)),
$vmaxNode in */*[count(*) = $vmaxChildrein][1]
return
(name($vmaxNode),
'has the max no of children:',
$vmaxChildrein
)
"/>
</xsl:template>
</xsl:stylesheet>
когда это преобразование применяется к вышеуказанному документу, получается желаемый результат:
PICS has the max no of children: 5
Для нахождения максимума более хитрых свойств , которые нельзя сразу выразить как выражение XPath и которые используются в <xsl:sort>
, , используйте функцию f:maximum()
FXSL.