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 preceding-sibling


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Utilisation de preceding-sibling
    Bonjour,

    Je rencontre un problème avec une transformation XSLT.

    Je dispose d'un fichier xml de ce type :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <html>
    <body>
    	<table border="0" width="640" cellpadding="1" cellspacing="5">      
          <tr class="rt">
            <td colspan="3">A0</td>
          </tr>
          <tr class="rt">
            <td>B1</td>
            <td>B2</td>
            <td>B3</td>
          </tr>
          <tr class="rt">
            <td>C1</td>
            <td>C2</td>
            <td>C3</td>
          </tr>
    	  <tr>
            <td colspan="3">D0</td>
          </tr>
          <tr class="rt">
            <td>E1</td>
            <td>E2</td>
            <td>E3</td>
          </tr>
    	  <tr class="rt">
            <td colspan="3">F0</td>
          </tr>
          <tr class="rt">
            <td>G1</td>
            <td>G2</td>
            <td>G3</td>
          </tr>
          <tr class="rt">
            <td>H1</td>
            <td>H2</td>
            <td>H3</td>
          </tr>
    	</table>
    </body>
    </html>
    Et je souhaiterais afficher un tableau html de la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    A0 --- B1 --- B2 --- B3
    A0 --- C1 --- C2 --- C3
    D0 --- E1 --- E2 --- E3
    F0 --- G1 --- G2 --- G3
    F0 --- H1 --- H2 --- H3
    Pour cela, j'ai donc utilisé preceding-sibling :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:for-each select="//tr[@class='rt']">				
    	<xsl:if test="string-length(td[position()=2]/.)>0">
    		<xsl:choose>
    			<xsl:when test="preceding-sibling::tr/td/@colspan='3'">
    				<xsl:value-of select="preceding-sibling::tr/td/."/>
    			</xsl:when>
    		</xsl:choose>						
    		--- <xsl:value-of select="td[position()=1]/."/> --- <xsl:value-of select="td[position()=2]/."/> --- <xsl:value-of select="td[position()=3]/."/><br/>
    	</xsl:if>
    </xsl:for-each>
    J'obtiens le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    A0 --- B1 --- B2 --- B3
    A0 --- C1 --- C2 --- C3
    A0 --- E1 --- E2 --- E3
    A0 --- G1 --- G2 --- G3
    A0 --- H1 --- H2 --- H3
    Comment faire pour récupérer la bonne première valeur de chaque ligne : comment récupérer la valeur du tag tr[@colspan='3'] le plus proche (précédent) du tag tr en cours?


    Merci d'avance pour votre aide

  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,

    En utilisant les prédicats, il faut d'abord sélectionner les tr avec le bon colspan, puis prendre le premier de la sélection (preceding-sibling sélectionne les noeuds dans l'ordre inverse de celui du document) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="preceding-sibling::tr[td/@colspan='3'][1]/td"/>--- <xsl:value-of select="td[position()=1]/."/> --- <xsl:value-of select="td[position()=2]/."/> --- <xsl:value-of select="td[position()=3]/."/><br/>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    MERCI beaucoup pour votre réponse rapide !!

    lnhf38

+ 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. [XSLT] Compteur dans un "preceding-sibling::"
    Par loloajax dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 20/11/2006, 14h12
  3. [XSLT] Preceding sibling
    Par tommey dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/08/2006, 19h02
  4. Probleme de dénombrement (precedent-sibling ?)
    Par Phach dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 30/01/2006, 17h54
  5. [xml] Xpath besoin d'explication sur preceding-sibling::
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 10/01/2006, 09h32

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