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] Conservation des guillemets après transformation XSL


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 42
    Points : 44
    Points
    44
    Par défaut [XSL] Conservation des guillemets après transformation XSL
    Bonjour,

    Je dois convertir un fichier XML qui contient des données pouvant contenir les caractères interdits en XML (", <, > et &). Le problème, c'est que cela ne fonctionne que pour 3 des 4 caractères cités, malgré des essais avec Xalan Java 2.7.0 et MX XSLT 4.0. Voici des fichiers exemples :

    Fichier d'entrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <rowSet>
        <row>
            <field name="ITEM_1" value="Moi &amp; Toi" />
            <field name="ITEM_2" value="Moi &lt; Toi" />
            <field name="ITEM_3" value="Moi &gt; Toi" />
            <field name="ITEM_4" value="Moi &quot;sur&quot; Toi" />
        </row>
    </rowSet>
    ATTENTION : Dans le fichier en réalité, la dernière balise est en réalité :
    <field name="ITEM_4" value="Moi &quot;sur&quot; Toi" />

    Fichier XSLT :
    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
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:output method="xml" indent="yes" encoding="UTF-8" />
     
        <xsl:template match="/rowSet">
            <xsl:text disable-output-escaping="yes">&lt;root&gt;</xsl:text>
                <xsl:apply-templates/>
            <xsl:text disable-output-escaping="yes">&lt;/root&gt;</xsl:text>
        </xsl:template>
     
        <xsl:template match="/rowSet/row">
            <xsl:for-each select="./field">
                <xsl:text disable-output-escaping="yes">&lt;text&gt;</xsl:text>
                <xsl:value-of select="@value"/>
                <xsl:text disable-output-escaping="yes">&lt;/text&gt;</xsl:text>
            </xsl:for-each>
        </xsl:template>
    </xsl:stylesheet>
    Fichier de sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
        <text>Moi &amp; Toi</text>
        <text>Moi &lt; Toi</text>
        <text>Moi &gt; Toi</text>
        <text>Moi "sur" Toi</text>
    </root>
    Là par contre, c'est bien fidèle au fichier obtenu en sortie.

    Quelqu'un aurait une idée ?
    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 42
    Points : 44
    Points
    44
    Par défaut
    Finalement, j'ai résolu mon problème en créant un template qui analyse la présence du " dans mon attribut.

    Si le caractère y est présent, j'écris ma balise XML avec comme délimiteur d'attribut le caractère apostrophe, sinon j'utilise le double-quote.

    Je ne sais pas si c'est ce qu'il y a de plus propre, mais ça marche !

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

Discussions similaires

  1. [XSLT 1.0] Problème après transformation xsl
    Par bugger31 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/05/2012, 10h42
  2. Réponses: 2
    Dernier message: 27/05/2008, 16h28
  3. [XML] L'accès à nodeValue convertit les entités après transformation XSL ?
    Par Yragael dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/05/2008, 15h34
  4. Réponses: 9
    Dernier message: 31/01/2007, 15h04
  5. [XSL]ordre des transformations...
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 30/03/2006, 11h20

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