Re: [xsl] Node position and numbering.

Subject: Re: [xsl] Node position and numbering.
From: Spencer Tickner <spencertickner@xxxxxxxxx>
Date: Thu, 5 May 2005 10:43:23 -0700
Hi,

I tried your above example with the match="service" followed by
match="step" and got the desired output? Give this a try maybe it'll
help:

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:template match="service">
	<xsl:apply-templates select="step"/>
</xsl:template>

<xsl:template match="step">
	<xsl:value-of select="concat(position(), '. ',
normalize-space(text()))"/><br/>
</xsl:template>
</xsl:stylesheet>

output:

1. Go to File menu
2. Select Print
3. Click Print

Sounds like you've tried this already, I know I've had this problem
before and it has to do with whitespace nodes, either or give it a
shot.

On 5/5/05, c p <bugs75il@xxxxxxxxx> wrote:
> Hello all,
>
> I have following XML:
> -----------------------------------------
>
> <?xml version="1.0" encoding="UTF-8"?>
> <service>
>     <title>Printing the Page</title>
>     <somenode>node content might go here.</somenode>
>     <step>Go to File menu</step>
>     <step>Select Print</step>
>     <step>Click Print</step>
>     <somenode>you are all done.</somenode>
> </service>
>
> -----------------------------------------
> As you can see the XML has a <service> node with a
> whole bunch of other child nodes.  Out of all the
> child nodes, I am interested in getting the position
> for <step> nodes only.  Its pretty simple but there's
> a twist.  In the example above if I did
> <xsl:apply-templates match="service"/>  and then for
> each child node I did a position() then it would give
> me numbers 2,4,and 5 for the <step> nodes.  However
> thats not what I want.  I want it to give me numbers
> 1,2,3 for the <step> nodes.  The way I can get that is
> by doing <xsl:apply-templates match="service/step"/>,
> unfortunately due to the complexity of my XSL and XML
> structure I cannot do that.  Is there a way to achieve
> this so I can get an output that will look like this:
>
> ---------------------------------------------
> 1. Go to File menu
> 2. Select Print
> 3. Click Print
> ---------------------------------------------
>
> Note:  Its not always guaranteed that the first <step>
> node will start after <title> node or any other node.
> It could be random.
>
> Any help would be appreciated.
>
> Thx,
> C
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com

Current Thread
  • [xsl] Node position and numbering.
    • c p - Thu, 5 May 2005 10:06:42 -0700 (PDT)
      • Spencer Tickner - Thu, 5 May 2005 10:43:23 -0700 <=
      • Michael Kay - Thu, 5 May 2005 19:07:06 +0100
      • <Possible follow-ups>
      • c p - Thu, 5 May 2005 11:00:38 -0700 (PDT)
        • JBryant - Thu, 5 May 2005 13:15:33 -0500
      • c p - Thu, 5 May 2005 11:48:25 -0700 (PDT)