This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Counting the nesting level of an element
- To: xsl-list at mulberrytech dot com
- Subject: Re: Counting the nesting level of an element
- From: Michel CASABIANCA <casa at sdv dot fr>
- Date: 15 May 2000 02:23:27 +0200
- References: <87r9b4hidz.fsf@free.fr>
- Reply-To: xsl-list at mulberrytech dot com
Hi,
Xavier Cazin <cazinx@online.fr> writes:
> I can't seem to be able to resolve this problem by myself: I'd just like to
> count the nesting level of <sect> in my document, in order to affect the
> result to HTML heading levels, so that I get h1, h2, etc...
>
> <xsl:template match="sect">
> <xsl:variable name="sect_nesting">
> <xsl:number level="any" count="?" format="1"/>
> </xsl:variable>
> <xsl:element name="h{$sect_nesting}">
> <xsl:apply-templates select="title/text()"/>
> </xsl:element>
> <xsl:apply-templates select="*[position() > 1]"/>
> </xsl:template>
>
> I've tried dozens of patterns to fill the count attribute of <xsl:number>,
> without being able to find the right combination of ancestors, descendants,
> or selfs... Any clue out there?
I think that none of patterns for <xsl:number> will match your needs.
I suggest this code instead :
<xsl:template match="sect">
<xsl:variable name="sect_nesting">
<xsl:value-of select="count(ancestor-or-self::sect)"/>
</xsl:variable>
<xsl:element name="h{$sect_nesting}">
<xsl:apply-templates select="title/text()"/>
</xsl:element>
<xsl:apply-templates select="*[position() > 1]"/>
</xsl:template>
It counts the number of <sect> elements that are ancestors of a given
<sect>.
--
+---------------------------+--------------------------------+
| Michel CASABIANCA | http://www.sdv.fr/pages/casa |
| mailto:casa@sdv.fr | Articles sur Java et XML |
| Développement Java et XML | Applications et Applets de Jeu |
+---------------------------+--------------------------------+
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list