gant: <xsl:for-each...> letzter Durchlauf mit anderen Anweisungen

Hallo

Ich habe ein xsl-template, dass mit einer for-each - schleife werte darstellt:

<td class="textSmall" width="85%"><xsl:for-each select="dokumentschlagwoerter/schlagwort"><xsl:value-of select="."/>; </xsl:for-each></td>

Die Ausgabe dieser Schleife ergibt:
schlagwort1; schlagwort2; ...; schlagwortN;

Nun wäre es schön, wenn das letzte (;) nicht mehr angezeigt würde. Kennt jemand eine Möglichkeit, wie ich den letzten Schleifendurchlauf derart modifizieren kann? Was für eine Lösung wäre da sonst möglich?

Danke und Grüsse

gant

  1. Hallo,

    Nun wäre es schön, wenn das letzte (;) nicht mehr angezeigt würde. Kennt jemand eine Möglichkeit, wie ich den letzten Schleifendurchlauf derart modifizieren kann? Was für eine Lösung wäre da sonst möglich?

    du musst einfach eine xs:if-Bedingung einbauen, die abfragt, ob der gegenwärtige Knoten nicht der letzte ist. Nur dann wird ; ausgegeben:

    XML-Datei

    <?xml version="1.0"?>
    <?xml-stylesheet href="schlagwort.xsl" type="text/xsl"?>
    <schlagwoerter>
      <schlagwort>schlagwort 1</schlagwort>
      <schlagwort>schlagwort 1</schlagwort>
      <schlagwort>schlagwort 1</schlagwort>
    </schlagwoerter>

    XSLT-Stylesheet

    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <html>
          <head>
            <title>Schlagwoerter</title>
          </head>
          <body>
            <table>
              <tr>
                <xsl:for-each select="schlagwoerter/schlagwort">
                  <td>
                    <xsl:value-of select="."/>
                    <xsl:if test="not(position()=last())">
                    ;
                    </xsl:if>
                  </td>
                </xsl:for-each>
              </tr>
            </table>
          </body>
        </html>
      </xsl:template>
    </xsl:stylesheet>

    Gruß
    Franz