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]créer une boucle


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut [XSLT]créer une boucle
    Bonjour à tous,
    voila encore une petite question, l'utilise depuis peu l'xslt pour faire des échanges entre deux système et j'ai un petit problème
    voici un bout de xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <section name="text">
        <a name="A">coucou</a>
        <a name="B">toto</a>
        <a name="C">titi</a>
        <a name="A">coucou2</a>
        <a name="B">toto2</a>
        <a name="C">titi2</a>
    </section>
    et je souhaite obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <NEW_ELEMENT>
        <A>coucou</A>
        <B>toto</B>
        <C>titi</C>
    </NEW_ELEMENT>
    <NEW_ELEMENT>
        <A>coucou2</A>
        <B>toto2</B>
        <C>titi2</C>
    </NEW_ELEMENT>
    j'ai pensé a faire cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:for-each select=".//a">
        <xsl:if test="@name='A'"><NEW_ELEMENT></xsl:if>
        <xsl:element name="{@name}"> <xsl:value-of select="."/></xsl:element>
       <xsl:if test="@name='C'"></NEW_ELEMENT></xsl:if>	
    </xsl:for-each>
    mais cela ne fonctionne pas car il prend <NEW_ELEMENT> comme des balises et ne trouve pas tous de suite </NEW_ELEMENT> d'ou l'erreur.
    donc comment lui faire ecrire <NEW_ELEMENT> sans qu'il l'analyse (jai essayé &lt; et &gt; mais cela ne fonctionne pas après (Mon appli ne prend pas &lt;NEW_ELEMENT&gt; comme une balise
    merci

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !!

    essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:text disable-output-escaping="yes">&lt;NEW_ELEMENT&gt;</xsl:text>
    <xsl:element name="{@name}"> <xsl:value-of select="."/></xsl:element>
    <xsl:text disable-output-escaping="yes">&lt;/NEW_ELEMENT&gt;</xsl:text>
    en même temps, je me demande si tu vas pouvoir utliser @name pour cet attribut, il te faudra peut-être réutiliser disable-output-escaping...

  3. #3
    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,

    tu peux écrire ton code de telle façon que tu puisses te passer des xsl:if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:for-each select=".//a[@name='A']"> 
        <NEW_ELEMENT>
          <A><xsl:value-of select="."/></A> 
          <B><xsl:value-of select="following-sibling::a[@name='B'][1]"/></B>
          <C><xsl:value-of select="following-sibling::a[@name='C'][1]"/></C>
       </NEW_ELEMENT>
    </xsl:for-each>

  4. #4
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    Encore Une fois merci à tous
    je viens d'acheter "Comprendre XSLT" chez O'REILLY et pense que je vais faire de grand progrès

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [XSLT] Comment créer une boucle
    Par Kefass dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 28/02/2007, 21h57
  3. [XSLT] créer une feuille de style
    Par Robert32 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 21/12/2006, 10h31
  4. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 15h48
  5. Comment créer une boucle ?
    Par kikica dans le forum Langage
    Réponses: 5
    Dernier message: 15/03/2006, 21h02

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