I am trying to move elements from an XML file to another using XSLT 1.0. The problem I have is that I know how to generate a new XML file as an output, but I cannot figure how to merge the output with an already existing file without erasing it and I couldn't find someone with the same problem.
I have the following files:
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Matchs2.xsd">
<!-- liste des matchs -->
<listMatchs>
<!-- matchs poule 1 -->
<match>
<date>2015-01-09</date>
<groupe>1</groupe>
<equipes>
<domicile>11</domicile>
<invite>12</invite>
</equipes>
<score victoire="invite">1-2</score>
</match>
<match>
<date>2015-02-09</date>
<groupe>1</groupe>
<equipes>
<domicile>11</domicile>
<invite>13</invite>
</equipes>
<score victoire="domicile">3-2</score>
</match>
</listMatchs>
<listEquipes>
<equipe id="France" flag="/flag/fra.png">
<position numGroupe="1" numEquipe="11"/>
</equipe>
<equipe id="Espagne" flag="/flag/esp.png">
<position numGroupe="2" numEquipe="21"/>
</equipe>
<equipe id="Allemagne" flag="/flag/ger.png">
<position numGroupe="3" numEquipe="31"/>
</equipe>
<equipe id="Angleterre" flag="/flag/eng.png">
<position numGroupe="4" numEquipe="41"/>
</equipe>
<equipe id="Portugal" flag="/flag/por.png">
<position numGroupe="5" numEquipe="51"/>
</equipe>
<equipe id="Belgique" flag="/flag/bel.png">
<position numGroupe="6" numEquipe="61"/>
</equipe>
<equipe id="Italie" flag="/flag/ita.png">
<position numGroupe="1" numEquipe="12"/>
</equipe>
<equipe id="Russie" flag="/flag/rus.png">
<position numGroupe="2" numEquipe="22"/>
</equipe>
<equipe id="Republique tcheque" flag="/flag/cze.png">
<position numGroupe="1" numEquipe="13"/>
</equipe>
<equipe id="Turquie" flag="/flag/tur.png">
<position numGroupe="1" numEquipe="14"/>
</equipe>
<equipe id="Suede" flag="/flag/swe.png">
<position numGroupe="2" numEquipe="23"/>
</equipe>
<equipe id="Republique Irlande" flag="/flag/irl.png">
<position numGroupe="2" numEquipe="24"/>
</equipe>
<equipe id="Suisse" flag="/flag/sui.png">
<position numGroupe="3" numEquipe="32"/>
</equipe>
<equipe id="Pologne" flag="/flag/pol.png">
<position numGroupe="3" numEquipe="33"/>
</equipe>
<equipe id="Islande" flag="/flag/isl.png">
<position numGroupe="3" numEquipe="34"/>
</equipe>
<equipe id="Autriche" flag="/flag/aut.png">
<position numGroupe="4" numEquipe="42"/>
</equipe>
<equipe id="Roumanie" flag="/flag/rou.png">
<position numGroupe="4" numEquipe="43"/>
</equipe>
<equipe id="Pays de Galles" flag="/flag/wal.png">
<position numGroupe="4" numEquipe="44"/>
</equipe>
<equipe id="Croatie" flag="/flag/cro.png">
<position numGroupe="5" numEquipe="52"/>
</equipe>
<equipe id="Ukraine" flag="/flag/ukr.png">
<position numGroupe="6" numEquipe="62"/>
</equipe>
<equipe id="Slovaquie" flag="/flag/slo.png">
<position numGroupe="5" numEquipe="53"/>
</equipe>
<equipe id="Hongrie" flag="/flag/hon.png">
<position numGroupe="6" numEquipe="63"/>
</equipe>
<equipe id="Albanie" flag="/flag/alb.png">
<position numGroupe="5" numEquipe="54"/>
</equipe>
<equipe id="Irlande du Nord" flag="/flag/nir.png">
<position numGroupe="6" numEquipe="64"/>
</equipe>
</listEquipes>
</list>
and:
<resultats xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLo``cation="Matchs_recap.xsd">
<match date="26-01-2015">
<equipe score="5" id="41">
<pays>Angleterre</pays>
<poule>4</poule>
<drapeau src="/flag/eng.png"/>
</equipe>
<equipe score="2" id="42">
<pays>Autriche</pays>
<poule>4</poule>
<drapeau src="/flag/aut.png"/>
</equipe>
</match>
<match date="26-02-2015">
<equipe score="4" id="41">
<pays>Angleterre</pays>
<poule>4</poule>
<drapeau src="/flag/eng.png"/>
</equipe>
<equipe score="3" id="43">
<pays>Roumanie</pays>
<poule>4</poule>
<drapeau src="/flag/rou.png"/>
</equipe>
</match>
</resultats>
(it's in French, sorry for that)
I already have the XSLT to give the first file the same structure as the second, but I am looking for a way to put it into the second file. I have tried something with the document() function, but it didn't work. Is there a way to do this? Thank you.
EDIT: Sorry for the missing elements. Here is my expected output:
<resultats xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="Matchs_recap.xsd">
<match date="26-01-2015">
<equipe score="5" id="41">
<pays>Angleterre</pays>
<poule>4</poule>
<drapeau src="/flag/eng.png"/>
</equipe>
<equipe score="2" id="42">
<pays>Autriche</pays>
<poule>4</poule>
<drapeau src="/flag/aut.png"/>
</equipe>
</match>
<match date="26-02-2015">
<equipe score="4" id="41">
<pays>Angleterre</pays>
<poule>4</poule>
<drapeau src="/flag/eng.png"/>
</equipe>
<equipe score="3" id="43">
<pays>Roumanie</pays>
<poule>4</poule>
<drapeau src="/flag/rou.png"/>
</equipe>
</match>
<match date="09-01-2015">
<equipe score="1" id="11">
<pays>France</pays>
<poule>1</poule>
<drapeau src="/flag/fra.png"/>
</equipe>
<equipe score="2" id="12">
<pays>Italie</pays>
<poule>1</poule>
<drapeau src="/flag/ita.png"/>
</equipe>
</match>
<match date="09-02-2015">
<equipe score="3" id="11">
<pays>France</pays>
<poule>1</poule>
<drapeau src="/flag/fra.png"/>
</equipe>
<equipe score="2" id="13">
<pays>Republique tcheque</pays>
<poule>1</poule>
<drapeau src="/flag/cze.png"/>
</equipe>
</match>
</resultats>
My XSL file is the following:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xsl"
version="1.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<resultats xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Matchs_recap.xsd">
<xsl:for-each select="list/listMatchs/match">
<match>
<xsl:attribute name="date">
<xsl:value-of select="concat(substring(date,9,2),'-',substring(date,6,2),'-',substring(date,1,4))"/>
</xsl:attribute>
<equipe>
<xsl:variable name="idEquipe" select="equipes/domicile"/>
<xsl:attribute name="score">
<xsl:value-of select="substring-before(score,'-')"/>
</xsl:attribute>
<xsl:attribute name="id">
<xsl:value-of select="$idEquipe"/>
</xsl:attribute>
<pays>
<xsl:value-of select="/list/listEquipes/equipe[position/@numEquipe = $idEquipe]/@id"/>
</pays>
<poule>
<xsl:value-of select="/list/listEquipes/equipe/position[@numEquipe = $idEquipe]/@numGroupe"/>
</poule>
<drapeau>
<xsl:attribute name="src">
<xsl:value-of select="/list/listEquipes/equipe[position/@numEquipe = $idEquipe]/@flag"/>
</xsl:attribute>
</drapeau>
</equipe>
<equipe>
<xsl:variable name="idEquipe" select="equipes/invite"/>
<xsl:attribute name="score">
<xsl:value-of select="substring-after(score,'-')"/>
</xsl:attribute>
<xsl:attribute name="id">
<xsl:value-of select="$idEquipe"/>
</xsl:attribute>
<pays>
<xsl:value-of select="/list/listEquipes/equipe[position/@numEquipe = $idEquipe]/@id"/>
</pays>
<poule>
<xsl:value-of select="/list/listEquipes/equipe/position[@numEquipe = $idEquipe]/@numGroupe"/>
</poule>
<drapeau>
<xsl:attribute name="src">
<xsl:value-of select="/list/listEquipes/equipe[position/@numEquipe = $idEquipe]/@flag"/>
</xsl:attribute>
</drapeau>
</equipe>
</match>
</xsl:for-each>
</resultats>
</xsl:template>
</xsl:stylesheet>