[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

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

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

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>

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

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"/>.
</xsl:template>


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

Cheers,
Wendell

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:

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

------STYLESHEET------
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version
="1.0">
  <xsl:template match="//see">
    'see' finds destination '<xsl:value-of select="id(@ref)"/>',
    whose position is: <xsl:number value="id(@ref)"/>.
  </xsl:template>
  <xsl:template match="text()"/>
</xsl:stylesheet>

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


======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
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: http://www.mulberrytech.com/xsl/xsl-list



Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.