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

Beitrag lesen

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