[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Best Way to Select Following Elements With An Ancestor?
Subject: Re: [xsl] Best Way to Select Following Elements With An Ancestor? From: Andrew Welch <andrew.j.welch@xxxxxxxxx> Date: Sat, 22 Mar 2014 13:13:55 +0000 |
On 22 March 2014 12:46, Eliot Kimber <ekimber@xxxxxxxxxxxx> wrote: > I have a document where each child of the root element establishes a > unique content with regard to the output result (in this case, > corresponding to InDesign frames). > > For a given descendant of one of these elements I need to know if there > are any following elements within the same context. So simply doing > following::* won't work and the following elements I'm checking for need > not be siblings of the current element. > > The solution I arrived at is: > > <xsl:variable name="myDitaAncestor" select="ancestor::dita" > as="element()*"/> > > <xsl:variable name="followingWithinDita" as="element()*" > select="following::*[count(ancestor::dita | $myDitaAncestor) = 1]" > /> > > This works but I'm wondering if there's a better solution, either one that > is more efficient or one that is more elegant? I don't know if it's more efficient or more elegant, but you could do: $myDitaAncestor//* >> current() Keying elements by their <dita> ancestor might help, eg key name="elems-by-dita" match="*" use="generate-id(ancestor::dita)" key('elems-by-dita', $dita-id) >> current() where $dita-id is the generate-id() of the dita ancestor passed down as a tunnelled param. -- Andrew Welch http://andrewjwelch.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Best Way to Select Following , Eliot Kimber | Thread | Re: [xsl] Best Way to Select Follow, Eliot Kimber |
[xsl] Best Way to Select Following , Eliot Kimber | Date | Re: [xsl] Best Way to Select Follow, David Carlisle |
Month |