hh: Sortierproblem? (2. Stufe)

Beitrag lesen

Hi,

es gibt vielleicht auf noch elegantere Lösungen, aber diese sollte funktionieren ;-)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="UTF-8" indent="yes"/>

<xsl:key name="datensatz" match="*" use="ARTIKEL"/>

<xsl:template match="/">
        <xsl:for-each
            select="/*/*/DATENSATZ[generate-id() = generate-id(key('datensatz', ARTIKEL)[1])]">
            <xsl:sort select="ARTIKEL" data-type="number"/>
            <xsl:variable name="currentArtikel" select="ARTIKEL"/> Artikel: <xsl:value-of
                select="ARTIKEL"/> / dazugehörige Teile: <xsl:for-each
                select="/*/AREA1/DATENSATZ[ARTIKEL = $currentArtikel]">
                <xsl:sort select="TEIL" order="ascending"/>
                <xsl:value-of select="TEIL"/>; </xsl:for-each> / dazugehörige Dokument:
            <xsl:sort select="DOCUMENT" order="ascending"/>
            <xsl:for-each select="/*/AREA2/DATENSATZ[ARTIKEL = $currentArtikel]">
                <xsl:value-of select="DOKUMENT"/>; </xsl:for-each><br/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

Gruß,

Holger

Hallo,

ich habe ja letzte Woche schon eine super Hilfe wegen einem XSL Sortierproblem bekommen.

Jetzt bin ich an der nächsten Stufe angelangt, wo ich mal wieder nicht weiter weiß.

Ausgangs XML:

<test>
  <AREA1>
    <DATENSATZ>
      <ARTIKEL>12345</ARTIKEL>
      <TEIL>10</TEIL>
    </DATENSATZ>
    <DATENSATZ>
      <ARTIKEL>12345</ARTIKEL>
      <TEIL>20</TEIL>
    </DATENSATZ>
    <DATENSATZ>
      <ARTIKEL>12345</ARTIKEL>
      <TEIL>30</TEIL>
    </DATENSATZ>
    <DATENSATZ>
      <ARTIKEL>12345</ARTIKEL>
      <TEIL>40</TEIL>
    </DATENSATZ>
    <DATENSATZ>
      <ARTIKEL>10080</ARTIKEL>
      <TEIL>60</TEIL>
    </DATENSATZ>
    <DATENSATZ>
      <ARTIKEL>10080</ARTIKEL>
      <TEIL>70</TEIL>
    </DATENSATZ>
    <DATENSATZ>
      <ARTIKEL>10080</ARTIKEL>
      <TEIL>80</TEIL>
    </DATENSATZ>
  </AREA1>
  <AREA2>
    <DATENSATZ>
      <ARTIKEL>12345</ARTIKEL>
      <DOKUMENT>1030</DOKUMENT>
    </DATENSATZ>
    <DATENSATZ>
      <ARTIKEL>12345</ARTIKEL>
      <DOKUMENT>1040</DOKUMENT>
    </DATENSATZ>
    <DATENSATZ>
      <ARTIKEL>10080</ARTIKEL>
      <DOKUMENT>1090</DOKUMENT>
    </DATENSATZ>
  </AREA2>
</test>

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: 1090

Das 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?

Danke schonmal :-)

Grüße
Cyberfuzzy

http://www.cyberfuzzy.com