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 :

translate de caractere [XSLT 2.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Par défaut translate de caractere
    Bonjour,


    J'ai une chaîne contenant des /, je voudrai transformer les / en retour à la ligne ou saut de ligne
    Ma chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <coord>DUPONT Jean-Marc/Rue de la marne/75013 Paris/France</coord>
    Le code utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:value-of select="translate(coord, '/', '
    ')"/>
    ou
    <xsl:value-of select="translate(coord, '/', '
    ')"/>
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DUPONT Jean-Marc Rue de la marne 75013 Paris France

    Dans le fichier FO généré j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <fo:block>DUPONT Jean-Marc
    Rue de la marne
    75013 Paris
    France
    </fo:block>
    Dans le PDF j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DUPONT Jean-Marc Rue de la marne 75013 Paris France
    Merci de votre aide

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par henri93 Voir le message
    J'ai une chaîne contenant des /, je voudrai transformer les / en retour à la ligne ou saut de ligne
    Ma chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <coord>DUPONT Jean-Marc/Rue de la marne/75013 Paris/France</coord>
    Le code utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:value-of select="translate(coord, '/', '
    ')"/>
    ou
    <xsl:value-of select="translate(coord, '/', '
    ')"/>
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DUPONT Jean-Marc Rue de la marne 75013 Paris France
    En XML, les whitespaces qu'on met dans les attributs sont considérés comme de simples espaces.

    Donc ton code est équivalent à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="translate(coord, '/', ' ')"/>
    Il faudrait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="translate(coord, '/', '&#xA;')"/>
    ou bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:variable name="endLine">
    <xsl:text>
    </xsl:text>
    </xsl:variable>
    <xsl:value-of select="translate(coord, '/', $endLine)"/>
    Concernant XSL-FO,

    Normalement les retours à la ligne se gèrent avec des balises, les whitespace étant considéré comme de simples espaces. Mais je ne sais pas quelles balises au juste.
    Le plus simple serait de mettre chaque paragraphe dans son propre <xsl:block> <fo:block>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Citation Envoyé par thelvin Voir le message
    En XML, les whitespaces qu'on met dans les attributs sont considérés comme de simples espaces.
    A mon avis il l'avait bien mis dans son message, c'est un bug du forum qui provoque ça sur les entités numériques.

    Citation Envoyé par thelvin Voir le message
    Normalement les retours à la ligne se gèrent avec des balises, les whitespace étant considéré comme de simples espaces. Mais je ne sais pas quelles balises au juste.
    Le plus simple serait de mettre chaque paragraphe dans son propre <xsl:block>
    A mon avis le vrai problème est plutôt là en effet, il faut utiliser des balises pour faire des sauts de ligne et non des caractères spéciaux. Ceci dit, étant donné que le FO utilise pas mal de CSS, tu peux essayer de mettre un "whitespace:pre", mais c'est sans garantie aucune. Apparement la solution la plus courante est d'utiliser des fo:block pour ça.

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Par défaut
    Ok merci

    j'ai fait une boucle récursive, avec ajout d'un block à chaque rencontre du caractère /

  5. #5
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour,

    si tu travail avec FOP, tu peux utiliser la gestion des whitespaces offerte par XSL-FO,
    qui est plus fine que celle du XSLT.

    Enfin, dans ce cas particulier, j'utiliserais des éléments fo:block pour changer de ligne
    car ton contenu à une sémantique particulière et donc quelques chances d'avoir un formatage particulier lui aussi.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. éliminer un caractere d'un string
    Par no-vice dans le forum Langage
    Réponses: 5
    Dernier message: 09/08/2002, 14h55
  3. Réponses: 3
    Dernier message: 12/06/2002, 21h15
  4. Réponses: 2
    Dernier message: 29/05/2002, 20h43
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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