|
Subject: Re: [xsl] problem with numbering From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Mon, 16 Sep 2002 16:32:04 +0100 |
Hi Lars,
> I have a problem with the xsl:number-element. In the following part
> of a XML-document I am not able to produce the numbering which I
> have declared in the comments.
>
> <NUMMERIERUNG>
> <!--1.--><NELEMENT>text1</NELEMENT>
> <!--2.--><NELEMENT>text2</NELEMENT>
> <NUMMERIERUNG>
> <!--2.1--><NELEMENT>text21</NELEMENT>
> <!--2.2--><NELEMENT>text22</NELEMENT>
> </NUMMERIERUNG>
> <!--3.--><NELEMENT>text3</NELEMENT>
> </NUMMERIERUNG>
That's a tough one. The multi-level numbering in XSLT is designed to
work with structures in which the ancestors of an element give it its
numbering; here, when an NELEMENT is nested inside a NUMMERIERUNG,
you're using the element before an element's parent to give it its
numbering.
I think that it's probably easiest to create a recursive template for
numbering NELEMENT elements. If an NELEMENT element's parent as a
NELEMENT preceding sibling, then apply templates to that to get the
first part of the number; the end of the number can be supplied
through a basic xsl:number:
<xsl:template match="NELEMENT" mode="number">
<xsl:apply-templates mode="number"
select="../preceding-sibling::*[1][self::NELEMENT]" />
<xsl:number format="1." />
</xsl:template>
Apply templates in 'number' mode to get an NELEMENT element's number.
To get the output you want, for example, use:
<xsl:template match="NELEMENT">
<xsl:apply-templates select="." mode="number" />
<xsl:value-of select="." />
</xsl:template>
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] problem with numbering, Lars Geldner | Thread | Re: [xsl] problem with numbering, G. Ken Holman |
| Re: [xsl] problem with numbering, G. Ken Holman | Date | Re: [xsl] grouping probs, Jeni Tennison |
| Month |