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 :

[XPATH] Recupération du nième noeud d'un tri


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Points : 26
    Points
    26
    Par défaut [XPATH] Recupération du nième noeud d'un tri
    Bonjour à tous

    Une petite question un peu bête peux être, j'aimerai savoir si en XPATH on a la possibilité de
    - récupérer le nième élément d'un tri.
    - savoir si on est le nième élément du tri.

    fichier xml
    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
     
    <DE>
     <APP>
      <NAME>unnom</NAME>
      ...
     </APP>
     <APP>
      <NAME>unautrenom</NAME>
      ...
     </APP>
     <APP>
      <NAME>underniernom</NAME>
      ...
     </APP>
    </DE>
    fichier xslt
    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
    16
    17
    18
    19
    20
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
        <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
        <xsl:template match="/">
           <root>
                    <-- Appliquer le template sur le nième -->
                    <-- Non fonctionnel car test la position sur le fichier source -->
                    <xsl:apply-templates select="DE/APP[x]" >
                           <xsl:sort select="NAME"/>                
                    </xsl:apply-templates>
           </root>
        </xsl:template>
        <xsl:template match="APP">
           <-- Savoir si on est le nième -->
           <-- Non fonctionnel car test la position sur le fichier source -->
           <xsl:if test="current()=.[position()=x]">
           ...
           </xsl:if>
        </xsl:template>
    </xsl:stylesheet>
    Une des solutions est de le faire en 2 transformations mais c est assez lourd.

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    il suffit d'utiliser la fonction position(), qui donne le rang du noeud courant dans la liste des noeuds sélectionnés par un apply-templates ou un for-each. Par exemple, pour ne récupérer que le troisième noeud APP après un tri par le nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	<xsl:template match="/DE">
    		<xsl:copy>
    			<xsl:for-each select="APP">
    				<xsl:sort select="NAME"/>
    				<xsl:variable name="nième" select="position()"/>
    				<xsl:if test="$nième = 3">
    					<xsl:copy-of select="."/>				
    				</xsl:if>
    			</xsl:for-each>
    		</xsl:copy>
    	</xsl:template>

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Points : 26
    Points
    26
    Par défaut
    Je te remercie GrandFather , cela a commencé à répondre à mon problème car bien évidement je l'avais simplifié.

    Maintenant je m'attaque à la "Méthode Muench" .

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

Discussions similaires

  1. [XPATH] Position d'un noeud par rapport à la racine ?
    Par DemonKN dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/10/2008, 18h51
  2. [XPATH]Concatenation de deux noeud
    Par frvallee dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 20/11/2007, 15h33
  3. [XPath] Sélection d'un noeud fils du noeud courant
    Par hobotalker dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/06/2007, 15h55
  4. [XPath] requete dans un noeud contextuel
    Par riccco dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 20/04/2007, 13h45
  5. Réponses: 4
    Dernier message: 01/06/2006, 14h58

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