ThomasM: Vergleich/Update zweier XML-Dateien mittels XSLT

Beitrag lesen

Hallo puntila,

Die Frage ist: welche XSL-Datei erzeugt mittels file1 und file2 diesen Output?

Als Ansatz zum Weiterdenken:

<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
  xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="fn">  
  
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>  
  
  <xsl:template match="/">  
  
    <xsl:variable name="file1" select="fn:doc('file1.xml')"/>  
    <xsl:variable name="file2" select="fn:doc('file2.xml')"/>  
  
    <Root>  
      <xsl:for-each-group select="$file1//Element union $file2//Element" group-by="@id">  
        <xsl:sort select="@id" data-type="number" order="ascending"/>  
        <Element id="{@id}">  
          <xsl:for-each select="current-group()">  
            <xsl:value-of select="."/>  
          </xsl:for-each>  
        </Element>  
      </xsl:for-each-group>  
    </Root>  
  
  </xsl:template>  
  
</xsl:stylesheet>

Ergebnis:

<?xml version="1.0" encoding="UTF-8"?>  
<Root>  
  <Element id="1">  
    file 1 --- Inhalt 1  
  
    file 2 --- Inhalt 1  
  </Element>  
	<Element id="2">  
    file 2 --- Inhalt 2  
  </Element>  
	<Element id="3">  
    file 1 --- Inhalt 3  
  </Element>  
	<Element id="4">  
    file 1 --- Inhalt 4  
  </Element>  
</Root>

Grüße,
Thomas