IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT] fonction position()


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Par défaut [XSLT] fonction position()
    dans un template (choppé sur les tutoriaux de ce site) il y avait une sorte d'appel récursif du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <xsl:template name="total">
    <xsl:param name="noeuds" />
    <xsl:param name="s_total" />
     
    <xsl:choose>
    	<xsl:when test="$noeuds[position()>1]">
    	<xsl:call-template name = "total" >
    	<xsl:with-param name="noeuds" select="$noeuds[position()>1]"></xsl:with-param>
    	<xsl:with-param name="s_total" select="$s_total+(number($noeuds[1]/nb)*number($noeuds[1]/prix))"></xsl:with-param>
    	</xsl:call-template>
    	</xsl:when>
     
    	<xsl:otherwise>
    	total : <xsl:value-of select="$s_total+(number($noeuds[1]/nb)*number($noeuds[1]/prix))" />
    	</xsl:otherwise>
    J'ai trimmé comme une hyenne avant de comprendre que la fonction position() ne renvoit pas la position "absolue" du noeud dans l'arbre XML d'origine, mais bien la position dans la liste traitée.
    Le noeud de position 2 dans le premier appel au template devient le noeud de position 1 dans l'appel suivant.
    Donc $noeuds[1] parcours bien tous les éléments d'une liste que l'on décapite de son premier élément à chaque appel récursif...

    1/ est ce que ma déduction ci dessus est bien correcte ?

    2/ Il y a un endroit où c'est expliqué clairement ca ?
    Parceque
    "The position function returns a number equal to the context position from the expression evaluation context."
    ca veut rien dire aux premier abords.

  2. #2
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 7
    Par défaut
    Il me semble que tu as parfaitement compris

    quant à
    expression evaluation context
    , si mais il faut savoir que le contexte représente un node-set retourné après "filtrage" par ton expression et c'est donc bien la position dans ce node-set traité qui est retourné.

    il n'y a pas de vrai position absolue. tu peux faire un filtre qui prendra tous les noeuds du fichier XML et l'ordre dans ce node-set sera l'ordre du fichier (normalement hein et dependant de la structure de ton fichier )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT 1.0] XSLT: utilisation de la fonction position() dans <for-each> imbriqués
    Par bernidupont dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/05/2011, 21h33
  2. [XSLT] fonction avec retour
    Par goth dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/02/2006, 23h49
  3. [xslt] fonctions manipulations string
    Par gorgonite dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 23/01/2006, 09h46
  4. [XSLT] [PHP 5] fonction position()
    Par sharper dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/12/2005, 12h58
  5. [XSLT] Fonction xslt_create indéfinie
    Par ripou dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/10/2005, 22h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo