Micha0987: doppeltes xsl:for-each

Beitrag lesen

nein eher so in der xml
<name>hase</name><jahr>2007<jahr><betrag>20.00</betrag>
<name>hase</name><jahr>2006<jahr><betrag>880.00</betrag>
<name>hase</name><jahr>2006<jahr><betrag>37.00</betrag>
<name>hase</name><jahr>2007<jahr><betrag>21.00</betrag>

davon mit verschiedenen namen halt einige seiten.

das ganzw wird in ein pdf gezaubert...

aber beim pdf steht halt dann immer
hase     2007  20.00
hase     2006  880.00
hase     2006  37.00
hase     2007  21.00

ich will aber das es so aussieht...

hase 2007  20.00
     2006  880.00
     2006  37.00
     2007  21.00

selbst die xsl datei ist ellenlang....

<xsl:for-each select="****">
  fo:table-row
   <fo:table-cell padding="0.5pt">
    fo:block
     <xsl:value-of select="****"/>
    </fo:block>
   </fo:table-cell>
  </fo:table-row>
 <xsl:apply-templates select="****"/>
</xsl:for-each>

Das ist jetzt eine sehr gekürzte Variante... hab noch ein paar Seiten davon *g*
Das for-each oben ist dafür, die Zeilen zu wiederholen mit den Zahlen (jahr/betrag)
Oder kann man "doppelte Einträge" wegblenden?

vielleicht hilft das ja ein wenig

Hi nochmal!

Dann versuch ich's halt als Orakel:

Ich glaube jetzt verstanden zu haben, dass deine xml Datei aus, sagen wir mal, Datengruppen aufgebaut wie vorgeschlagen aufgebaut ist:
<el col1="A" col2="12" col3="88"/>
<el col1="A" col2="02" col3="188"/>
<el col1="B" col2="09" col3="818"/>
<el col1="B" col2="99" col3="81"/>

Und jetzt möchtest du ein html output, indem col1 nur jeweils einmal pro Gruppe aufgeführt ist ?

Nun gut:

(sei col1 ein kein rein nummersicher eintrag => type=text)

<xsl:for each select="./el">
<xsl:sort select = "./@col1" order="ascending" data-type="text"/>
  <xsl:variable name="compare">
    xsl:choose
      <xsl:when test="position()=1"></xsl:when>
      xsl:otherwise<xsl:value-of select="./@col1"/></xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <xsl:if test="./@col1!=$compare">
    <p>Nur einmal: <xsl:value-of select="./@col1"/></p>
  </xsl:if>
  <p>Jedesmal: <xsl:value-of select="./@col2"/> <xsl:value-of select="./@col3"/></p>
</xsl:for-each>

Mehr gibt die Kristallkugel leider nicht her.

Grüsse,
Richard