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 :

récupération d'attribut pour réinjection dans un élément sous forme de texte


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 9
    Points
    9
    Par défaut récupération d'attribut pour réinjection dans un élément sous forme de texte
    Bonjour

    Je suis en train de créer un xslt de transformation de xml vers xml.
    Je bute sur un problème particulier, je voudrais extraire un attribut pour le réinjecté en texte dans un autre élément.

    Voici en exemple ce que je veux faire :
    fichier source :
    <A NUM="2.03"><B>Ceci est un texte</B></A>
    <A NUM="2.05"><B>Ceci est un texte</B></A>
    <A NUM="2.07"><B>Ceci est un texte</B></A>

    fichier cible :
    <A NUM="2.03"><B>2.03 - Ceci est un texte</B></A>
    <A NUM="2.05"><B>2.04 - Ceci est un texte</B></A>
    <A NUM="2.07"><B>2.04 - Ceci est un texte</B></A>

    J'ai essayé ceci, mais cela ne marche pas.
    <xsl:template match="B">
    <xsl:element name="B">
    <xsl:value-of select="../A[@NUM]"/>
    <xsl:text> - </xsl:text>
    <xsl:apply-templates/>
    </xsl:element>
    </xsl:template>


    quelqu'un aurait-il une idée ?

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Essayez plutôt ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="B"><B><xsl:value-of select="../A/@NUM"/> - <xsl:apply-templates/></B></xsl:template>
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 9
    Points
    9
    Par défaut merci
    Tu m'a donné une partie de la réponse.
    Il me fallait aussi remonter d'un niveau sinon je suis dans A et pas je ne peux pas sélectionner A

    La bonne réponse c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="B"><B><xsl:value-of select="../../A/@NUM"/> - <xsl:apply-templates/></B></xsl:template>
    Merci pour la réponse.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 9
    Points
    9
    Par défaut Correction
    Je me permet d'amener un rectificatif à la résolution de ce problème.

    Le réponse apportée ne fonctionne pas correctement, si le modèle source est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <DOC>
    <A NUM="2.03"><B>Ceci est un texte</B></A>
    <A NUM="2.05"><B>Ceci est un texte</B></A>
    <A NUM="2.07"><B>Ceci est un texte</B></A>
     </DOC>
    Le résultat cible sera le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <DOC>
    <A NUM="2.03"><B>2.03 - Ceci est un texte</B></A>
    <A NUM="2.05"><B>2.03 - Ceci est un texte</B></A>
    <A NUM="2.07"><B>2.03 - Ceci est un texte</B></A>
    </DOC>
    et non pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <DOC>
    <A NUM="2.03"><B>2.03 - Ceci est un texte</B></A>
    <A NUM="2.05"><B>2.05 - Ceci est un texte</B></A>
    <A NUM="2.07"><B>2.07 - Ceci est un texte</B></A>
    </DOC>
    En effet la solution : permet de remonter au niveau du noeud <DOC> et selectionne le premier noeud <A> dans tous les cas et non pas le noeud <A> du noeud <B>. Ce qui ne répond pas au problème initial.

    Pour répondre au problème initial, il faut sélectionner le noeud <A> du noeud <B> ou nous sommes positionnée.

    Voici la bonne réponse au problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select="ancestor::A/@NUM"
    Merci de m'avoir mis sur la piste précédemment.
    J'espère que cette réponse servira à d'autres ...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/05/2011, 09h54
  2. Réponses: 0
    Dernier message: 07/05/2011, 22h30
  3. [Plugin GMF] Récupération des attributs pour les réutiliser
    Par Jihane22 dans le forum Eclipse Modeling
    Réponses: 2
    Dernier message: 15/09/2010, 10h51
  4. [POO] types d'attributs // pour insérer dans une BD
    Par No3l_tek dans le forum Langage
    Réponses: 3
    Dernier message: 07/05/2008, 14h08
  5. Récupération de données pour mettre dans un fichier .txt
    Par lince102 dans le forum Interfaces Graphiques
    Réponses: 10
    Dernier message: 24/01/2008, 11h29

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