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] Utilisation de la fonction text() pour localiser les noeuds texte d'un xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut [XSLT] Utilisation de la fonction text() pour localiser les noeuds texte d'un xml
    Bonjour,

    En faisant un petit test d'une transformation xsl, j'ai essayé de transformer tous les noeuds texte en <TEXTE>valeur</TEXTE>, pour que par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8"?>
    <Root>
    <Bonjour>Bébé</Bonjour>
    <Transaction>Pouét</Transaction>
    </Root>
    Donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8"?>
    <Root>
    <Bonjour><TEXT>Bébé</TEXT></Bonjour>
    <Transaction><TEXT>Pouét<TEXT></Transaction>
    </Root>
    Donc j'ai écrit une petite feuille 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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output 
      method="xml"
      encoding="UTF-8"
      indent="yes"/>
     
     <!-- On traite l'élément / attribut courant -->
     
     <xsl:template match="node() | @*">
    	<xsl:copy>
    		<xsl:apply-templates select="node() | @*"/>
    	</xsl:copy>
    </xsl:template>
     
    <xsl:template match="text()">
    	<xsl:element name="TEXT">
    		<xsl:value-of select="."/>
    	</xsl:element>
    </xsl:template>
     
    </xsl:stylesheet>
    Mais ca me donne cela :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <Root>
    <TEXT>
    </TEXT>
    <Bonjour>
    <TEXT>Bébé</TEXT>
    </Bonjour>
    <TEXT>
    </TEXT>
    <Transaction>
    <TEXT>Pouét</TEXT>
    </Transaction>
    <TEXT>
    </TEXT>
    </Root>
    Il considère donc des noeuds texte en plus de ceux existant.

    Est-ce normal?

    Merci :-)

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par thierry_b Voir le message

    Il considère donc des noeuds texte en plus de ceux existant.

    Est-ce normal?
    Il ne considère pas de noeud texte supplémentaire mais, au vu de ton xml, l'indentation n'a pas été faite correctement mais à l'aide de retour à la ligne hors un retour à la ligne est considéré comme un élément de texte (encore que cette interprétation n'est pas vrai pour tout les proc) d'où ton pb.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut re
    Re,

    Je ne comprends pas comment on peut indenter un XML sans retour à la ligne en fait.

    Merci :-)

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Ca depend de l'interface que tu utilises en fait
    Beaucoup d'outils gère une indentation automatique, tu peux aussi demandé une indetation automatique en sortie d'un xslt.
    Franchement je ne me suis jamais préoccupé des détails mais ton problème est là.Ce n'est pas le XSLT qui fontionne mal c'est ton xml qui a des noeuds textes non désirés

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut re
    Ha ok.

    Merci :-)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Tu pourras obtenir quelques informations supplémentaires dans ce post.

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut Re
    Re,

    Je te remercie :-)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/02/2011, 18h59
  2. Réponses: 1
    Dernier message: 10/01/2007, 22h52
  3. [XSLT] appel d'une fonction javascript "onchange" d'un input text
    Par loukili81 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 25/12/2006, 19h14
  4. Réponses: 8
    Dernier message: 29/06/2006, 16h37
  5. Réponses: 1
    Dernier message: 09/05/2006, 21h01

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