pet: variable übergeben bzw. rekursion mit hochzählen

Beitrag lesen

hallo zusammen,
ich schätze mein problem ist ein klassiker, aber ich habe bisher kein beispiel gefunden,

dass genau das macht was ich brauche... vielleicht könnt ihr mir weiterhelfen? also ich

möchte eine xml datei rekursiv durchlaufen und eine globale variable in der xsl datei mit

jeder rekursionsstufe eins hochzählen. dazu habe ich versucht die variable jeweils beim

<call-template> aufruf zu übergeben. aber scheinbar sie im aufgerufenen template dann

nicht sichtbar. wo liegt mein denkfehler? danke schonmal!

das ist meine xsl datei:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/>

<xsl:template match="rootelement">

<!--<global variable> -->
<xsl:param name="level" select="0"/>

<X3D profile="Immersive" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"

xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.0.xsd"

version="3.0">
 <Scene>
 <!--Rootelement-->
  <Transform>
   <Shape>
    <Text string='{$level}'/>
   </Shape>
  </Transform>
  <!--<Children> -->
   <xsl:call-template name="printChildren">
     <xsl:with-param name="level" select="$level +1" />
   </xsl:call-template>
 </Scene>
 </X3D>
 </xsl:template>

<xsl:template name="printChildren">
 <xsl:for-each select="child::*">
  <Transform>
   <Shape>
    <Text string='{$level}'/>
   </Shape>
  </Transform>
     <xsl:call-template name="printChildren">
   <xsl:with-param name="level" select="$level +1" />
           </xsl:call-template>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>