Announcement

Collapse
No announcement yet.

Problem mit Gruppierung. Innerhalb current-group() einmalig den Gruppierwert anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Gruppierung. Innerhalb current-group() einmalig den Gruppierwert anzeigen

    Hallo zusammen,

    stehe schon seit Tagen vor einem Problem, dass ich nicht lösen kann.

    Und zwar gruppiere ich eine Menge von Buchtiteln nach Anfangsbuchstaben.
    Das ist noch kein Problem:

    ---------------------------------------------------
    Computernetze
    ...

    Das Mädchen
    Der Herr der Ringe
    ...
    ---------------------------------------------------

    Jetzt möchte ich aber davor jedesmal den Anfangsbuchstaben anzeigen, also:

    ---------------------------------------------------
    *C*
    Computernetze
    ...

    *D*
    Das Mädchen
    Der Herr der Ringe
    ...
    ---------------------------------------------------

    Das Problem ist, ich komme an den Anfangsbuchstaben nur innerhalb der current-group() Schleife ran.
    Es wird also zu jedem Eintrag der Anfangsbuchstabe angezeigt:

    ---------------------------------------------------
    *C*
    Computernetze
    ...

    *D*
    Das Mädchen
    *D*
    Der Herr der Ringe
    ...
    ---------------------------------------------------

    Ich habe gehört, mit der sogenannten Münch-Methode soll dies möglich sein. Allerdings war mein Vorhaben, dass Problem ausschließlich mit der neuen Funktionalität von XSLT 2.0 zu lösen.

    Weiß hier jemand Rat, bzw. stand schon jemand mal vor dem gleichen Problem?
    Hier noch der source code.

    Gruß Alwin

    ------------------------------------------------------------------------------------------------------------------
    <xsl:template match="/">

    <!-- Listenansicht aufsteigend sortiert -->
    <xsl:result-document href="{$html_dir}ascending.html" format="default">
    <html>
    <head>
    <link rel="stylesheet" type="text/css" href="{$style_dir}ListStyle.css" />
    </head>
    <body>

    <xsl:for-each-group select="*/BUCH"
    group-by="upper-case(substring(TITEL,1,1))">
    <xsl:sort select="current-grouping-key()" />

    <xsl:call-template name="listenansicht" />

    </xsl:for-each-group>

    </body>
    </html>
    </xsl:result-document>
    </xsl:template>

    <!-- Listenansicht erstellen -->
    <xsl:template name="listenansicht">

    <!-- Listeneinträge erstellen -->
    <xsl:for-each select="current-group()">

    <xsl:value-of select="current-grouping-key()" />

    <table id="TABLE" cellspacing="0" border="0">
    <tr id="{if(position() mod 2 eq 0) then 'ROW1' else 'ROW2'}">
    <td id="FLAGROW"><img src="{$flags_dir}{@SPRACHE}.{$flag_img_type}" /></td>
    <td><xsl:value-of select="TITEL" /></td>
    <td id="AUTHORROW"><xsl:value-of select="AUTOR" /></td>
    <td id="DETAILROW"><a href="{@ISBN}.html">Details</a></td>
    </tr>
    </table>

    </xsl:for-each>

    </xsl:template>
    ------------------------------------------------------------------------------------------------------------------
    Zuletzt editiert von aheinem; 13.06.2007, 12:56.

  • #2
    Nachfolgender Code löst mein Problem auf die traditionelle Weise. Hier stellt sich also die Frage, ob die Münch-Methode tatsächlich mit XSLT 2.0 überflüssig geworden ist. Mir ist es jedenfalls noch nicht gelungen, allein mit Hilfe von group-by, current-group und current-grouping-key das Problem zu lösen.

    Ich kann in obiger Version die Anfangsbuchstaben anzeigen, aber z.B. nicht gezielt Anfangsbuchstaben ausgeben. Dazu müsste ich innerhalb der current-group()-Schleife eine if-Abfrage machen. Wenn ich jetzt mehrere Treffer habe, würde der Anfangsbuchstabe statt nur einmal, mehrere Male angezeigt.


    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl: output method="html"/>

    <xsl:key name="myKey" match="BUCH" use="substring(TITEL,1,1)" />

    <xsl:template match="/BUECHERLISTE">
    <html>
    <xsl:for-each select="//BUCH[generate-id(.) = generate-id(key('myKey', substring(TITEL,1,1))[1])]" >
    <xsl:sort select="TITEL" />
    <xsl:if test="GENREID=1">
    <a href="#{generate-id(.)}">
    <xsl:value-of select="substring(TITEL,1,1)" />
    </a>
    <xsl:text> </xsl:text>
    </xsl:if>
    </xsl:for-each>

    <br /><br />

    <xsl:for-each select="//BUCH[generate-id(.) = generate-id(key('myKey', substring(TITEL,1,1))[1])]" >
    <xsl:sort select="TITEL" />

    <xsl:if test="GENREID=1">
    <span id="{generate-id(.)}">
    <xsl:value-of select="substring(TITEL,1,1)" />
    </span>

    <table border="1">
    <xsl:for-each select="key('myKey', substring(TITEL,1,1))">
    <xsl:sort select="TITEL"/>
    <xsl:call-template name="buch" />
    </xsl:for-each>
    </table>
    </xsl:if>

    </xsl:for-each>
    </html>
    </xsl:template>

    <xsl:template name="buch">
    <tr>
    <xsl:if test="GENREID=1">
    <td width="100" align="center"><xsl:value-of select="TITEL" /></td>
    <td width="100" align="center"><xsl:value-of select="AUTOR" /></td>
    </xsl:if>
    </tr>
    </xsl:template>

    </xsl:stylesheet>


    Ausschnitt XML-Datei:

    <BUECHERLISTE>
    <BUCH ISBN="978-3548256115" SPRACHE="de">
    <TITEL>Es</TITEL>
    <AUTOR>Stephen King</AUTOR>
    <VERLAG>Ullstein Tb</VERLAG>
    <AUFLAGE>1</AUFLAGE>
    <JAHR>2003</JAHR>
    <PREIS>6</PREIS>
    <WAEHRUNG>€</WAEHRUNG>
    <GENREID>1</GENREID>
    <BESCHREIBUNG>
    </BESCHREIBUNG>
    </BUCH>
    Zuletzt editiert von aheinem; 14.06.2007, 08:29.

    Comment


    • #3
      Mit dem knappen XML-Code lässt sich nicht sinnvoll testen. Vermutlich hilft aber die Abfrage von position() = 1 innerhalb des Durchlaufens von current-group() und Ausgabe von current-grouping-key() nur im Erfolgsfall.

      Comment


      • #4
        Hier nochmal etwas mehr XML-Daten und dahinter noch eine kurze Zusammenfassung des Problems.

        <?xml version="1.0" encoding="utf-8"?>
        <BUECHERLISTE>
        <BUCH ISBN="978-3548256115" SPRACHE="de">
        <TITEL>Es</TITEL>
        <AUTOR>Stephen King</AUTOR>
        <VERLAG>Ullstein Tb</VERLAG>
        <AUFLAGE>1</AUFLAGE>
        <JAHR>2003</JAHR>
        <PREIS>6</PREIS>
        <WAEHRUNG>€</WAEHRUNG>
        <GENREID>1</GENREID>
        <BESCHREIBUNG>
        </BESCHREIBUNG>
        </BUCH>
        <BUCH ISBN="978-3453028609" SPRACHE="de">
        <TITEL>Puls</TITEL>
        <AUTOR>Stephen King</AUTOR>
        <VERLAG>Heyne</VERLAG>
        <AUFLAGE>1</AUFLAGE>
        <JAHR>2006</JAHR>
        <PREIS>19.95</PREIS>
        <WAEHRUNG>€</WAEHRUNG>
        <GENREID>2</GENREID>
        <BESCHREIBUNG>
        </BESCHREIBUNG>
        </BUCH>
        <BUCH ISBN="978-3453265325" SPRACHE="de">
        <TITEL>Love</TITEL>
        <AUTOR>Stephen King</AUTOR>
        <VERLAG>Heyne</VERLAG>
        <AUFLAGE>1</AUFLAGE>
        <JAHR>2006</JAHR>
        <PREIS>22.95</PREIS>
        <WAEHRUNG>€</WAEHRUNG>
        <GENREID>3</GENREID>
        <BESCHREIBUNG>
        </BESCHREIBUNG>
        </BUCH>
        <BUCH ISBN="978-3548252421" SPRACHE="de">
        <TITEL>Das Maedchen</TITEL>
        <AUTOR>Stephen King</AUTOR>
        <VERLAG>Ullstein Tb</VERLAG>
        <AUFLAGE>1</AUFLAGE>
        <JAHR>2001</JAHR>
        <PREIS>8.45</PREIS>
        <WAEHRUNG>€</WAEHRUNG>
        <GENREID>1</GENREID>
        <BESCHREIBUNG>
        </BESCHREIBUNG>
        </BUCH>
        <BUCH ISBN="978-3827370464" SPRACHE="de">
        <TITEL>Computernetzwerke</TITEL>
        <AUTOR>Andrew S. Tanenbaum</AUTOR>
        <VERLAG>Pearson Studium</VERLAG>
        <AUFLAGE>4</AUFLAGE>
        <JAHR>2003</JAHR>
        <PREIS>49.95</PREIS>
        <WAEHRUNG>€</WAEHRUNG>
        <GENREID>1</GENREID>
        <BESCHREIBUNG>
        </BESCHREIBUNG>
        </BUCH>
        <BUCH ISBN="978-3827370198" SPRACHE="de">
        <TITEL>Moderne Betriebssysteme</TITEL>
        <AUTOR>Andrew S. Tanenbaum</AUTOR>
        <VERLAG>Pearson Studium</VERLAG>
        <AUFLAGE>2</AUFLAGE>
        <JAHR>2002</JAHR>
        <PREIS>49.95</PREIS>
        <WAEHRUNG>€</WAEHRUNG>
        <GENREID>1</GENREID>
        <BESCHREIBUNG>
        </BESCHREIBUNG>
        </BUCH>
        <BUCH ISBN="978-3827371515" SPRACHE="de">
        <TITEL>Computerarchitektur</TITEL>
        <AUTOR>Andrew S. Tanenbaum</AUTOR>
        <VERLAG>Pearson Studium</VERLAG>
        <AUFLAGE>5</AUFLAGE>
        <JAHR>2005</JAHR>
        <PREIS>49.95</PREIS>
        <WAEHRUNG>€</WAEHRUNG>
        <GENREID>1</GENREID>
        <BESCHREIBUNG>
        </BESCHREIBUNG>
        </BUCH>
        </BUECHERLISTE>



        Hier nochmal eine kurze Zusammenfassung des Problems, was geht und was nicht geht.

        Was geht: Es werden alle Titel, gruppiert nach Anfangsbuchstabe, ausgegeben

        A
        aa
        ab
        ac
        ...

        B
        ba
        bb
        bc
        ...

        Z
        ...

        Was nicht geht: Nur die Titel ausgeben, deren GENREID den gleichen Wert hat. Nur innerhalb von current-group() hat man Zugriff auf das Attribut @GENREID. D.h aber, dass zu jedem Titel auf den z.B. @GENREID=1 zutrifft, der Anfangsbuchstabe mit ausgegeben wird:

        A
        aa
        A
        ab
        A
        ac
        ...

        Soll:

        A
        aa <- Titel von Büchern, mit dem gleichen Wert für GENREID
        ab
        ac
        ...

        Hilft nicht, hab ich auch schon dran gedacht:

        <xsl:for-each select="current-group()">
        <xsl:if test="$GenreID=@GENREID">
        <xsl:if test="position()=1">
        AUSGABE
        </xsl:if>
        </xsl:if>
        </xsl:for-each>
        Zuletzt editiert von aheinem; 14.06.2007, 18:54.

        Comment


        • #5
          Probiere mal diesen Ansatz:

          Code:
          <?xml version="1.0" encoding="UTF-8"?>
          <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:fn="http://www.w3.org/2005/xpath-functions">
          	
            <xsl:output method="xhtml" exclude-result-prefixes="xs fn"/>
          
            <xsl:template match="BUECHERLISTE">
              <html xmlns="http://www.w3.org/1999/xhtml">
                <head>
                  <title>Test</title>
                </head>
                <body>
                <xsl:for-each-group select="BUCH" group-by="substring(TITEL,1,1)">
                  <xsl:sort select="TITEL" data-type="text" order="ascending"/>
                  <strong><xsl:value-of select="fn:substring(TITEL,1,1)"/></strong><br/>
                  <xsl:for-each-group select="current-group()" group-by="TITEL">
                    <xsl:sort select="GENREID" data-type="number" order="ascending"/>
                    <xsl:sort select="TITEL" data-type="text" order="ascending"/>
                    <xsl:text>GENREID: </xsl:text><xsl:value-of select="GENREID"/>
                    <xsl:text> | </xsl:text><xsl:value-of select="TITEL"/><br/>
                  </xsl:for-each-group><br/>
                 </xsl:for-each-group>
                </body>
              </html>
            </xsl:template>
            
          </xsl:stylesheet>
          Ausgabe:

          C
          GENREID: 1 | Computerarchitektur
          GENREID: 1 | Computernetzwerke

          D
          GENREID: 1 | Das Maedchen

          E
          GENREID: 1 | Es

          L
          GENREID: 3 | Love

          M
          GENREID: 1 | Moderne Betriebssysteme

          P
          GENREID: 2 | Puls

          Comment


          • #6
            Genau, jetzt soll aber noch selektiert werden. Dazu habe ich dein Programm ein klein bisschen abgeändert. Danach habe ich noch den Inhalt der XML-Datei eingefügt. So kannst du alles direkt testen. Ich vergleiche zum Test auf Genre ID 2. Beim Titel "Das Mädchen" wird der Anfangsbuchstabe "D" nicht angezeigt! Liegt daran, dass der Vergleich nur in der current-group() Schleife funktionieren kann. Da habe ich aber das Problem, dass die Anfangsbuchstaben zu jedem Titel erscheinen.

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

            <xsl: output method="html"/>

            <xsl:template match="BUECHERLISTE">
            <html>
            <body>
            <xsl:for-each-group select="BUCH" group-by="substring(TITEL,1,1)">
            <xsl:sort select="TITEL" data-type="text" order="ascending"/>
            <xsl:if test="@GENREID=2">
            <strong><xsl:value-of select="substring(TITEL,1,1)"/></strong><br/>
            </xsl:if>
            <xsl:for-each-group select="current-group()" group-by="TITEL">
            <xsl:sort select="@GENREID" data-type="number" order="ascending"/>
            <xsl:sort select="TITEL" data-type="text" order="ascending"/>
            <xsl:if test="@GENREID=2">
            <xsl:text>GENREID: </xsl:text><xsl:value-of select="@GENREID"/>
            <xsl:text> | </xsl:text><xsl:value-of select="TITEL"/><br/>
            </xsl:if>
            </xsl:for-each-group><br/>
            </xsl:for-each-group>
            </body>
            </html>
            </xsl:template>

            </xsl:stylesheet>



            XML-Inhalt:

            <?xml version="1.0" encoding="utf-8"?>


            <BUECHERLISTE>
            <BUCH ISBN="978-3608935417" SPRACHE="de" GENREID="1">
            <TITEL>Der Herr der Ringe - Die Gefährten</TITEL>
            <AUTOR>J. R. R. Tolkien</AUTOR>
            <VERLAG>Klett-Cotta</VERLAG>
            <AUFLAGE>11</AUFLAGE>
            <JAHR>2002</JAHR>
            <PREIS>13.50</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-0261102354" SPRACHE="en" GENREID="1">
            <TITEL>The Lord of the Rings - The Fellowship of the Rings</TITEL>
            <AUTOR>J. R. R. Tolkien</AUTOR>
            <VERLAG>Harpercollins</VERLAG>
            <AUFLAGE>New Ed</AUFLAGE>
            <JAHR>2007</JAHR>
            <PREIS>12,89</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-0261102361" SPRACHE="en" GENREID="1">
            <TITEL>The Lord of the Rings - The Two Towers</TITEL>
            <AUTOR>J. R. R. Tolkien</AUTOR>
            <VERLAG>Harpercollins</VERLAG>
            <AUFLAGE>New Ed</AUFLAGE>
            <JAHR>1999</JAHR>
            <PREIS>11,20</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3551551672" SPRACHE="de" GENREID="1">
            <TITEL>Harry Potter und der Stein der Weisen</TITEL>
            <AUTOR>Joanne K. Rowling</AUTOR>
            <VERLAG>Carlsen</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>1998</JAHR>
            <PREIS>14,90</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>


            <BUCH ISBN="978-3551551689" SPRACHE="de" GENREID="1">
            <TITEL>Harry Potter und die Kammer des Schreckens</TITEL>
            <AUTOR>Joanne K. Rowling</AUTOR>
            <VERLAG>Carlsen</VERLAG>
            <AUFLAGE>3</AUFLAGE>
            <JAHR>1999</JAHR>
            <PREIS>14,90</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3551354037" SPRACHE="de" GENREID="1">
            <TITEL>Harry Potter und der Gefangene von Askaban</TITEL>
            <AUTOR>Joanne K. Rowling</AUTOR>
            <VERLAG>Carlsen</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2007</JAHR>
            <PREIS>8,95</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3551551931" SPRACHE="de" GENREID="1">
            <TITEL>Harry Potter und der Feuerkelch</TITEL>
            <AUTOR>Joanne K. Rowling</AUTOR>
            <VERLAG>Carlsen</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2000</JAHR>
            <PREIS>22,90</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3551555557" SPRACHE="de" GENREID="1">
            <TITEL>Harry Potter und der Orden des Phönix</TITEL>
            <AUTOR>Joanne K. Rowling</AUTOR>
            <VERLAG>Carlsen</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2003</JAHR>
            <PREIS>28,90</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3548256115" SPRACHE="de" GENREID="2">
            <TITEL>Es.</TITEL>
            <AUTOR>Stephen King</AUTOR>
            <VERLAG>Ullstein Tb</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2003</JAHR>
            <PREIS>6</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3453028609" SPRACHE="de" GENREID="2">
            <TITEL>Puls</TITEL>
            <AUTOR>Stephen King</AUTOR>
            <VERLAG>Heyne</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2006</JAHR>
            <PREIS>19.95</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3453265325" SPRACHE="de" GENREID="2">
            <TITEL>Love</TITEL>
            <AUTOR>Stephen King</AUTOR>
            <VERLAG>Heyne</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2006</JAHR>
            <PREIS>22.95</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3548252421" SPRACHE="de" GENREID="2">
            <TITEL>Das Mädchen</TITEL>
            <AUTOR>Stephen King</AUTOR>
            <VERLAG>Ullstein Tb</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2001</JAHR>
            <PREIS>8.45</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3442244591" SPRACHE="de" GENREID="3">
            <TITEL>Star Wars: Das Erbe der Jedi-Ritter 17. Wider alle Hoffnung</TITEL>
            <AUTOR>Sean Williams</AUTOR>
            <VERLAG>Blanvalet</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2007</JAHR>
            <PREIS>9,00</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3442244911" SPRACHE="de" GENREID="3">
            <TITEL>Star Wars - Dunkles Nest 01. Die Königsdrohne.</TITEL>
            <AUTOR>Troy Denniung</AUTOR>
            <VERLAG>Blanvalet</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2008</JAHR>
            <PREIS>8,95</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3827370464" SPRACHE="de" GENREID="4">
            <TITEL>Computernetzwerke</TITEL>
            <AUTOR>Andrew S. Tanenbaum</AUTOR>
            <VERLAG>Pearson Studium</VERLAG>
            <AUFLAGE>4</AUFLAGE>
            <JAHR>2003</JAHR>
            <PREIS>49.95</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3827370198" SPRACHE="de" GENREID="4">
            <TITEL>Moderne Betriebssysteme</TITEL>
            <AUTOR>Andrew S. Tanenbaum</AUTOR>
            <VERLAG>Pearson Studium</VERLAG>
            <AUFLAGE>2</AUFLAGE>
            <JAHR>2002</JAHR>
            <PREIS>49.95</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3827371515" SPRACHE="de" GENREID="4">
            <TITEL>Computerarchitektur</TITEL>
            <AUTOR>Andrew S. Tanenbaum</AUTOR>
            <VERLAG>Pearson Studium</VERLAG>
            <AUFLAGE>5</AUFLAGE>
            <JAHR>2005</JAHR>
            <PREIS>49.95</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG>
            </BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3834801562" SPRACHE="de" GENREID="5">
            <TITEL>Mathematische Formelsammlung für Ingenieure und Naturwissenschaftler</TITEL>
            <AUTOR>Lothar Papula</AUTOR>
            <VERLAG>Vieweg</VERLAG>
            <AUFLAGE>9</AUFLAGE>
            <JAHR>2006</JAHR>
            <PREIS>25,90</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3834801579" SPRACHE="de" GENREID="5">
            <TITEL>Mathematik für Ingenieure und Naturwissenschaftler. Klausur- und Übungsaufgaben</TITEL>
            <AUTOR>Lothar Papula</AUTOR>
            <VERLAG>Vieweg</VERLAG>
            <AUFLAGE>2</AUFLAGE>
            <JAHR>2007</JAHR>
            <PREIS>32,90</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3551710000" SPRACHE="de" GENREID="6">
            <TITEL>Tim und Struppi 19. Tim in Tibet</TITEL>
            <AUTOR>Herge</AUTOR>
            <VERLAG>Carlsen</VERLAG>
            <AUFLAGE>1</AUFLAGE>
            <JAHR>2007</JAHR>
            <PREIS>3,95</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            <BUCH ISBN="978-3770400089" SPRACHE="de" GENREID="6">
            <TITEL>Asterix, Bd.8, Asterix bei den Briten</TITEL>
            <AUTOR>Albert Uderzo</AUTOR>
            <VERLAG>Ehapa Comic Collection</VERLAG>
            <AUFLAGE>8</AUFLAGE>
            <JAHR>2004</JAHR>
            <PREIS>10,00</PREIS>
            <WAEHRUNG>€</WAEHRUNG>
            <BESCHREIBUNG></BESCHREIBUNG>
            </BUCH>

            </BUECHERLISTE>
            Zuletzt editiert von aheinem; 17.06.2007, 11:34.

            Comment


            • #7
              Frage beim ersten Element xsl:for-each-group nicht nach "BUCH", sondern nach "BUCH[@GENREID=2]" ab und lasse die xsl:if-Abfrage um die Ausgabe der Anfangsbuchstaben weg, der Rest sollte so bleiben können:

              Code:
              <?xml version="1.0" encoding="UTF-8"?>
              <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:fn="http://www.w3.org/2005/xpath-functions">
              	
                <xsl:output method="xhtml" exclude-result-prefixes="xs fn"/>
              
                <xsl:template match="BUECHERLISTE">
                  <html xmlns="http://www.w3.org/1999/xhtml">
                    <body>
                    <xsl:for-each-group select="BUCH[@GENREID=2]" group-by="substring(TITEL,1,1)">
                      <xsl:sort select="TITEL" data-type="text" order="ascending"/>
                      <strong><xsl:value-of select="substring(TITEL,1,1)"/></strong><br/>
                      <xsl:for-each-group select="current-group()" group-by="TITEL">
                        <xsl:sort select="@GENREID" data-type="number" order="ascending"/>
                        <xsl:sort select="TITEL" data-type="text" order="ascending"/>
                        <xsl:if test="@GENREID=2">
                          <xsl:text>GENREID: </xsl:text><xsl:value-of select="@GENREID"/>
                          <xsl:text> | </xsl:text><xsl:value-of select="TITEL"/><br/>
                        </xsl:if>
                      </xsl:for-each-group><br/>
                    </xsl:for-each-group>
                    </body>
                  </html>
              </xsl:template>
              
              </xsl:stylesheet>
              Ergebnis:

              D
              GENREID: 2 | Das Mädchen

              E
              GENREID: 2 | Es.

              L
              GENREID: 2 | Love

              P
              GENREID: 2 | Puls

              Comment


              • #8
                Sie haben die Lösung gefunden!

                Mensch... Ich und noch zwei Komilitonen sitzen da schon eine halbe Ewigkeit dran.

                Vielen Dank!!!

                Comment

                Working...
                X