Matthias: XSLT: Zähler hochzählen

Hallo zusammen,

ich möchte in meinem Stylesheet einen Zähler in einer Schleife
hochzählen lassen. Ich weiß, dass ich mir mit <xsl:variable ...>
eine Variable definieren kann. Leider hab ich keine Ahnung wie ich
diese hochzählen kann.

Zum besseren Verständnis dieselbe Aktion in C:

int Counter = 0;

Schleife{

Counter = Counter + 1;

}

Weiß jemand wie man so etwas macht?

Im Voraus herzlichen Dank!!

Matthias

  1. Hallo Matthias,

    ich möchte in meinem Stylesheet einen Zähler in einer Schleife
    hochzählen lassen. Ich weiß, dass ich mir mit <xsl:variable ...>
    eine Variable definieren kann. Leider hab ich keine Ahnung wie ich
    diese hochzählen kann.

    Dafür ist XSLT nicht geeignet, es ist ja keine Programmiersprache, wenn auch einige Elemente einer Programmiersprache enthalten sind.

    Falls du Numerieren möchtest kannst du <xsl:number ....> benutzen.
    s. http://www.w3.org/TR/xslt#element-number

    Mit JS kannst dir dir auf etwas unelegante Weise auch einen Zähler basteln. Folgendes Stylesheet gibt alle "Männer" aus und zählt bei jedem ausgegeben Element eins hoch (+ Ausgabe der Summe am Ende):

    XML-Datei:
    <?xml version="1.0"?>
    <?xml-stylesheet href="mattias.xsl" type="text/xsl"?>
    <ausgabe>
      <mann>peter</mann>
      <mann>dieter</mann>
      <mann>fritz</mann>
      <mann>otto</mann>
      <frau>annette</frau>
      <frau>nadja</frau>
      <frau>irmgard</frau>
      <frau>luise</frau>
    </ausgabe>

    XSL-Datei
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      
      <xsl:template match="/">
      
        <html>
          <head>
            <script language="Javascript">
              <![CDATA[
                  var zaehler = 0
                  function zaehlen() {
                      zaehler++;
                      return zaehler;
                  }
               ]]>
             </script>
            <title>Test</title>
          </head>
          <body>
            xsl:apply-templates/
          </body>
        </html>
      </xsl:template>
      
      <xsl:template match="ausgabe">
        <xsl:for-each select="mann">
           <p>
          
          <xsl:value-of select="."/>
          </p>
          <script language="Javascript">
              <![CDATA[
                  zaehlen();
                  
               ]]>
            
             </script>
        </xsl:for-each>
        <script language="Javascript">
              <![CDATA[
                  document.write(zaehler);
                  
               ]]>
            
             </script>
      </xsl:template>
    </xsl:stylesheet>

    Läuft zumindest im IE..

    Die number-Geschichte ist eigentlich auch nicht für Zähler gedacht, sondern zur Numerierung von Elementen.

    Kommt halt drauf an was du möchtest...

    Codebeispiele helfen da immer weiter :)

    Ciao
    Franz