changer le Root element et le namespace
Bonjour,
Puis-je soumettre à votre sagacité ce casse-tête frustrant ?
J'ai un fichier XML de départ comme ceci :
Code:
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:
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:
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.