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 :

[XPATH] supprimer les espaces dans une chaîne


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut [XPATH] supprimer les espaces dans une chaîne
    Bonjour,
    je n'arrive pas a avance dans ce petit truc qui a l'air pourtant simple...
    je ne connais pas le XSL et j'ai du mal...

    il faut que je fasse un "appel de fonction" avec le call template .
    la fonction doit prendre en parametre une variable qui contient par exemple du texte avec beaucoup d'espaces et qui a la sortie me rend la var sans espace... donc en gros tout collé

    init: var ="bonjour toi je suis la ba"
    sortie var="bonjourtoijsuislaba"


    quelqu'un pour m'aider?
    Merci
    Joey

  2. #2
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut
    salut encore,
    je pense que si je boucle sur la variable et compare chaque lettre a " " je pourrais restituer la variable du coup sans ces espaces? c'est possible?? comment faire??

    SVP au moins un indice!!! ou une inde svp

    joey

  3. #3
    Expert confirmé
    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
    Par défaut
    Bonjour,
    Citation Envoyé par joeyd Voir le message
    SVP au moins un indice!!! ou une inde svp
    Déjà commencer par consulter la FAQ XML.
    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

  4. #4
    Membre émérite
    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
    Par défaut
    la fonction translate fait cela très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select = "translate('AB CA BC ABC',' ','')" />

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut
    Merci,
    effectivement une fois que je connais la chaine c'est pratque d'utiliser translate.
    Mais si ca a affaire a une variable?
    il faut boucle sur toute la string non?

    Ce n'est pas que je veux faire un script interactif... remplir la variable en dur me va toujour. c'est suppose etre un programme trrres simple, de debutant!!!
    Je n'ai jamais programme en XSL encore, et je me dis que cet exemple m'apprendra bcp!

    Merci pour votre aide

    j

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    La fonction translate() peut, comme toutes les fonctions, prendre des variables ou des chemins XPATH en entrée.

  7. #7
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut
    ok,

    par exemple le XML suivant:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="trimtrans.xsl"?>
    <racine>
    <enfant>
    je pense que
    </enfant>
    </racine>


    voila le xsl que je pense etre bon mais qui ne marche pas... (je suis vraiment debutant)

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">
    <xsl:call-template name="trimming"/>
    <xsl:with-param name="var" select="/racine/enfant"/>
    </xsl:template>

    <xsl:template name="trimming">
    <xsl:param name="var"/>
    <xsl:value-of select = "translate('$var',' ','')" />
    </xsl:template>
    </xsl:stylesheet>


    comment changer la valeur de la variable?
    comment l'imprimer apres?

    Merci encore

  8. #8
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut
    si je test cette ligne

    <xsl:value-of select = "translate('racine/enfant',' ','')" />
    j'obtient en sortie uniquement racine/enfant!!!!

    et donc pour confirmer j'ai ecrit

    <xsl:value-of select= "translate('racine/enfant/text()','e','E')" />
    j'obtient racinE/Enfant/tExt()

    je n'y arrive vraiment pas!

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Ce qui est entre simples quotes est interprété comme une chaine de caractères.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select = "translate($var,' ','')" />
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select = "translate(/racine/enfant,' ','')" />

  10. #10
    Membre émérite
    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
    Par défaut
    sinon une feuille de style qui répond à ton soucis mais utilise la notion de template
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:template match="/">
    <xsl:apply-templates select="/racine/enfant"/>
    </xsl:template>
     
    <xsl:template match="enfant">
    <xsl:value-of select = "translate(.,' ','')" />
    </xsl:template>
    </xsl:stylesheet>

  11. #11
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut
    salutfraoustin et Morbo,

    Merci pour vos reponses...
    maintenant en rajoutant le bout de code de fraoustin par exemple (ou meme mon ancien avec les precisions de Morbo) j'obtiens (en theorie) ce qu'il faut mai s je n'imprime pas le contenu... l'ideal pour moi serait de modifier une variable contenant la phrase a modifier.
    comment faire pour imprimer le contanu de ce que j'ai change? ou en fait d'imprimer la variable une fois celle ci modifiee?

    Merci encore pour votre aide

    Joey

  12. #12
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut
    le truc c ke meme si jinsere un ligne quelconque rien ne se passe... j'ai une page grise!!

    je suis desespere!!

  13. #13
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut
    je viens de vois qu'on ne peux pas modifier une variable enfin le contenu d'une variable quoi.... comment est-ce possible? que faire dans ce genre de cas?

    Merci

  14. #14
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    [QUOTE=joeyd;2568101]le truc c ke meme si jinsere un ligne quelconque rien ne se passe... j'ai une page grise!!

    QUOTE]

    peux tu être plus clair stp?

  15. #15
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Par défaut
    je sais c'est un peu léger comme solution, mais ça marche

    tu mets sinon tous les caractères utilisés en entrée (à la fin tu mets tous les caractères à supprimer, genre tiret, espace, etc...)
    après tu met tous les caractères utilisés en sortie (à la fin tu ne mets pas de caractère correspondant)

    <xsl:value-of select="translate($chaineatraiter,'abcedfghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 _','abcedfghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')"/>

Discussions similaires

  1. Supprimer les espaces dans une chaîne de caractère
    Par Med_be dans le forum Débuter
    Réponses: 7
    Dernier message: 15/11/2010, 03h17
  2. Supprimer les espaces dans une chaîne
    Par karaz_karaz dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 28/05/2008, 16h27
  3. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  4. Effacer les espaces dans une chaîne de caractères
    Par JohnnyWalk dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 19/07/2007, 14h13
  5. supprimer les espaces dans une chaîne de caratères.
    Par Empty_body dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2006, 18h43

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