Bonjour,
Puis-je soumettre à votre sagacité ce casse-tête frustrant ?

J'ai un fichier XML de départ comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<dataroot>
	<document>
		<fileN>51432.pdf</fileN>
		<INVC>51432</INVC>
		<properties>
			<invoiceNumber>51432</invoiceNumber>
			<invoiceD>2018-01-24</invoiceD>
			<customerNbr>5666</customerNbr>
		</properties>
	</document>
</dataroot>
Je désirer transformer ce fichier XML en un autre fichier XML en transformant l'élément racine du fichier.
Au lieu de
<dataroot>
je désire obtenir
<EInvoiceF xmlns="http://tatra.com/ECM">

J'ai écris la transformation suivante :
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
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
 
    <!-- Rename <dataroot> element to <EInvoiceF> -->
    <xsl:template match="dataroot">
        <EInvoiceF xmlns="http://tatra.com/ECM" >
            <xsl:apply-templates select="@*|node()"/>
        </EInvoiceF>
    </xsl:template>
 
    <!--  Remove namespace declarations -->
    <xsl:template match="*">
        <xsl:element name="{name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>
 
</xsl:stylesheet>
qui fonctionne mais pas parfaitement.
J'obtiens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
<EInvoiceF xmlns="http://tatra.com/ECM">
	<document xmlns="">
		<fileN>51432.pdf</fileN>
		<INVC>514   ....
ce <document xmlns=""> ne me convient pas.
je voudrais simplement <document> sans le xmlns=""

Pourquoi m'ajoute-t-il ce xmlns="" et comment puis-je m'en débarasser ?

Merci pour votre précieuse aide.