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 :

Utilisation de following-sibling


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué Avatar de Laughing Man
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut Utilisation de following-sibling
    Bonjour à tous

    Après plusieurs heures de recherche, je me tourne vers la communauté (très active) de dvp afin de m'aider un peu.

    Je voudrais pouvoir utiliser following-sibling pour tester si un élément existe, et auquel cas récupérer un de ces fils.

    Voilà mon 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
    16
    17
    18
    19
     
    <base>
         <elem>
              <id>1</id>
              <nom>elem1</nom>
              <parent>0</parent>
         </elem>
         <elem>
              <id>2</id>
              <nom>elem2</nom>
              <parent>0</parent>
         </elem>
         ...
         <elem>
              <id>56</id>
              <nom>elem56</nom>
              <parent>2</parent>
         </elem>
    </base>
    J'aimerais récupérer le nom associé à un noeud, tester si un noeud frère de parent 0 existe, et auquel cas relancer mon template qui récupère le nom.
    Le template dans mon XSL est actuellement comme ça:

    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
    21
    22
     
    <xsl:template name="cellule">
    		<xsl:param name="nbElem" />
    			<xsl:choose>
    				<xsl:when test="$nbElem=0">
    					<div>
    						<xsl:attribute name="class">tr</xsl:attribute>
    						<xsl:attribute name="style">height: 50px;</xsl:attribute>
    						<xsl:text>*</xsl:text>
    					</div>
    					<div>
    						<xsl:attribute name="class">tr center-align</xsl:attribute>
    						<div>
    							<xsl:attribute name="class">td30</xsl:attribute>
    							<xsl:value-of select="/following-sibling::*/nom" /><!--Valeur nom du noeud-->
    						</div>
                                                    <!--Test prochain noeud-->
    						<xsl:call-template name="cellule">
    							<xsl:with-param name="nbElem" select="1" />
    						</xsl:call-template>
    					</div>
    				</xsl:when>
    Je remercie d'avance la (les) âme(s) charitable(s) qui m'aideront à régler ce problème.

  2. #2
    Membre habitué Avatar de Laughing Man
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Problème résolu finalement...

    Pour ceux que sa intéresse, voilà le XSL:

    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
    21
    22
    23
     
    <xsl:template name="cellule">
    		<xsl:param name="nbElem" />
    			<xsl:choose>
    				<xsl:when test="$nbElem mod 3 = 0">
    					<div>
    						<xsl:attribute name="class">tr</xsl:attribute>
    						<xsl:attribute name="style">height: 50px;</xsl:attribute>
    						<xsl:text> </xsl:text>
    					</div>
    					<div>
    						<xsl:attribute name="class">tr center-align</xsl:attribute>
    						<div>
    							<xsl:attribute name="class">td30</xsl:attribute>
    							<xsl:value-of select="/base/elem[position() = $nbElem+1]/nom" />
    						</div>
    						<xsl:if test="/base/elem/following-sibling::elem[position()=$nbElem+1]/parent=0">
    							<xsl:call-template name="cellule">
    								<xsl:with-param name="nbElem" select="$nbElem+1" />
    							</xsl:call-template>
    						</xsl:if>
    					</div>
    				</xsl:when>

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

Discussions similaires

  1. [XPATH 1.0] Utilisation des commandes following-sibling, preceding-sibling, parent & child
    Par lemoussel dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/01/2014, 08h07
  2. [XPATH 2.0] following-sibling (again) sur des attributs ?
    Par ThomasEscolan dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/05/2011, 19h00
  3. [XPATH 1.0] Problème utilisation following-sibling
    Par snkorp dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/04/2011, 16h03
  4. Utilisation de preceding-sibling
    Par lnhf38 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/02/2009, 15h46
  5. [XPATH] following-sibling probleme
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 01/12/2005, 15h02

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