1. #1
    Membre du Club
    Profil pro
    Inscrit en
    novembre 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2009
    Messages : 87
    Points : 66
    Points
    66

    Par défaut XML Transformation et namespaces

    Bonjour à tous,

    Je souhaite transformer un XML en un autre XML totalement différent, le second comportant des namespaces. Je n'arrive pas à obtenir ce que je veux.

    Voici l'XML d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <Envelope>
      <Body>
        <INVOIC>
          <BGM>
            <cmp01>
              <e01_1001>380</e01_1001>
              <e04_1000>VERSION</e04_1000>
            </cmp01>
            <e01_1004>NUM_DOCUMENT</e01_1004>
            <e02_1225>9</e02_1225>
          </BGM>
        </INVOIC>
      </Body>
    </Envelope>
    Voici le fichier à obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <DXInvoice xmlns="http://www.doc-process.com/schema/extended/invoice"
    xmlns:aa="AdresseA">
        <Invoice xmlns="">
            <aa:ID>NUM_DOCUMENT</ID>
            <CopyIndicator>VERSION</CopyIndicator>
        </Invoice>
    </DXInvoice>

    Mon xslt commence comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://www.doc-process.com/schema/extended/invoice"
    xmlns:aa="AdresseA">
      <xsl:template match="Envelope">
        <xsl:element name="DXInvoice">
          <xsl:element name="Invoice">
            <xsl:element name="aa:ID">
              <xsl:value-of select="Body/INVOIC/BGM/e01_1004" />
            </xsl:element>
            <xsl:element name="CopyIndicator">
              <xsl:value-of select="Body/INVOIC/BGM/cmp01/e01_1001" />
            </xsl:element>
    et voilà ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <DXInvoice xmlns="http://www.doc-process.com/schema/extended/invoice">
      <Invoice>
        <aa:ID xmlns:aa="AdresseA">NUM_DOCUMENT</aa:ID>
        <CopyIndicator>VERSION</CopyIndicator>
      </Invoice>
    </DXInvoice>
    Il maque presque tout.
    Pourriez-vous m'aider ?

    et, au passage, quelqu'un saurait-il m'expliquer à quoi sert xmlns="" dans l'élément Invoice ?

    Par avance merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 098
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 098
    Points : 18 782
    Points
    18 782

    Par défaut

    Hello,

    Citation Envoyé par Dan972 Voir le message
    et, au passage, quelqu'un saurait-il m'expliquer à quoi sert xmlns="" dans l'élément Invoice ?
    Il sert à annuler, pour lui et ses enfants, la déclaration précédente xmlns="http://www.doc-process.com/schema/extended/invoice".
    Autrement dit, xmlns="http://www.doc-process.com/schema/extended/invoice" dit que l'élément et ses enfants sont dans un namespace donné. Et xmlns="" dit que l'élément et ses enfants ne sont pas dans un namespace.

    Citation Envoyé par Dan972 Voir le message
    Il manque presque tout.
    Pourriez-vous m'aider ?
    En gros, <xsl:element> ne te rend pas service, et il ne sert pas à grand-chose de toute façon.

    Remplace juste par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:template match="Envelope">
      <DXInvoice xmlns="http://www.doc-process.com/schema/extended/invoice" xmlns:aa="AdresseA">
        <Invoice xmlns="">
          <aa:ID>
            <xsl:value-of select="aller-chercher-la-valeur"/>
          </aa:ID>
          <CopyIndicator>
            <xsl:value-of select="aller-chercher-la-valeur"/>
          </CopyIndicator>
        </Invoice>
      </DXInvoice>
    </xsl:template>
    et tu n'auras même pas besoin de te poser de question...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    novembre 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2009
    Messages : 87
    Points : 66
    Points
    66

    Par défaut

    c'est très clair. Je vais tester cela.
    merci pour ton aide

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

Discussions similaires

  1. XML Transformation grace a un XSLT
    Par Silvia12 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 01/03/2006, 16h09
  2. [WORD-->XML]Transformation .doc en .xml
    Par Hoegaarden dans le forum XML/XSL et SOAP
    Réponses: 14
    Dernier message: 30/08/2005, 12h05
  3. xhtml-->xml transformation xslt
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 15/06/2005, 15h23
  4. [XSLT][XSD>XML]transformer xsd en xml avec xslt
    Par émile-henri dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 14/06/2005, 15h06
  5. xhtml->xml transformation xslt
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 14/06/2005, 11h17

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