Re: [xsl] Node position and numbering.

Subject: Re: [xsl] Node position and numbering.
From: c p <bugs75il@xxxxxxxxx>
Date: Thu, 5 May 2005 11:00:38 -0700 (PDT)
Spencer,

Thats what I trying to explain in my email.  That,
very unfortunately, I cannot do apply-templates on
<step> nodes.  The biggest reason for not able to do
that is that I could have 100+ different possible
child nodes within <service> node and each child node
could potentially appear in any order.  So I cannot do
apply-templates on specific child nodes as I would NOT
know what order I need to it in and second I'd have to
do 100 apply-templates for each child node.

I know its not the best XML design but heck thats what
I am handed down and I have to make it work.  Not my
choice.

Thx,
C.

--- Spencer Tickner <spencertickner@xxxxxxxxx> wrote:
> 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
> 
> 


		
__________________________________ 
Do you Yahoo!? 
Yahoo! Small Business - Try our new resources site!
http://smallbusiness.yahoo.com/resources/ 

Current Thread