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] Extraction de chaine de caractere


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Par défaut [XSLT] Extraction de chaine de caractere
    Bonjour,

    Voila, je dois recupérer le dernier caractere d'une chaine de caractere de longueur variable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <M>
      <toto>
         <chaine page="705"/> 
      </toto>
    </M>
    Ici je declare comme variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xsl:template match="M">  
    <xsl:variable name="x1"><xsl:value-of select="toto/chaine/@page"/></xsl:variable>
    <xsl:variable name="x2"><xsl:value-of select="substring($x1,string-length(x1)-0)"/></xsl:variable>
    </xsl:template>
    Il m'affiche :Mais si je suis dans le cas suivant, mon test ne marche plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <M>
      <toto>
         <chaine page="198231"/> 
      </toto>
    </M>
    Car il ne sais pas quel "1", en l'occurence, selectionner.
    Si quelqu'un peut m'aider, merci.
    [modéré par GrandFather - modification du titre]

  2. #2
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Par défaut
    J ai oublié le <xsl:value-of select="x2"/> à inserer apres les 2 declaration de variables.....

  3. #3
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 616
    Par défaut Re: [XSL FO] Chaine de caractere (saisie)
    Citation Envoyé par Hugo001
    ...
    Car il ne sais pas quel "1", en l'occurence, selectionner.
    comment ça ?
    tu as dit que tu cherches à récupérer le dernier chiffre de ton nombre, ce n'est pas ça ?

  4. #4
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Par défaut
    Je cherche a recupérer la chaine de caractere sans le dernier caractere de celle-ci.

    Dans un premier temps je recupére la derniere valeur de la chaine sachant que celle ci peut etre de longueur variable. Dans un second temps, j'effectue un substring-before pour ne selectionner que la chaine sans le dernier caractere.

    Exemple 85698751 je declare comme variable de nom x la chaine de caractere precedente.

    Je recupere le "1" avec : substring($x,string-length($x)-0) puis je fais un subtring-before et je recupere 8569875. C'est un peu tordu, mais je ne vois pas d autres solutions.

    Dans ce cas cela marche, mais si en debut de chaine et en fin de chaine il y a le meme caractere, lors du substring-before, le parser ne va pas savoir quel chaine de caractere saisir.
    Si il prend le caractere le plus a droite, cela marche, mais si il prend le caractere le plus a gauche, etant donne que c'est le premier et que avant il n'y en a pas, il ne va rien trouvé et ne rien afficher.

    Je dois trouver une autre methode, mais je ne vois pas d autre maniere.

  5. #5
    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
    Utilise la fonction XPath substring :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="substring($x1,1,string-length($x1) - 1)"/>
    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 habitué
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substring(chaine/@page,0,string-length(chaine/@page))
    par rapport au noeud toto.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 11
    Par défaut
    mince grandFather m'a devancé.
    Damned
    Petit scarabée deviendra gradnFather un jour (du moins il espère)

  8. #8
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Par défaut
    Ok merci, cela marcha a merveille, mais que signifie le ',1' ?

  9. #9
    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
    Citation Envoyé par gendalf37
    Petit scarabée deviendra gradnFather un jour (du moins il espère)
    Et bien commence déjà par répondre à sa question...
    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

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 11
    Par défaut
    ouais j'ai l'impression de pas tout avoir compris

  11. #11
    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
    substring sert à extraire une sous-chaîne à partir d'une chaîne passée en paramètre. Cette fonction prend 3 paramêtres :
    - La chaîne dont on veut extraire une partie
    - La position dans la chaîne passée en paramètre à partir de laquelle on extrait la sous-chaîne (attention : en XSLT les indices démarrent à 1 et non pas à 0 ; le premier caractère de la chaîne aura la position 1)
    - La longueur de la chaîne extraite

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:variable name="$texte">Ceci est un texte</xsl:variable>
    <xsl:value-of select="substring($texte, 3, 5)"/>
    affichera :
    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

  12. #12
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Par défaut
    Ok merci, tu ordonne ta chaine de caractere.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/08/2012, 17h41
  2. Réponses: 7
    Dernier message: 06/08/2008, 00h37
  3. [XSLT] operation sur chaines de caractere
    Par jeb001 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 25/01/2008, 09h14
  4. probleme extraction de chaine de caracteres
    Par nivose110 dans le forum C
    Réponses: 13
    Dernier message: 11/07/2006, 15h44
  5. extraction d'une chaine de caractere ...
    Par nicolasghaz dans le forum VBScript
    Réponses: 7
    Dernier message: 31/10/2005, 18h53

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