Subject: RE: [xsl] Xpath - count preceding-siblings matching some condition From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 30 Apr 2007 21:23:05 +0100 |
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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Xpath - count preceding-s, Angela Williams | Thread | Re: [xsl] Xpath - count preceding-s, David Carlisle |
RE: [xsl] Xpath - count preceding-s, Angela Williams | Date | Re: [xsl] Xpath - count preceding-s, David Carlisle |
Month |