xsl-list
[Top] [All Lists]

RE: [xsl] Xpath - count preceding-siblings matching some condition

2007-04-30 13:23:41
When you create a sequence of elements using:

<xsl:variable name="v" as="element()+">
  <a/>
  <a/>
  <a/>
</xsl:variable>

then the elements in the resulting sequence are not siblings. They are
parentless, whereas siblings always share a parent. To make them siblings
you need to add a document node, which you can do simply by leaving out the
"as" attribute:

<xsl:variable name="v">
  <a/>
  <a/>
  <a/>
</xsl:variable> 

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



-----Original Message-----
From: Angela Williams 
[mailto:Angela(_dot_)Williams(_at_)the401kcompany(_dot_)com] 
Sent: 30 April 2007 21:00
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Xpath - count preceding-siblings matching 
some condition

This works great in my test stylesheet.  However, when I use 
this in my real stylesheet, I end up with 1 group, so all 
rows have a row-nbr=1.

The only difference in my real stylesheet is how I build $tmp-table.
Instead of selecting from a static node tree, it is built in 
memory with the <xsl:variable name="tmp-table" as="element()+">
  <!-- build the data -->
</xsl:variable>

I've tried writing out the data instead of putting it in a 
variable, and then using that output as input for the test 
stylesheet and it works!?!

Is there something different about holding the temporary tree 
in memory to process it, as opposed to selecting from a 
static file?  When I view the $tmp-table variables in the 
debugger, my node-sets look exactly the same in both real and 
test stylesheets.

I'm going cross-eyed - any suggestions?

Thanks!
Angela 

-----Original Message-----
From: Angela Williams
Sent: Monday, April 30, 2007 1:35 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Xpath - count preceding-siblings matching 
some condition

That's wonderful!

Thanks!
Angela 

-----Original Message-----
From: Bjorndahl, Brad 
[mailto:brad(_dot_)bjorndahl(_at_)thermofisher(_dot_)com]
Sent: Monday, April 30, 2007 1:19 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Xpath - count preceding-siblings matching 
some condition

How about:

<table>
  <xsl:for-each-group select="//data/a" 
group-starting-with="a[(_at_)col-nbr lt 
preceding-sibling::a[1]/@col-nbr]" >
    <xsl:variable name="row" select="position()" />
    <xsl:for-each select="current-group()" >
      <b col-nbr="{(_at_)col-nbr}" row-nbr="{$row}" />
    </xsl:for-each>
 </xsl:for-each-group>
</table> 

Brad.


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



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