Re: [xsl] numbering/count()

Subject: Re: [xsl] numbering/count()
From: Bruce D'Arcus <bdarcus@xxxxxxxxx>
Date: Fri, 20 May 2005 12:32:54 -0400
On 5/20/05, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote:

> In a function, I believe this means passing in your context node as a
> parameter and changing context to it explicitly before invoking xsl:number.
> Apart from that (note this is different from a named template, which keeps
> the context from which it's called), I don't see why it shouldn't work. And
> it's easy enough to test.

OK, input:

<doc>
  <p>a <citation/> and a <footnote/></p>
</doc>

XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  xmlns:xs="http://www.w3.org/2001/XMLSchema";
  xmlns:bib="http://purl.org/NET/xbiblio/citeproc"; version="2.0">

  <xsl:template match="doc">
    <result>
      <xsl:apply-templates/>
    </result>
  </xsl:template>

  <xsl:template match="p">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="footnote">
    <number>
      <xsl:value-of select="bib:footcite(.)"/>
    </number>
  </xsl:template>

  <xsl:template match="citation">
    <number>
      <xsl:value-of select="bib:footcite(.)"/>
    </number>
  </xsl:template>

  <xsl:function name="bib:footcite" as="xs:string">
    <xsl:param name="footciteable" as="element()"/>
    <xsl:number level="any" select="$footciteable"/>
  </xsl:function>

</xsl:stylesheet>

expected result:

<result>
  a <number>1</number> and a <number>2</number>
</result>

(unexpected) output:

<result>
  a <number>1</number> and a <number>1</number>
</result>

Any suggestions?

Bruce

Current Thread