This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Preceding Ancestors


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]