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] Modification d'une valeur (chaîne de caractère) dans le fichier XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Points : 52
    Points
    52
    Par défaut [XSLT] Modification d'une valeur (chaîne de caractère) dans le fichier XML
    Pour un projet en java je dois transformer certaine valeur dans un fichier xml.
    Je pense passer par xsl.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <root>
    <a>
    <b>toto</b>
    <b>titi</b>
    <c>tutu</c>
    </a>
    <a>
    <b>tata</b>
    </a>
    </root>
    et il doit etre possible en indiquant un pattern, ex:"root/a/b", une valeur à traduire, ex:"titi" et une traduction, ex:"picon"
    que dc tout les "titi" en "root/a/b" soient remplacer par "picon"

    Quel tête aurait alors mon fichier xsl que je dois générer?

    Merci

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut,

    Tu as ici : http://xml.developpez.com/sources/?p...es#III_replace un exemple pour une fonction "Replace" qui à l'air de correspondre à ce que tu veux

    Je pense que ça devrait pas mal t'aider ^^

    il n'y a pas de fonction native en XSLT 1.0 (je ne sais pas pour XSLT 2.0) qui permet de le faire directement...

  3. #3
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Voici la feuille de style que je propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     <xsl:stylesheet version="1.0" txs:name="remplace">
      <xsl:template match="/root/a/b[text()='titi']" priority="1">
       <b>picon</b>
      </xsl:template>
      <xsl:template match="@*|node()" priority="0">
       <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
       </xsl:copy>
      </xsl:template>
     </xsl:stylesheet>

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    merci pour vos réponses

    j'ai cette erreur pour le fichier de alain.couthures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Erreur d'analyse XML : préfixe non limité à un espace de noms
    Emplacement : file:///E:/...../TraductionXML/in.xsl
    Numéro de ligne 1, Colonne 1 :<xsl:stylesheet version="1.0" txs:name="remplace">
    in.xml:
    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="UTF-8"?> 
    <?xml-stylesheet href="in.xsl" type="text/xsl"?>
    <root>
    	<a>
    		<b>toto</b>
    		<b>titi</b>
    		<c>tutu</c>
    	</a>
    	<a>
    		<b>tata</b>
    	</a>
    </root>
    in.xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:stylesheet version="1.0" txs:name="remplace">
      <xsl:template match="/root/a/b[text()='titi']" priority="1">
       <b>picon</b>
      </xsl:template>
      <xsl:template match="@*|node()" priority="0">
       <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
       </xsl:copy>
      </xsl:template>
    </xsl:stylesheet>

  5. #5
    Membre éprouvé
    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
    Points : 1 063
    Points
    1 063
    Par défaut
    si j'ai bien compris tu veux remplacer <b>titi</b> par <b>picon</b> alors moi j'utiliserai ce code là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?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="/root/a/b[text()='titi']" >
       <b>picon</b>
      </xsl:template>
      <xsl:template match="@*|node()" priority="0">
       <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
       </xsl:copy>
      </xsl:template>
     </xsl:stylesheet>

  6. #6
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Il faut juste enlever ce "txs:..." qui n'est pas défini dans votre contexte !

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    ok ca marche!
    donc maintenant pour ce qui est du java, j'applique ceci:

    http://java.developpez.com/faq/xml/?...tionnementXSLT

    et je dois avoir en sortie le même xml que la source avec la traduction des "titi" en "picon" pour le pattern donné?

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    oué ben ca marche merci à tous

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/01/2010, 01h01
  2. Insérer une certaine chaîne de caractères dans MySQL
    Par laurentSc dans le forum Langage
    Réponses: 31
    Dernier message: 05/12/2009, 22h44
  3. Réponses: 0
    Dernier message: 19/01/2009, 10h00
  4. Retouver une chaîne de caractère dans un fichier
    Par thierrykammi dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 26/09/2008, 09h26

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