XML - Fusionner plusieurs fichiers avec XSLT
Les fichiers XML
Le premier fichier contient le chemin du fichier XSL
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Le fichier XSL -->
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
<entries>
<entry>
<id>1</id>
</entry>
<entry>
<id>2</id>
</entry>
<entry>
<id>3</id>
</entry>
</entries>
Le deux autres fichiers : (file2.xml, file3.xml)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entries>
<entry>
<id>4</id>
</entry>
<entry>
<id>5</id>
</entry>
<entry>
<id>6</id>
</entry>
</entries>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entries>
<entry>
<id>7</id>
</entry>
<entry>
<id>8</id>
</entry>
<entry>
<id>9</id>
</entry>
</entries>
La transformation avec le fichier XSL
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<!-- Importe les fichiers XML -->
<xsl:param name="file2" select="document('file2.xml')" />
<xsl:param name="file3" select="document('file3.xml')" />
<!-- Selectionne les données de type entry-->
<xsl:variable name="file2Entries" select="$file2/entries/entry" />
<xsl:variable name="file3Entries" select="$file3/entries/entry" />
<!-- Transformation récursive -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<!-- Applique la transformation pour les éléments entries -->
<xsl:template match="entries">
<xsl:copy>
<!-- Copie les données du premier fichier -->
<xsl:apply-templates select="@* | node()" />
<!-- Copie les données du deuxième fichier -->
<xsl:apply-templates select="$file2Entries" />
<!-- Copie les données du troisième fichier -->
<xsl:apply-templates select="$file3Entries" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Commentaires
Enregistrer un commentaire