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 :

[XSL]appliquer la fonction substring sur une valeur récupéré


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 142
    Points : 87
    Points
    87
    Par défaut [XSL]appliquer la fonction substring sur une valeur récupéré
    Bonjour,

    je récupère une valeur de mon fichier XML comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xsl:template match="cellule">
    	<xsl:value-of select="@data" />
    	<xsl:text>début</xsl:text>
    </xsl:template>
    mais en fait dans ce champ récupéré j'aimerais remplacer "toto" par "titi".
    il y à la fonction translate(txt, oldString, newString)

    comment faire pour que ma variable old soit en fait la valeur que je viens de récupérer dans data.

    Merci d'avance
    Le progrès commence par la communication!!!!

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    on comprend pas trop ta question puisqu on ne voit pas de variable old nul part dans ton code ni ou tu veux la mettre..

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 142
    Points : 87
    Points
    87
    Par défaut
    les variables old et new ne sont pas déclarées, ca peut etre une chaine quelquonque, mon problème est surtout pour la réutilisation d'un résultat je récupère une chaine de caractere et je souhaite appliquer le translate desssus

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:template match="cellule">
         <xsl:variable name="dataField"><xsl:value-of select="@data"/></xsl:variable>
         <xsl:value-of select="translate($dataField, "toto", "titi")"/>
         <xsl:text>debut</xsl:text>
    </xsl:template>
    Mais ca marche pas donc je suppose que j'ai mal réutiliser ma variable
    Le progrès commence par la communication!!!!

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    au lieu de mettre des " " " pour "toto" "titi"
    essaye avec des " ' "

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

    translate() ne sert pas à substituer une chaîne à une autre, mais un caractère à un autre; par exemple, pour afficher le contenu du noeud courant en majuscules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
    Dans ton cas, il faut utiliser d'autres fonctions XPath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="concat(substring-before(., 'toto'), 'titi', substring-after(., 'toto'))"/>
    Par contre, ça ne remplacera que la première occurrence de toto dans la chaîne. S'il y a plusieurs occurrences, il faut écrire une petite fonction récursive.
    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

  6. #6
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    un petit template s appellant tout seul si la fonction conatians() renvoit quelque chose, c est comme cela que je fais moi

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 142
    Points : 87
    Points
    87
    Par défaut
    j'ai réussi à mettre en place ma fnction récursive de substitution mais j'ai un autre problème,

    en fait je cherche à remplacer des caractères xml "&amp, &lt, ..." par leur valeur réelle "&, <, >, ...."
    donc en fait je cher les &amp que je remplace par <![cdata[&]]> dans mon xsl.

    Par contre quand je regarde mon résultat dans un fichier excel, au lieu de mon &, j'ai encore un &amp.

    J'ai déja tenter pas mal de chose pour éviter ca mais ca marche pas.

    Merci d'avance.
    Le progrès commence par la communication!!!!

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 142
    Points : 87
    Points
    87
    Par défaut
    j'ai trouvé, j'appliquais mal le !CDATA, c'est pas excel qui interprétait de nouveau les données.

    Merci à tous pour vos réponses.
    @+
    Le progrès commence par la communication!!!!

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

Discussions similaires

  1. [debutant] fonction qui retourne une valeur
    Par arnolpourri dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2006, 09h29
  2. Réponses: 4
    Dernier message: 12/06/2006, 11h46
  3. Trier sur une valeur de champs et non sur le nom du champs
    Par kamalkam dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/05/2006, 17h41
  4. Réponses: 3
    Dernier message: 22/12/2005, 11h20
  5. Réponses: 5
    Dernier message: 13/07/2005, 10h03

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