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][xalan] créer un identifiant


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [XSLT][xalan] créer un identifiant
    Bonjour, je cherche à créer un attribut id pour chaque noeud à partir du xsl, ce id commençant à 2 et s'incrémentant au fil des noeuds de l'arborescence.
    Le format de l'attribut id="Id_x" du xml output est imposé.
    Merci et à bientôt
    Bernols

    Le fichier à transformer : SAPinput.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
    <?xml version="1.0" encoding="UTF-16"?> 
    <SAP xsi:noNamespaceSchemaLocation="SAP.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <ficheInformation> 
    <fiche> 
    <NomDuDocument>sap</NomDuDocument> 
    <TypeDuDocument>Fichier de données</TypeDuDocument> 
    <DateDeCreation>2006-01-30</DateDeCreation> 
    </fiche> 
    <fiche> 
    <NomDuDocument>sop</NomDuDocument> 
    <TypeDuDocument>Fichier de texte</TypeDuDocument> 
    <DateDeCreation>2006-01-30</DateDeCreation> 
    </fiche> 
    </ficheInformation> 
    </SAP>
    SAP.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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema- 
    instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"> 
    <!--modification de encoding--> 
    <xsl:output method="xml" encoding="ISO-8859-1" indent="yes"/> 
    <xsl:template match="/SAP"> 
    <ModeleExport> 
    <xsl:apply-templates select="ficheInformation"/> 
    </ModeleExport> 
     
    </xsl:template> 
    <!--conception de l'élément ficheInformation--> 
    <xsl:template match="ficheInformation"> 
    <ficheInformation id="{concat('Id_',position()+1)}"> 
    <xsl:for-each select="fiche"> 
    <fiche id="{concat('Id_',position()+'@id')}"> 
    <NomDuDocument> 
    <xsl:value-of select="NomDuDocument"/> 
    </NomDuDocument> 
    <TypeDuDocument>ModeleExport</TypeDuDocument> 
    <DateDeCreation> 
    <xsl:value-of select="DateDeCreation"/> 
    </DateDeCreation> 
    <InformationUsager> 
    <xsl:value-of select="InformationUsager"/> 
    </InformationUsager> 
    </fiche> 
    </xsl:for-each> 
    </ficheInformation> 
    </xsl:template> 
    </xsl:stylesheet>
    XML à obtenir : SAPoutputModele.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
    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <ModeleExport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <ficheInformation id="Id_2"> 
    <fiche id="Id_3"> 
    <NomDuDocument>sap</NomDuDocument> 
    <TypeDuDocument>ModeleExport</TypeDuDocument> 
    <DateDeCreation>2006-01-30</DateDeCreation> 
    <InformationUsager></InformationUsager> 
    </fiche> 
    <fiche id="Id_4"> 
    <NomDuDocument>sop</NomDuDocument> 
    <TypeDuDocument>ModeleExport</TypeDuDocument> 
    <DateDeCreation>2006-01-30</DateDeCreation> 
    <InformationUsager></InformationUsager> 
    </fiche> 
    </ficheInformation> 
    </ModeleExport>

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {concat('Id_',position()+1)}
    pas testé mais j'aurais essayé un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    concat('Id_',string(count(ancestor-or-self::*|preceding-sibling::*)+1))}
    par contre il existe des fonctions comme generate-id(..) en xslt pour creer des identifiants unique

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci.
    Pour la fonction generate-id(), elle ne correspond pas à ce je veux car elle genère l'identifiant à partir de l'adresse mémoire, qui ne sera pas la même à chaque exécution, et qui ne peut être formatée pour répondre à mon format imposé dansle .xsd

Discussions similaires

  1. [XSLT][débutant]Créer une sorte de veteur
    Par gwendo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 09/05/2007, 17h37
  2. [XSLT] Comment créer une boucle
    Par Kefass dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 28/02/2007, 21h57
  3. Réponses: 6
    Dernier message: 18/12/2006, 11h16
  4. [xslt][xalan] convertir caracteres en ascii
    Par bernols dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 04/05/2006, 11h24
  5. [XSLT][xalan] transformation et renommage d'éléments
    Par bernols dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/04/2006, 18h41

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