parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Помогите с рекурсией в XSL, рабочий код без рекурсии работает, но хочется ПРАВИЛЬНО чтобы...

GoodVin 18.09.2003 09:47

Есть такой XSL (см. ниже).
Он рабочий, но вижу, что надо как-то рекурсией сделать и все будет очень просто.
count(ancestor::Группа)
использовать не получается, т.к. в XML идет логическая привязка по кодам @Идентификатор->@Родитель и все строки XML получаются на одном уровне.
<xsl:template match="Группа">
 <xsl:if test="@Родитель=$ТекущаяПапка">
  <DIV STYLE="padding-left: 0em"><xsl:apply-templates select="@Наименование" /></DIV>
  <xsl:variable name="Уровень_2" select="@Идентификатор" />
  <xsl:for-each select="//Группа">
   <xsl:if test="@Родитель=$Уровень_2">
    <DIV STYLE="padding-left: 1em"><xsl:apply-templates select="@Наименование" /></DIV>
    <xsl:variable name="Уровень_3" select="@Идентификатор" />
    <xsl:for-each select="//Группа">
     <xsl:if test="@Родитель=$Уровень_3">
      <DIV STYLE="padding-left: 2em"><xsl:apply-templates select="@Наименование" /></DIV>
      <xsl:variable name="Уровень_4" select="@Идентификатор" />
      ...
     </xsl:if>
    </xsl:for-each>
   </xsl:if>
  </xsl:for-each>
</xsl:if>
</xsl:template>