Re: [xsl] xsl:number value="id(@ref)" ?

Subject: Re: [xsl] xsl:number value="id(@ref)" ?
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Mon, 28 Oct 2002 17:35:19 -0500

Your problem is simply that xsl:number works differently from what you expect: in particular, the 'value' attribute doesn't work this way.

It may seem to be a bit of a kluge, but unfortunately to get the correct number you want using xsl:number, you have to change the context node to the node that you want to count. This can be readily done with a new template:

 <xsl:template match="//see">
    'see' finds destination '<xsl:value-of select="id(@ref)"/>',
    whose position is: <xsl:apply-templates select="id(@ref)" mode="number"/>.

 <xsl:template match="*" mode="number">

If you're too lazy to make a new template, you could put the whole thing in a for-each.

Another alternative would be to skip the xsl:number altogether and use a simple count, as in:

<xsl:template match="//see">
'see' finds destination '<xsl:value-of select="id(@ref)"/>',
whose position is: <xsl:value-of select="count(id(@ref)/preceding-sibling::*)+1"/>.

Of course this will only work if you want the simplest of numbering schemes.


At 04:52 PM 10/28/2002, you wrote:
For generating links to numbered images in hypertext
I'm using ID referencing. Accessing the children of a
referenced node works fine with XT, but an xsl:number
element using the reference returns always zero. Is
something wrong with my code?

Here's an example:

<!DOCTYPE myroot [
  <!ELEMENT see (#PCDATA)>
  <!ELEMENT dest (#PCDATA)>
  <!ATTLIST dest id ID #REQUIRED> ]>
  <see ref="D2"/>
  <dest id="D1">Node D1</dest>
  <dest id="D2">Node D2</dest>
  <dest id="D3">Node D3</dest>

<xsl:stylesheet xmlns:xsl=""; version
  <xsl:template match="//see">
    'see' finds destination '<xsl:value-of select="id(@ref)"/>',
    whose position is: <xsl:number value="id(@ref)"/>.
  <xsl:template match="text()"/>

'see' finds destination 'Node D2',
whose position is: 0.

Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.      
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
  Mulberry Technologies: A Consultancy Specializing in SGML and XML

XSL-List info and archive:

Current Thread