xsl-list
[Top] [All Lists]

Re: Node position and numbering.

2005-05-05 11:00:38
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(_at_)gmail(_dot_)com> 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(_at_)yahoo(_dot_)com> 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



--~------------------------------------------------------------------
XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--