ThomasM: Rekursion in einem XSL Stylesheet wie realisieren?

Beitrag lesen

Hallo Kollege,

Ich möchte jetzt mit xsl:for-each/ durch jedes Element gehen.
Das ganze soweit wie möglich rekursiv über die einzelnen Ebenen.
Also hat man jetzt noch 5 Ebenen drunter ein <component/> Element, soll das natürlich mit Einbezogen werden. Sind es nur 4 sollen sich halt nur 4 Schleifen ineinander schachteln.

Die Verwendung von xsl:for-each ist hier unnötig kompliziert. Wenn ich es richtig verstanden habe, dann soll eine Visualisierung des Baumes stattfinden. Hier mal ein Versuch mit Listenelementen (ul/li):

<xsl:template match="/">  
  <ul>  
    <xsl:apply-templates/>  
  </ul>  
</xsl:template>  
  
  
<xsl:template match="component">  
  <li>component</li>  
  <xsl:if test="count(component) >= 1">  
    <li><ul>  
      <xsl:apply-templates select="component"/>  
    </ul></li>  
  </xsl:if>  
</xsl:template>

Damit wird diese Ausgabe erhalten:

<ul>  
  <li>component</li>  
  <li>  
    <ul>  
      <li>component</li>  
      <li>  
        <ul>  
          <li>component</li>  
          <li>component</li>  
        </ul>  
      </li>  
      <li>component</li>  
      <li>  
        <ul>  
          <li>component</li>  
        </ul>  
      </li>  
    </ul>  
  </li>  
  <li>component</li>  
  <li>  
    <ul>  
      <li>component</li>  
      <li>  
        <ul>  
          <li>component</li>  
          <li>component</li>  
          <li>  
            <ul>  
              <li>component</li>  
              <li>component</li>  
            </ul>  
          </li>  
        </ul>  
      </li>  
    </ul>  
  </li>  
</ul>

Grüße,
Thomas