Subject: RE: [xsl] sorted for-each: preceding::sibling is not in sort order From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sun, 13 Nov 2005 16:11:14 -0000 |
> Working on a grouping problem I was trying to use preceding::sibling > on a selection of nodes that I had assembled with for-each and sorted. > > It took me a long time to find out that while for-each will > present the > nodes in sort order, preceding::sibling will give me the > results for a totally different node (probably document order). > > Is this intended behaviour Yes. A node has a fixed position in a tree. A tree is immutable: you cannot change the parent, children, or siblings of an existing node. The axes all relate to the relationship of the node to other nodes in the same tree. xsl:sort affects the processing order of the nodes (or in XSLT 2.0, the ordering of a sequence of nodes) but it does not affect the node's axis relationships. > And if > so, what is > the best way around this. The only way I found was to do a first > for-each copy-of all the nodes into a variable, then work with the > content of the variable in a second for-each using that variable. > > One big disadvantage being that I'm cutting off all the parent > relationships when copying my node. Yes, in 1.0 that's a problem. XSLT 2.0 allows you to use xsl:sequence instead of xsl:copy-of, so you can construct a variable whose value is a sequence of nodes (node references) without making copies of the nodes. Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] sorted for-each: precedin, David Carlisle | Thread | Re: [xsl] sorted for-each: precedin, Ferdinand Soethe |
Re: [xsl] sorted for-each: precedin, David Carlisle | Date | RE: [xsl] Pointer to a good explana, Michael Kay |
Month |