xsl-list
[Top] [All Lists]

Re: Using xsl:for-each-group to create nested sections

2004-07-09 14:14:33
Hi Renee,

How can I get the stylesheet to wrap the nested section tags only
around the content beginning with the first <h2> and not around the
elements that come before the first <h2>?

Add a test to see whether the current node (which is the first node in
a particular group) is an <h2> element or not; if it is, then create
the <section> element; if it isn't, then don't:

<xsl:template match="doc">
  <doc>
    <xsl:for-each-group select="*" group-starting-with="h1">
      <section>
        <xsl:apply-templates select="current-group()[self::h1]" />
        <xsl:for-each-group select="current-group() except ."
                            group-starting-with="h2">
          <xsl:choose>
            <xsl:when test="self::h2">
              <section>
                <xsl:apply-templates
                  select="current-group()[self::*]" />
              </section>
            </xsl:when>
            <xsl:otherwise>
              <xsl:apply-templates
                select="current-group()[self::*]" />
            </xsl:otherwise>
          </xsl:choose>
        </xsl:for-each-group>
      </section>
    </xsl:for-each-group>
  </doc>
</xsl:template>

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/



<Prev in Thread] Current Thread [Next in Thread>