Markus B.: Xsl:sort in einer for-each "schleife" mit increment! Problem

Beitrag lesen

Also ich habe eine for each schleife, in der Ich ein increment machen möchte. Ich weiss dass es in einem Template geht, aber ich brauche die sort funktion bzw. eine funktion die gnauso funktioniert.

Problem ist dass der counter immer wieder auf 1 zurückgesetzt wird in der for-each "schleife". Wenn ich nun ein Template match machen will kann ich zwar den counter erhöhen, aber ich kann keine xsl:sort funktion machen, gibts es da vl. noch eine andere Funktion die dann Funktionier? Oder wie kann ich dieses Problem sonst lösen?

Xml:

<data>  
    <name name="Computer">  
        <value>10.0</value>  
    </name>  
    <name name="Lohn">  
        <value>13.0</value>  
    </name>  
    <name name="Haushaltsartikelliste">  
        <value>6.8</value>  
    </name>  
    <name name="Strom">  
        <value>7.0</value>  
    </name>  
</data>  

xsl:

  
<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"  
    xmlns="http://www.w3.org/2000/svg">  
    <xsl:output method="xml" omit-xml-declaration="no" indent="yes" version="1.0"  
        doctype-system="-//W3C//DTD SVG 1.1//EN"  
        doctype-public="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"/>  
  
    <xsl:template match="/">  
        <xsl:processing-instruction name="xml-stylesheet">type="text/css"  
            href="Pfad Css"</xsl:processing-instruction>  
        <svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="50%" height="50%">  
<xsl:apply-templates select="/data"></xsl:apply-templates>  
        </svg>  
          </xsl:template>  
    <xsl:template name="name" match="/data">  
        <xsl:param name="counter">1</xsl:param>  
        <xsl:for-each select="name">  
                 <xsl:sort select="value" data-type="number" order="descending"/>  
            <text x="1%" y="{$counter}%"><xsl:value-of select="@name"/></text>  
            <text><xsl:value-of select="value"/></text>  
          <xsl:call-template name="name">  
              <xsl:with-param name="counter" select="$counter+1"></xsl:with-param>  
          </xsl:call-template>  
        </xsl:for-each>  
  
      </xsl:template>  
</xsl:stylesheet>  

Danke und MfG

Markus