Cette question est mal formulée et la condition " Document XML 'n'est pas bien formé!
Notez qu'il il est généralement meaningle ss à poser sur le maximum d'un ensemble de nombres. Il peut y avoir plus d'un nombre avec la valeur la plus élevée. Par conséquent, les solutions ci-dessous montrent seulement le premier élément avec la valeur maximale.
C'est une solution XSLT 1.0 possible:
<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>
lorsque la transformation ci-dessus est appliquée sur le document XML suivant (produit à partir de celui fourni après avoir passé 10 minutes pour le rendre bien formé !):
<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>
le résultat recherché est produit
One element with maximum children is: PICS
Maximum number of children: 5
Une solution XSLT 2.0 (en fait juste un XPath 2.0 Soulution):
<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>
lorsque cette transformation est appliquée sur le document ci-dessus, le résultat recherché est produit:
PICS has the max no of children: 5
Pour trouver le maximum de propriétés plus délicates ne peut pas être immédiatement exprimé comme une expression XPath et utilisé dans <xsl:sort>
, utilisent la fonction f:maximum()
de FXSL.
Plus d'informations: J'ai trois nombres disons 1.0, 2.0, 5.0 .... Je n'ai pas de nœuds ensemble ... Je voudrais trouver au maximum de 1,0, 2,0 et 5,0 ..... –
Que voulez-vous dire 3 chiffres simples, l'être importé en tant que fichier dans xsl? – TStamper
Les 3 nombres sont-ils liés comme 3 variables différentes? Sont-ils intégrés dans une chaîne? Ou sont-ils le contenu de 3 nœuds différents? Plus d'informations sont nécessaires pour une réponse appropriée. –