xsl-list
[Top] [All Lists]

RE: [xsl] Counting Preceding Cousins (and only cousins)

2006-04-09 08:34:13
Try:

count(preceding-sibling::p) + count(../preceding-sibling::block/p)

Michael Kay
http://www.saxonica.com/ 

-----Original Message-----
From: Jordan (Wraezor) [mailto:wraezor(_at_)wraezor(_dot_)com] 
Sent: 09 April 2006 06:37
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Counting Preceding Cousins (and only cousins)

Hello,

I'm trying to figure out how to count the preceding set of 
cousins of a  
particular element, but am having trouble figuring out the 
proper method.

My XML goes something like so:

<div>
   <p></p>
   <block>
     <p></p>
     <p></p>
   </block>
   <p></p>
   <p></p>
   <block>
     <p></p>
   </block>
</div>

I'm trying to count all the preceding /block/p elements of 
the current  
one, being sure to not count 'p' elements at different levels, etc.

My XSL looks something like this:

<xsl:template match="block" mode="main">
   <xsl:apply-templates mode="grandchild" />
</xsl:template>

<xsl:template match="p" mode="grandchild">
   <xsl:number format="1." level="multiple" 
value="count(preceding::p)  
+ 1"/>
</xsl:template>

Unfortunately, the above counts all <p> elements in the whole 
tree, not  
just cousins (but uncles, aunts, and even the neighbour's 
dog).  I also  
tried to make something work with preceding-siblings, but 
that obviously  
only counts according to the current parent 'block', so the 
numbering  
restarts for each new parent.

I even got a count of all immediate cousins, however that was 
just a total  
count, not relative to the location of the current node (i.e. 
preceding).   
In that case, I considered incorporating 'position()', but 
couldn't figure  
out how to get that to accurately know where it was.

I hunted around online for a while, but could only find examples of  
slightly different problems.

What's the best way of solving this problem?

Thanks in advance for any assistance,
Jordan

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>