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 :

Modification de tous les attributs ID dans un fichier xml grace à xsl [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Modification de tous les attributs ID dans un fichier xml grace à xsl
    Bonjour

    Je suis débutant en xml/xsl. je dois réaliser la transformation suivante sur un document xml

    Pour chaque attribut Id, je dois remplacer son contenu par la concatenation de son ancien contenu et celui de l'attribut uuid se trouvant dans l'element ud

    Voici mon document 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
    22
    23
    24
    25
    26
    <?xml version="1.0" encoding="UTF-8"?>
    <!--Arbortext, Inc., 1988-2012, v.4002-->
    <ud id="TitreDuDocumentUD1PremierParagraphe-0C07571A" uuid="myuuid"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ud.xsd">
        <titre>Titre du Document UD 1</titre>
        <p>Premier paragraphe du document</p>
        <image href="../graphics/arbortextsolution.gif"/>
        <p>Second paragraphe du document, lien vers UD2 <udref href="UD2.xml"/></p>
        <p>Lien interne vers Section 2 <xref href="#TitreDeLaSecondeSectionPremierParag-0C075B9F"/></p>
        <image href="../graphics/boatdraw.tif"/>
        <section id="TitreDeLaPremièreSectionPremierPara-0C0759EE">
            <titre>Titre de la première section</titre>
            <p>Premier paragraphe de la section 1<xref href="#Satellite-0C075EA4"/></p>
            <p>Lien interne vers Image Satellite de la section 2 <xref href="#Satellite-0C075EA4"/></p>
            <image href="../graphics/satellite.tif"/>
            <p>Second paragraphe de la section 1</p>
            <image href="../graphics/train.tif"/>
        </section>
        <section id="TitreDeLaSecondeSectionPremierParag-0C075B9F">
            <titre>Titre de la seconde section</titre>
            <p>Premier paragraphe de la section 2</p>
            <image href="../graphics/satellite.tif" id="Satellite-0C075EA4"/>
            <p>Second paragraphe de la section 2</p>
            <image href="../graphics/train.tif" id="Train-0C07607C"/>
        </section>
    </ud>
    Pour le moment je sais que je dois exploiter le code qui permet de faire la copie, sinon c'est tout ce que je sais.

    Merci d'avance pour votre aide

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bon finalement j'ai reussi a trouver la solution:

    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
    <xsl:stylesheet version="1.0"  
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
      <xsl:output omit-xml-declaration="yes" indent="yes"/>
      <xsl:variable name="uiid" select="/ud/@uuid"></xsl:variable>
      <xsl:template match="node()|@*"> 
        <xsl:copy> 
          <xsl:apply-templates select="node()|@*"/> 
        </xsl:copy> 
      </xsl:template>  
      <xsl:template match="//*/@id">
        <xsl:variable name="id" select="parent::node()/@id"></xsl:variable>
        <xsl:attribute name="id"> 
          <xsl:value-of select="concat($uiid,$id)"/>
        </xsl:attribute> 
      </xsl:template> 
    </xsl:stylesheet>

  3. #3
    Expert confirmé
    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
    Points : 4 845
    Points
    4 845
    Par défaut
    Pas besoin de variable, tu peux faire directement ton traitement dans la déclaration de l'attribut :
    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 version="1.0"  
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
      <xsl:output omit-xml-declaration="yes" indent="yes"/> 
      <xsl:template match="node()|@*"> 
        <xsl:copy> 
          <xsl:apply-templates select="node()|@*"/> 
        </xsl:copy> 
      </xsl:template>
     
      <xsl:template match="@id">
        <xsl:attribute name="id"> 
          <xsl:value-of select="."/>
          <xsl:text>:</xsl:text>
          <xsl:value-of select="/ud/@uuid"/>
        </xsl:attribute> 
      </xsl:template> 
    </xsl:stylesheet>

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

Discussions similaires

  1. [KSH] ajouter des saut de lignes tous les 200 caractères dans un fichier
    Par twixi dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 09/10/2012, 15h58
  2. Postfix: enregistrer tous les mails reçus dans des fichiers
    Par piemur2000 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 28/11/2011, 16h17
  3. [MySQL] ecriture de tous les lignes sql dans un fichier texte
    Par noche29 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/03/2011, 15h29
  4. Réponses: 2
    Dernier message: 16/08/2006, 14h47
  5. Affecter un attribut dans un fichier XML ou XSL
    Par LLaurent dans le forum XMLRAD
    Réponses: 7
    Dernier message: 05/06/2003, 14h04

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