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 :

Avec fonction XSLT, Remplacer 1 caractère par plusieurs


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Par défaut Avec fonction XSLT, Remplacer 1 caractère par plusieurs
    Bonjour

    Je souhaite à partir d'un fichier XML envoyer vers ma page la transformation avec XSLT

    Mon fichier XML contient un objet de type texte.
    Comme je ne peux y mettre directement de balise , je les remplace par un pipe (|)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <presta>
    <code>RR</code>
    <libelle>Repas Rotonde</libelle>
    <descriptif>La Brasserie est ouverte du lundi au vendredi de 12h00 à 14h00|La réservation s'effectue au moins 48h ouvrées avant la prestation|Les repas non annulés avant le délai de prévenance de 48 heures ouvrées, sont facturés à l'Unité organisatrice.|Le choix de l'entrée, du plat et du dessert est individuel et se fait sur place|Les réservations sont limitées à 15 personnes : au-delà, les convives sont orientés vers une prestation en salon|</descriptif>
    <actif>O</actif>
    <lien/>
    </presta>
    code de mon fichier xsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:variable name="Descriptif"><xsl:value-of select="LesChoix/presta/descriptif" /></xsl:variable>
    Mes pipes sont visibles, ne manque plus que leurs remplacements

    La Brasserie est ouverte du lundi au vendredi de 12h00 à 14h00|La réservation s'effectue au moins 48h ouvrées avant la prestation|Les repas non annulés avant le délai de prévenance de 48 heures ouvrées, sont facturés à l'Unité organisatrice.|Le choix de l'entrée, du plat et du dessert est individuel et se fait sur place|Les réservations sont limitées à 15 personnes : au-delà, les convives sont orientés vers une prestation en salon|

    code de mon fichier xsl.
    J'ai tenté un remplacement direct, mais le translate ne remplace qu' 1 caractère pour 1 caractère; donc il doit remplacer pipe par <
    Ce qui génère une erreur : error on line 62 at column 55: Unescaped '<' not allowed in attributes values
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="translate($Descriptif, '|', '<br/>')"/>
    Comment faire ?
    Existe-t-il une autre fonction ?

    Cordialement

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Par défaut contournement
    En attendant une solution plus simple, je découpe la chaine dans mon xml

    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
     
    <tabdescriptif>
    <undescriptif>
    <lignedescriptif>La Brasserie est ouverte du lundi au vendredi de 12h00 à 14h00</lignedescriptif>
    </undescriptif>
    <undescriptif>
    <lignedescriptif>La réservation s'effectue au moins 48h ouvrées avant la prestation</lignedescriptif>
    </undescriptif>
    <undescriptif>
    <lignedescriptif>Les repas non annulés avant le délai de prévenance de 48 heures ouvrées, sont facturés à l'Unité organisatrice.</lignedescriptif>
    </undescriptif>
    <undescriptif>
    <lignedescriptif>Le choix de l'entrée, du plat et du dessert est individuel et se fait sur place</lignedescriptif>
    </undescriptif>
    <undescriptif>
    <lignedescriptif>Les réservations sont limitées à 15 personnes : au-delà, les convives sont orientés vers une prestation en salon</lignedescriptif>
    </undescriptif>
    <undescriptif>
    <lignedescriptif/>
    </undescriptif>
    </tabdescriptif>
    Et donc mon xslt affiche ligne à ligne avec une balise de saut de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    			 <xsl:for-each select="LesChoix/presta/tabdescriptif/undescriptif">
    			 	<xsl:value-of select="lignedescriptif"/><br />
    			 </xsl:for-each>
    Dommage d'en arriver là, un simple remplacement serait tout de même idéal

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/09/2019, 23h56
  2. Réponses: 2
    Dernier message: 01/07/2019, 09h14
  3. [XSLT] remplacer valeur vide par espace
    Par Anubis dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/02/2008, 09h46
  4. [RegEx] Bug avec fonction de remplacement ereg_replace
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2007, 15h23
  5. Réponses: 1
    Dernier message: 07/06/2006, 18h18

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