Chris Neff: Gruppierung von Instrumenten nach Instrumentenart

Beitrag lesen

Nachfolgend das komplette XSL.
Es zeigt zur Zeit die <instrument>s von <gruppe1> und <gruppe2> korrekt an, jedoch jeweils im Dreierpack, also:

gruppe1
a
b
c
gruppe1
a
b
c
gruppe1
a
b
c
gruppe2
d
e
f
gruppe2
d
e
f
gruppe2
d
e
f

Ich konnte bisher den DISTINCT nicht erfolgreich einbinden.

Hier das Matching zwischen den Begriffen:
GRUPPE1 und GRUPPE2 entsprechen name(parent::*)
ZEICHNUNG entspricht name(../parent::*)
INSTRUMENT entspricht //instrument

* * *

<?xml version="1.0" encoding="iso-8859-1"?>

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

<xsl:template match="/">

<xsl:for-each select="//instrument[name(../parent::*) = 'zeichnung']">

<xsl:sort select="name(parent::*)"/>

<xsl:variable name="gruppe"><xsl:value-of select="name(parent::*)"/></xsl:variable>

<tr><td colspan="100%" width="100%" align="left" valign="middle" height="25" class="normalwhite" bgcolor="#bbbbbb" style="padding:2pt;">

<xsl:value-of select="name(parent::*)"/>

</td></tr>
        <tr><td colspan="100%" width="100%" height="1" class="title"><img src="../img/pix_trans_1x1.gif" width="100%" height="1" border="0"/></td></tr>

<tr height="25" class="mittelfett" align="right">
        <td width="50%" align="left" style="padding-left:2pt;">Produktname</td>
        <td width="15%">Valor</td>
        <td width="20%">ISIN</td>
        <td width="15%" style="padding-right:2pt;">Verfall</td>
        </tr>
        <tr><td colspan="100%" width="100%" height="1" class="title"><img src="../img/pix_dark_1x1.gif" width="100%" height="1" border="0"/></td></tr>

<xsl:for-each select="//instrument[name(../parent::*) = 'zeichnung' and name(parent::*) = $gruppe]">

<tr height="25" class="mittel" align="right" style="cursor:pointer;" OnMouseOver="className='splistrowdark'" OnMouseOut="className='splistrow'">
                <xsl:attribute name="OnClick">javascript:parent.location.href='../products/spdetails.asp?chosen=<xsl:value-of select="instrumentVN1"/>'</xsl:attribute>
                <td align="left" style="padding-left:2px;"><xsl:if test="descrShort[.!='']">
                        <font class="mittel"><xsl:value-of select="descrShort"/></font>
                        </xsl:if>
                        <xsl:if test="descrShort[.='']">
                                n.a
                        </xsl:if>
                </td><td style="padding-right:0px;"><xsl:if test="isin[.!='']">
                        <xsl:value-of select="instrumentVN1"/>
                        </xsl:if>
                        <xsl:if test="instrumentVN1[.='']">
                                n.a
                        </xsl:if>
                </td><td style="padding-right:0px;"><xsl:if test="isin[.!='']">
                        <xsl:value-of select="isin"/>
                        </xsl:if>
                        <xsl:if test="isin[.='']">
                                n.a
                        </xsl:if>
                </td><td style="padding-right:2px;"><xsl:if test="isin[.!='']">
                        <xsl:value-of select="expirationDate"/>
                        </xsl:if>
                        <xsl:if test="expirationDate[.='']">
                                n.a
                        </xsl:if>
                </td></tr>
                <tr><td colspan="100%" width="100%" height="1" class="title"><img src="../img/pix_dark_1x1.gif" width="100%" height="1" border="0"/></td></tr>

</xsl:for-each>

<tr><td colspan="100%" width="100%" height="10" class="title"><img src="../img/pix_trans_1x1.gif" width="100%" height="10" border="0"/></td></tr>

</xsl:for-each>

</xsl:template>

</xsl:stylesheet>