Thomas J.S.: for-each anfrage

Beitrag lesen

Hallo,

Die "set" und "get" Knoten können dabei beliebig ineinandere verschachtelt sein und habe beide immer dieseleben Child-Knoten.

Ich würde diese gerne mit for.each ausgeben, in folgender Art und Weise.
Von oben nach unten durchgehen und jenachdem welchen Knoten kommt diesen ausgeben.

das geht irgendwie nicht, er findet den ersten nicht:
<xsl:for-each select="//filter//child::*">

Jetzt bist du bereits im Kind-Knoten vom filter.

xsl:choose
<xsl:when test="set">

Und jetzt überprüfst du ob <set|get> _in dem du ja bereits bist_, ein Kindelement <set> oder <get> hat dann rufst du deim Template auf. Sprich du übersprings immer eine Ebene.

Eigentlich ist for-each unnötig. Du kannst das ganze mit:

<xsl:template match="filter">
  <foobar>
   <xsl:apply-templates />
  </foobar>
 </xsl:template>
 <xsl:template match="set">
  <foo>
   <xsl:apply-templates />
  </foo>
 </xsl:template>
 <xsl:template match="get">
  <bar>
   <xsl:apply-templates />
  </bar>
 </xsl:template>

erledigen.

Grüße
Thomas