Source XML:
<documents> <document> <id>3</id> </document> <document> <id>7</id> </document> <document> <id>1</id> </document> </documents>
5 Réponses :
avoir une gandonnée sur ce lien. Il utilise une fonction mathématique: max (). p>
Il existe un lien pour la source pour cette fonction et explique comment il peut être mis en œuvre p>
http://www.exslt.org/math/functions/max/ index.html p>
J'espère que cela vous aide p>
Et après la mise en œuvre de cela, vous pouvez faire quelque chose comme ceci: / Documents / Document / ID [Numéro (Child :: Text ())
Autant que je sache, il est soutenu par plusieurs processeurs XSLT, mais pas par .NET ... Je manque quelque chose?
@Restuts, j'ai besoin du nœud de document, je ne devrais-t-il pas être plus utile: / Documents / Document [Numéro [Numéro (ID / Child :: Text ()) = Math: max (numéro (numéro / enfant :: texte ())) ]
Malheureusement, ni XPath 1.0 ou XPath 2.0 définissent une fonction de tri (). Cependant, la plupart des implémentations em> ont une sorte. Par exemple,
Vous pouvez utiliser le s'il y en a plusieurs Valeurs d'identification maximales dans le document Le code ci-dessus renvoie le premier. Si vous voulez le dernier élément avec un ID maximum, vous pouvez utiliser P> précédent code> et
suivi des axes xpath pour vérifier s'il n'y a pas de valeur supérieure:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<root>
<xsl:value-of
select="/documents/document/id[not(. <= preceding::document/id)
and not(. <= following::document/id)]"/>
</root>
</xsl:template>
</xsl:stylesheet>
Cela ne vous donnerait-il pas seulement le premier que celui-ci est tombé sur celui qui était plus élevé que celui qui a précédé et celui qui l'après?
documents/document[not(../document/id > id)]/id
+1 Pour une expression maximale XPath 1,0 la plus courte et correcte, outre la complexité quadratique ...
Merci, bonne solution, vous devriez obtenir des points bonus pour celui-ci!
En plus de Nick Jones XPath 1.0 Réponse correcte, dans XPath 2.0:
/documents/document[id = max(../document/id)]