[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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


Subject: RE: [xsl] Xpath - count preceding-siblings matching some condition
From: "Angela Williams" <Angela.Williams@xxxxxxxxxxxxxxxxxx>
Date: Mon, 30 Apr 2007 15:51:04 -0500

Thank you for the explanation!
Angela

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: Monday, April 30, 2007 3:23 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Xpath - count preceding-siblings matching some
condition

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.Williams@xxxxxxxxxxxxxxxxxx]
> Sent: 30 April 2007 21:00
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 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@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Xpath - count preceding-siblings matching
> some condition
>
> That's wonderful!
>
> Thanks!
> Angela
>
> -----Original Message-----
> From: Bjorndahl, Brad [mailto:brad.bjorndahl@xxxxxxxxxxxxxxxx]
> Sent: Monday, April 30, 2007 1:19 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Xpath - count preceding-siblings matching
> some condition
>
> How about:
>
> <table>
>   <xsl:for-each-group select="//data/a"
> group-starting-with="a[@col-nbr lt
> preceding-sibling::a[1]/@col-nbr]" >
>     <xsl:variable name="row" select="position()" />
>     <xsl:for-each select="current-group()" >
>       <b col-nbr="{@col-nbr}" row-nbr="{$row}" />
>     </xsl:for-each>
>  </xsl:for-each-group>
> </table>
>
> Brad.


Current Thread
Keywords