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

XML/XSL et SOAP Discussion :

transformation de balises


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 52
    Par défaut transformation de balises
    Bonjour,

    J'ai un fichier XML avec dans un même noeud des balises identiques. J'aimerais les transformer automatiquement pour les renomer. Je suppose qu'il faut faire une XLT... mais cela dépasse mes compétences.
    Est-ce que quelqu un pourrait m'aider ?

    Exemple fichier source :
    <racine>
    <auteur>xxxx</auteur>
    <auteur>xxxx</auteur>
    </racine>

    Au final, j'aimerais avoir :
    <racine>
    <auteur1>xxxxx</auteur1>
    <auteur2>xxxxx</auteur2>
    </racine>

    En fait, quand j'importe mon fichier source XML dans Access, comme les balises portent le même nom, il me prend que la dernière balise "auteur"... Si je les renome avec des noms différents, Access pourra les mettre sur plusieurs colonnes.

    J'espère que j'ai été clair...

    Merci de votre aide,

    Laurent

  2. #2
    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
    Bonjour,

    ça devrait donner un truc comme cela :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
      <xsl:template match="racine">
        <xsl:copy>
          <xsl:apply-templates select="*"/>
        </xsl:copy>
      </xsl:template>
      <xsl:template match="*">
        <xsl:element name="{concat(name(), position())}">
          <xsl:copy-of select="text()"/>
        </xsl:element>
      </xsl:template>
    </xsl:stylesheet>
    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

  3. #3
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    voici la xsl

    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
    <?xml version="1.0" encoding="UTF-16"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:output method="xml"/>
    <xsl:template match="/">
    	<xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="*"><xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates select="node()"/></xsl:copy></xsl:template>
    <xsl:template match="text()"><xsl:copy-of select="."/></xsl:template>
    <xsl:template match="auteur">
    	<xsl:variable name="nouveauNomAuteur" select="concat('auteur',string(count(preceding-sibling::auteur)))"/>
    	<xsl:element name="{$nouveauNomAuteur}">
    		<xsl:copy-of select="@*"/>
    		<xsl:apply-templates select="node()"/>
    	</xsl:element>
    </xsl:template>
     
    </xsl:stylesheet>
    j espere que tu sais comment lancer la transformation.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 52
    Par défaut
    Et bien... rapide et efficace. Merci.

    Tu fais bien de poser la question à la fin... Je lance comment ?

    Merci de ton aide,

    Laurent

  5. #5
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    la il faut consulter la doc...car ce n est pas que c est difficile...mais long.
    Essaie de voir ce que tu trouves sur MSXML et son petit logiciel de transfo MSXSL...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 52
    Par défaut
    Tout fonctionne à merveille.
    Je te remercie.

    Laurent

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

Discussions similaires

  1. [XSLT 1.0] Transformer plusieurs balises en une seule
    Par rebellelunaire dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 21/03/2014, 16h57
  2. Transformer une balise en autre chose Oo
    Par Seta-san dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/09/2012, 22h22
  3. Comment transformer une balise xml dans une requete xsl:for-each
    Par Max1000p dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 07/06/2012, 09h46
  4. [XSL] Transformation de balises imbriquées
    Par Janitrix dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/05/2008, 13h45

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