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