variable übergeben bzw. rekursion mit hochzählen
pet
- xsl
0 Thomas J.S.0 pet
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>
Hallo,
dass genau das macht was ich brauche... vielleicht könnt ihr mir weiterhelfen? also ich
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!
Du hast es fast geschafft, es fehlt dir nur eine Kleinigkeit.
Schau dir diesen Beitrag an: http://forum.de.selfhtml.org/archiv/2003/1/t33710/#m183373
Danach sollte es klappen, falls nicht: hier nochmal rückfragen.
Grüße
Thomas
jau, so funktioniert es! vielen dank! pet