Hi,
I would like to retrieve all the nodes "X" inside one
node, but before another node. The second node is always
a descendant of the first node.
book
+-- chap
+-- chap <== inside this node
+-- X <== select this node
+-- sect
+-- X <== select this node
+-- sub <== but before this node
+-- X <== i.e. do not select this X node
+-- sub
...
+-- sect
+-- sect
...
+-- chap
...
This example is somewhat simplified, of course.
Currently, my best bet is this:
<xsl:variable name="inside.this.node"
select="/book/chap[2]"/>
<xsl:variable name="before.this.node"
select="$inside.this.node/sect[1]/sub[1]"/
<xsl:variable name="the.X.nodes"
select="$before.this.node/preceding::X[
ancestor::*[(_at_)ID=$inside(_dot_)this(_dot_)node/@ID]
]"
/>
This method doesn't seem very efficient given that it must
first select all preceding X nodes, and then filters this
nodeset using the predicate that matches ID values.
As I have to do this many times over a big document, I
would be interested in better ways.
Thank you,
--
Jakob.
PS: I am subscribed to the list digest, please cc: me.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list