Hallo,
Jetzt bin ich an der nächsten Stufe angelangt, wo ich mal wieder nicht weiter weiß.
Das XSL soll so sortieren, dass ich hinterher folgendes herausbekomme:
Artikel: 12345 / dazugehörige Teile: 10, 20, 30, 40 / Dokumente: 1030, 1040
Artikel: 10080 / dazugehörige Teile: 60, 70, 80 / Dokumente: 1090Das Problem ist hier, dass sich die Dokumente weiter unten in der XML in einer anderen Area befinden. Gibt es hierfür überhaupt eine Möglichkeit?
Dann setzen wir das XSL dort fort, wo es aufgehört hat und machen wir drei kleine Ergänzungen:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="datensatz" match="DATENSATZ" use="ARTIKEL" />
<xsl:template match="/test">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<xsl:for-each select="AREA1/DATENSATZ[generate-id() = generate-id(key('datensatz', ARTIKEL)[1])]">
<xsl:sort select="ARTIKEL" data-type="number" />
Artikel: <xsl:value-of select="ARTIKEL" /> / dazugehörige Teile:
<xsl:for-each select="key('datensatz', ARTIKEL)[ancestor::AREA1]">
<xsl:value-of select="TEIL" />
<xsl:if test="position() != last()">, </xsl:if>
</xsl:for-each>
/ Dokumente:
<xsl:for-each select="key('datensatz', ARTIKEL)[ancestor::AREA2]">
<xsl:value-of select="DOKUMENT" />
<xsl:if test="position() != last()">, </xsl:if>
</xsl:for-each>
<br />
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Du kannst statt:
<xsl:for-each select="AREA1/DATENSATZ[generate-id() = generate-id(key('datensatz', ARTIKEL)[1])]">
auch: <xsl:for-each select="//DATENSATZ ... nehmen,
Grüße
Thomas