Hallo,
ich bastle schon seit Stunden an einem geeignetem pattern herum. Ihr seid meine letzte Hoffnung. Zum Problem:
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.
erste xml-Datei:
<orders>
<order id="1">
<info>
...
</info>
<item>
...
<alt_sku>123</alt_sku>
</item>
<item>
...
<alt_sku>345</alt_sku>
</item>
<item>
...
<alt_sku>321</alt_sku>
</item>
...
</order>
<order id="2">...
</order>
zweite xml-Datei:
<items>
<item artno="123">item 123</item>
<item artno="321">item 321</item>
</items>
meine xsl-Datei:
<xsl:variable name="extItem" select="document('zweiteDatei.xml')"/>
<xsl:template match="/">
<orders>
<xsl:for-each select="//order">
<order>
<info>
<xsl:apply-templates select="info" />
</info>
<xsl:apply-templates select="item" />
</order>
</xsl:for-each>
</orders>
</xsl:template>
<xsl:template match="info">
...
</xsl:template>
<xsl:template match="item">
<item>
...
<alt_sku><xsl:value-of select="alt_sku" /></alt_sku>
<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>
</item>
</xsl:template>
die Output-Datei soll so aussehen:
...
<item>
...
<alt_sku>123</alt_sku>
<no>1item 123</no
</item>
...
<item>
...
<alt_sku>321</alt_sku>
<no>item 321</no>
</item>
Ich hoffe, dass das einigermaßen verständlich war.
Vielen Dank schon im voraus.
Günter