Hallo,
ich habe zwei xml Dateien, die ich mit einer xsl-Datei zu einer dritten xml-Datei kombiniere.
die erste xml-Datei besitzt ein Element, dass ich mit einer Id in der zweiten xml-Datei vergleichen möchte. Nach dem Vergleich soll der Inhalt des Elements mit der identischen ID in meine dritte xml-Datei eingetragen werden.
meine xsl-Datei:
<xsl:variable name="extItem" select="document('zweiteDatei.xml')"/><xsl:template match="/">
<orders>
<xsl:for-each select="//order">
<xsl:for-each select="orders/order">
(das "//order" ist "schlimm", weil wirklich unnötig)
<xsl:template match="item">
<no>
<xsl:for-each select="(//orders/order/item[alt_sku=$zweiteDatei/items/item/@artno])">
<xsl:value-of select="(alt_sku)" />
<xsl:value-of select="($zweiteDatei/items/item/@artno)" />
</xsl:for-each>
</no>
Abgesehen davon, dass $zweiteDatei eigentlich $extItem heissen soll, verstehe ich nicht was du hier machen möchtest. (* es sein denn du hast mehrere items (im 2. XML) die im @artno die ID ('alt_sku'??) eines items aus dem 1. XML haben)
Wenn "Nach dem Vergleich der Inhalt des Elements mit der identischen ID in meine dritte xml-Datei eingetragen werden soll", müsste das so aussehen:
<xsl:template match="item">
<xsl:variable name="altSku" select="alt_sku" />
...
<no>
<xsl:value-of select="$extItem/items/item[@artno = $altSku]" />
</no>
* dann sollte es so aussehen:
<xsl:template match="item">
<xsl:variable name="altSku" select="alt_sku" />
...
<xsl:for-each select="$extItem/items/item[@artno = $altSku]">
<no>
<xsl:value-of select="." />
</no>
</xsl:for-each>
Grüße
Thomas