This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Number of node in list from stylesheet
- To: Sebastian Rahtz <sebastian dot rahtz at computing-services dot oxford dot ac dot uk>
- Subject: Re: Number of node in list from stylesheet
- From: Jeni Tennison <Jeni dot Tennison at epistemics dot co dot uk>
- Date: Tue, 23 May 2000 14:16:49 +0100
- Cc: xsl-list at mulberrytech dot com
- References: <3.0.6.32.20000523122441.011f2100@NTServer><3.0.6.32.20000523122441.011f2100@NTServer>
- Reply-To: xsl-list at mulberrytech dot com
Sebastian Rahtz wrote:
> > number, so January = 01, May = 05 and so on. So I defined the months in
> > order within the stylesheet itself:
> >
> > <foo:months>
> > <foo:month name="January" abbr="Jan" />
> > <foo:month name="February" abbr="Feb" />
>
>wouldn't it be easier to just say
>
><foo:month name="February" abbr="Feb" number="02"/>
That's what I did in the end.
However, thank you for your reply because thinking about examples to show
that it's not a good solution in situations where you want to add things to
list at random and still be able to number them gave me the following
solution:
<xsl:variable name="monthNumber">
<xsl:value-of
<xsl:value-of
select="format-number(count(document('')//foo:month[following-sibling::foo:m
onth[@name = $monthName]) + 1, '00')" />
</xsl:variable>
which works, but is a little ugly.
I also found another way that works by using xsl:number. Within the
template have:
<xsl:variable name="monthNumber">
<xsl:apply-templates select="document('')//foo:month" mode="getNumber">
<xsl:with-param name="monthName" select="$monthName" />
</xsl:apply-templates>
</xsl:variable>
and then create a template:
<xsl:template match="foo:month" mode="getNumber">
<xsl:param name="monthName" />
<xsl:if test="@name = $monthName">
<xsl:number format="01" />
</xsl:if>
</xsl:template>
This design pattern is useful when you (e.g.) want to number things in a
different document from your input XML.
Cheers,
Jeni
Dr Jeni Tennison
Epistemics Ltd, Strelley Hall, Nottingham, NG8 6PE
Telephone 0115 9061301 • Fax 0115 9061304 • Email
jeni.tennison@epistemics.co.uk
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list