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 :

Répétition du nom du child name après la transformation XSL


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Répétition du nom du child name après la transformation XSL
    Bonjour

    Dans mon XML il peut y avoir plusieurs fois la donnée garantie / entité / personne qui contiennent plusieurs valeurs.

    Code JSON : 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
      "sinistre":{
             "codePays":"FRA",
    		 "description":"le sinistre a été ouvert",
             "codeAuto":"N",
             "garantie":[ {
                "codeGarantie":"REC",
                "typeDommage":"M",
                "nombreVehiculeTiers":"1",
                "nombreTiers":"A"
             },{
                "codeGarantie":"REC",
                "typeDommage":"M",
                "nombreVehiculeTiers":"1",
                "nombreTiers":"A"
             }
             ]
          },


    Ci-dessous mon XSL j'ai réussi à mettre en place la prise en compte de plusieurs garanties possibles mais j'ai un problème de transformation

    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
                                       <!-- Object or Element Property-->
                                       <xsl:template match="*">"<xsl:value-of select="name()"/>":<xsl:call-template name="Properties"/></xsl:template>
     
                                       <!-- Array Element -->
                                       <xsl:template match="*" mode="ArrayElement"><xsl:call-template name="Properties"/></xsl:template>
     
                                       <!-- Object Properties -->
                                       <xsl:template name="Properties">
                                                   <xsl:variable name="childName" select="name(*[1])"/>
                                                   <xsl:choose>
                                                               <xsl:when test="not(*|@*)">"<xsl:value-of select="."/>"</xsl:when>
                                                               <xsl:when test="count(*[name()=$childName]) > 1">{"<xsl:value-of select="$childName"/>":[<xsl:apply-templates select="*" mode="ArrayElement"/>]}</xsl:when>
                                                               <xsl:when test="(name() = 'garantie' or name() = 'entite' or name() = 'personne')and count(*[name()=$childName]) = 1">[{<xsl:apply-templates select="@*"/><xsl:apply-templates select="*"/>}]</xsl:when>
                                                               <xsl:otherwise>{<xsl:apply-templates select="@*"/><xsl:apply-templates select="*"/>}</xsl:otherwise>
                                                   </xsl:choose>
                                                   <xsl:if test="following-sibling::*">,</xsl:if>
                                       </xsl:template>
     
                                       <!-- Attribute Property -->
                                       <xsl:template match="@*">"<xsl:value-of select="name()"/>" : "<xsl:value-of select="."/>",</xsl:template>
    </xsl:stylesheet>




    Transformation souhaitée :
    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "garantie":[{"codeGarantie":"REC","typeDommage":"M","nombreVehiculeTiers":"1","nombreTiers":"A"},
    {"codeGarantie":"REC","typeDommage":"C","nombreVehiculeTiers":"1","nombreTiers":"13"},{"codeGarantie":"DOT","typeDommage":"M","nombreVehiculeTiers":"0","nombreTiers":"13"}]},


    Transformation que j'ai

    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "garantie":[{"codeGarantie":"INC","typeDommage":"M","nombreVehiculeTiers":"0","nombreTiers":"0"}],
    "garantie":[{"codeGarantie":"TES","typeDommage":"M","nombreVehiculeTiers":"1","nombreTiers":"1"}]},

    le nom "garantie" revient à chaque fois ... alors que j'aimerais juste avoir },{ entre les 2 garanties avec uniquement les infos contenues dans Garantie


    Merci pour votre aide, je débute

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Il semble reposer la question est nécessaire, ce n'est pas clair du tout. Sinon, googlez le net pour mots clés comme "xsl, xml to json" pour s'inspirer par toute sorte d'outils.

Discussions similaires

  1. Retrouver le nom d'un Shape apres coller
    Par Thierry_94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/11/2008, 21h07
  2. Réponses: 2
    Dernier message: 29/08/2006, 16h20
  3. Répétitions de nom de colonne sur un select
    Par jeanpaul702 dans le forum Oracle
    Réponses: 3
    Dernier message: 07/06/2006, 10h57
  4. [CR]Répétition des noms dans Crystal Reports
    Par blaiso dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 07/01/2006, 14h21
  5. Réponses: 6
    Dernier message: 25/08/2004, 09h50

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