Subject: Re: if a condition is not met
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 15 May 2007 17:29:41 +0100
|
> Can someone, btw, elaborate on the following: Why is it that a statement
> like current-group()[some-predicate]/following-sibling::* will return
> *all* following sibling and not only the elements that are part of the
> current group?
because (as you guessed) current_group() returrns original nodes, not
copies.
this is just the same as in xslt1,
<xsl:for-each select="a">
<xsl:copy-of select="following-sibling::*"/>
following-sibling::* here would select all siblings of the current (a)
node, the way that node was selected (in the for-each) is irrelevant.
> To workaround this, I know that you can treat the current-group()
> results as a document-node when you copy it into a variable and go from
> there.
copyig (might) be expensive, an alternative if you want to ensure that a
path expression only returns elements in the current group is to go
(pathexpression) intersect current-group()
But if you are doing
current-group()[some-predicate]/following-sibling::* then it looks like
you are doing some further grouping on the current group so often it is
more natural to do
<xsl:for-each-group select="current-group()"
group-starting-with="node()[some-predicate]">
...
Then it is automatically constrained to just work within the current
group.
David
________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs.
________________________________________________________________________
|