Hallo zusammen,
ich habe mal wieder ein Problem, bei dem ich nicht weiter komme:
ich habe folgende XML Struktur:
Ergebnis soll sein:
Also nur die Kapitel ausgeben, bei denen mindestens eine Produktart mit dem des Dokuments übereinstimmt. Es gibt viele Dokumente und insgesamt 8 Produktarten.
Mein Ansatz ist:
Mir ist klar, dass das so nicht funktionieren kann, weil in der Variable "Art1Art2Art3" steht und dieser komplette String nur im ersten Kapitel vorkommt, das mir auch ausgegeben wird ...
Muss ich die Variablendefinition ändern? Ist der Ansatz überhaupt zu gebrauchen? Es steht leider nur xslt 1.0 zur verfügung...
Ich hoffe mir kann mal wieder geholfen werden...
Vielen Dank!
Helix
ich habe mal wieder ein Problem, bei dem ich nicht weiter komme:
ich habe folgende XML Struktur:
Code:
<root> <Dokument> <Produktarten> <Produktart>Art1</Produktart> <Produktart>Art2</Produktart> <Produktart>Art3</Produktart> </Produktarten> <Kapitel> <Produktarten> <Produktart>Art1</Produktart> <Produktart>Art2</Produktart> <Produktart>Art3</Produktart> </Produktarten> </Kapitel> <Kapitel> <Produktarten> <Produktart>Art1</Produktart> <Produktart>Art2</Produktart> <Produktart>Art3</Produktart> <Produktart>Art4</Produktart> <Produktart>Art5</Produktart> </Produktarten> </Kapitel> <Kapitel> <Produktarten> <Produktart>Art4</Produktart> <Produktart>Art5</Produktart> </Produktarten> </Kapitel> <Kapitel> <Produktarten> <Produktart>Art3</Produktart> </Produktarten> </Kapitel> </Dokument> </root>
Code:
<root> <Dokument> <Produktarten> <Produktart>Art1</Produktart> <Produktart>Art2</Produktart> <Produktart>Art3</Produktart> </Produktarten> <Kapitel> <Produktarten> <Produktart>Art1</Produktart> <Produktart>Art2</Produktart> <Produktart>Art3</Produktart> </Produktarten> </Kapitel> <Kapitel> <Produktarten> <Produktart>Art1</Produktart> <Produktart>Art2</Produktart> <Produktart>Art3</Produktart> <Produktart>Art4</Produktart> <Produktart>Art5</Produktart> </Produktarten> </Kapitel> <Kapitel> <Produktarten> <Produktart>Art3</Produktart> </Produktarten> </Kapitel> </Dokument> </root>
Mein Ansatz ist:
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <xsl:for-each select="//Dokument"> <xsl:variable name="cur.doku.Prod_art"> <xsl:value-of select="Prodarten[concat(Produktart, '')]"/> </xsl:variable> <xsl:for-each select="descendant::Kapitel[Produktarten/Produktart='' or contains(concat(Prod_arten/Prodart, ''), $cur.doku.Prod_art)]"> <xsl:copy-of select="Produktarten"/> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Muss ich die Variablendefinition ändern? Ist der Ansatz überhaupt zu gebrauchen? Es steht leider nur xslt 1.0 zur verfügung...
Ich hoffe mir kann mal wieder geholfen werden...
Vielen Dank!
Helix
Comment