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 :

XLST ajouter un identifiant unique à des elements dans un fichier XML


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Par défaut XLST ajouter un identifiant unique à des elements dans un fichier XML
    Bonjour,

    Tout nouveau dans la manipulation des fichiers XML avec XSLT je cherche à ajouter un Identifiant Unique en tant qu'attribut. Voici un exemple de fichier 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
    27
    28
    29
    30
    31
    32
    <?xml version="1.0" encoding="ISO-8859-1"?>
        <names>
            <name>
                <key>SHORT</key>
                <value>ASIAN DEV BANK 1.5 22JAN2020 GMTN</value>
            </name>
            <name>
                <key>SHORT_UK</key>
                <value>ASIAN DEV BANK 1.5 22/01/2020 GMTN</value>
            </name>
            <name>
                <key>SHORT_US</key>
                <value>ASIAN DEV BANK 1.5 01/22/2020 GMTN</value>
            </name>
            <name>
                <key>LONG</key>
                <value>ASIAN DEVELOPMENT BANK 1.5 22JAN2020 SERIES GMTN</value>
            </name>
            <name>
                <key>TRADER_NICKNAME</key>
                <value>ASIA 1.500000 01/22/2020</value>
            </name>
            <name>
                <key>TICKER</key>
                <value>ASIA</value>
            </name>
            <name>
                <key>BLOOMBERG</key>
                <value>ASIA 1 1/2 01/22/20</value>
            </name>
        </names>
    </instrumentReferenceData>
    Voici ce que j'aurai en tête :

    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
    27
    28
    29
    30
    31
    32
    <?xml version="1.0" encoding="ISO-8859-1"?>
        <names>
            <name id="1">
                <key id="1.1">SHORT</key>
                <value id="1.2">ASIAN DEV BANK 1.5 22JAN2020 GMTN</value>
            </name>
            <name id="2">
                <key id="2.1">SHORT_UK</key>
                <value id="2.2">ASIAN DEV BANK 1.5 22/01/2020 GMTN</value>
            </name>
            <name id="3">
                <key id="3.1">SHORT_US</key>
                <value id="3.2">ASIAN DEV BANK 1.5 01/22/2020 GMTN</value>
            </name>
            <name id="4">
                <key id="4.1">LONG</key>
                <value id="4.2">ASIAN DEVELOPMENT BANK 1.5 22JAN2020 SERIES GMTN</value>
            </name>
            <name id="5">
                <key id="5.1">TRADER_NICKNAME</key>
                <value id="5.2">ASIA 1.500000 01/22/2020</value>
            </name>
            <name id="6">
                <key id="6.1">TICKER</key>
                <value id="6.2">ASIA</value>
            </name>
            <name id="7">
                <key id="7.1">BLOOMBERG</key>
                <valueid="7.2">ASIA 1 1/2 01/22/20</value>
            </name>
                </names>
    </instrumentReferenceData>
    Il me semble que l'on peut réaliser cette manipulation grace à la fonction xpath generate-id() mais j'avoue ne pas en être sûr et ne pas savoir comment faire ...

    Je vous remercie de votre attention et de votre aide !

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par regisd11 Voir le message
    Il me semble que l'on peut réaliser cette manipulation grace à la fonction xpath generate-id() mais j'avoue ne pas en être sûr et ne pas savoir comment faire ...
    Plus ou moins. generate-id() laisse le moteur XSLT décider à quoi va ressembler l'id généré, et en général c'est pas très beau.

    Mais c'est pas difficile à utiliser. L'idée est que :
    - generate-id() prend un élément en paramètre. Si aucun paramètre n'est donné, par défaut l'élément en cours sert de paramètre.
    - si on l'appelle sur un élément puis sur un autre élément, les résultats seront toujours différents pour ces éléments.
    - si on l'appelle plusieurs fois sur le même élément, le résultat sera toujours le même.

    Donc il construit un id unique pour chaque élément distinct, ça oui. Mais on a aucun contrôle sur à quoi ressemblera l'id.

    pour l'utiliser, ça ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:template match="*">
      <xsl:copy>
        <xsl:attribute name="id">
          <xsl:value-of select="generate-id()"/>
        </xsl:attribute>
     
        <xsl:apply-templates/>
      </xl:copy>
    </xsl:template>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/04/2010, 21h26
  2. Réponses: 9
    Dernier message: 18/05/2009, 08h25
  3. Ajouter des namespace dans un fichier XML
    Par Septembre84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/05/2008, 12h20
  4. Ajout d'un element dans un fichier XML
    Par vacknov dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2007, 10h26
  5. Somme des éléments dans plusieurs fichiers.
    Par AjJi dans le forum Linux
    Réponses: 2
    Dernier message: 11/06/2006, 00h51

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