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>
------------------------------------------------------------------------------------------------------------------
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>
------------------------------------------------------------------------------------------------------------------
Comment