This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Preceding Ancestors
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] Preceding Ancestors
- From: tcn at melvaig dot co dot uk (Trevor Nash)
- Date: Wed, 08 Aug 2001 15:53:51 GMT
- Organization: Melvaig Software Engineering Limited
- References: <191E23677373D411BFB900D0B7A7BA28394B67@mail.vbnonline.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
You want the ancestors minus any following: set difference, in other
words.
<xsl:variable name="a" select="ancestor::*/p" />
<xsl:variable name="f" select="following::p" />
<xsl:variable name="in-scope"
select="$a[count(.|$f) != count($f) />
If you are using Saxon, look up difference().
Mike Kay deserves at least half the prize - the answer is of course in
his book (see UnionExpr).
Or you could be modern and allow use before definition -)
Regards,
Trevor Nash
>Well I'm trying to create some sort of scoping rule
>into my XML definition ( well it's already there but
>I'm trying to get at it from deep inside one long
>XPath expression ). What I can't work out is
>how to get at any preceding elements that are in
>my 'scope' i.e. from a file like
>
><s>
> <m>
> <p a="1"/>
> <p a="2"/>
> <m>
> <p a="3"/>
> <p a="4"/>
> <p a="5"/>
> </m>
> <m>
> <p a="6"/>
> <p a="7"/> <---Context is here
> <p a="8"/>
> </m>
> <p a="9"/>
> </m>
></s>
>
>And I'm expecting something like
> <p a="1"/>
> <p a="2"/>
> <p a="6"/>
>
>I've tried ancestor::*/p but that will give me <p a="9"/> too.
>
>Any ideas out there pleeeeze. I'll owe you a beer ( or beverage
>of your choice ) next time you're in Cambridge.
>
>Ta Muchly.
>
>Richard Mitchell
>Software Developer
>http://www.vbnonline.com/
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
--
Traditional training & distance learning,
Consultancy by email
Melvaig Software Engineering Limited
voice: +44 (0) 1445 771 271
email: tcn@melvaig.co.uk
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list