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

Using <xsl:number>

Subject: Using <xsl:number>
From: David Buddrige <dbuddrige@xxxxxxxxx>
Date: Tue, 8 Jun 2004 21:54:56 -0700 (PDT)
xsl add 2 numbers
Hi all,

I am trying to figure out how to use the <xsl:number>
tag in the following way:


I have a set of recursively heirarchically structured
tags called "Scopes", in the following xml:


<Data>
	<Scope id="1">
		<Scope id="2"/>
		<Scope id="3"/>
	</Scope>
	<Scope id="4">
		<Scope id="5">
			<Scope id="6"/>
			<Scope id="7"/>
		</Scope>
		<Scope id="8">
			<Scope id="9">
				<Scope id="10"/>
				<Scope id="11"/>
			</Scope>
			<Scope id="12"/>
		</Scope>
	</Scope>
	<Scope id="13"/>
</Data>

What I want to do is add a sort-order property to each
Scope tag, which identifies its relative position at
each level of the heirarchy among its peers only. 
That is to say, the sort-order tag should be added
like this:

<Data>
	<Scope id="1" sort-order="1">
		<Scope id="2" sort-order="1"/>
		<Scope id="3" sort-order="2"/>
	</Scope>
	<Scope id="4" sort-order="2">
		<Scope id="5" sort-order="1">
			<Scope id="6" sort-order="1"/>
			<Scope id="7" sort-order="2"/>
		</Scope>
		<Scope id="8" sort-order="2">
			<Scope id="9" sort-order="1">
				<Scope id="10" sort-order="1"/>
				<Scope id="11" sort-order="2"/>
			</Scope>
			<Scope id="12" sort-order="2"/>
		</Scope>
	</Scope>
	<Scope id="13" sort-order="3"/>
</Data>

So that, as you can see, the sort-order is counted at
one level only of the recursive structure.  If there
is a sub-tree coming from a given scope, then the
children are numbered starting at 1 at that direct
decentant level only...

To do this, I have been trying to use the <xsl:number>
tag to insert a new attribute to my xml in the
following way:


<xsl:attribute name=\"sort_order\">";
  <xsl:number level=\"single\" from=\"Scope\"/>";
</xsl:attribute>";

My problem is the "from" attribute... I am reading the
"XSLT Programmers Reference" by  Michael Kay, and the
description for the "from" attribute of the
<xsl:number> tag says that the from field "Determines
a cut-off point, a point in the document from which
sequence numbering starts fresh".

Subsequently, since I want to start numbering fresh
whenever a new subtree begins, I was trying to use
"Scope" as the identifier for the next tag that would
reset numbering...

this does not work however - I always seem to get a
sort-order that is consecutively numbered from the
first element to the last ignoring the recursive
structure of scope tags.

Can anyone help me out with how you go about matching
against any *child* scopes, so that all *child* scopes
reset the numbering, but any sibling scopes are
numbered consecutively?

thanks heaps guys

David.




	
		
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 

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.