RE: [xsl] MSXML ancestor-or-self

Subject: RE: [xsl] MSXML ancestor-or-self
From: "Chris Bayes" <Chris@xxxxxxxxxxx>
Date: Wed, 7 Mar 2001 17:22:39 -0000
Richard,
You can't use ancestor-or-self in this case because of the structure of you
xml. Look at it like this
<A>
	<P name="hello" value="blue"/>
	<B>
		<P name="goodbye" value="red"/>
		<P name="hello" value="green"/>
		<C/>
	</B>
</A>
If your context node is C then it's ancestors are B and A so you need the
preceding axis
	select="preceding::P"
This will give you all P nodes so you need to add a predicate so that it
gives you only the nodes which don't have a preceding node with the same
@name.
	select="preceding::P[@name != preceding::P/@name]"

Ciao Chris

XML/XSL Portal
http://www.bayes.co.uk/xml


>-----Original Message-----
>From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
>[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Richard
>Mitchell
>Sent: 07 March 2001 15:12
>To: 'XSL'
>Subject: [xsl] MSXML ancestor-or-self
>
>
>Well it seems I've hit a small snag what I want
>is to get a list of variables in a scope so the
>closest is taken and passed on. The XML looks
>something like.
>
><A>
><P name="hello" value="blue"/>
>	<B>
>	<P name="goodbye" value="red"/>
>	<P name="hello" value="green"/>
>	<C/>
>	</B>
></A>
>
>And my current context is C. With my output looking something like
>
>;hello=green;goodbye=red
>
>So far I've got
>	<xsl:for-each select="ancestor-or-self::*/p[ what on earth can I put
>here ]">
>		;_<xsl:value-of select="@name"/>=<xsl:value-of
>select="@value"/>
>	</xsl:for-each>
>But I've got stuck in the way that MSXML3 seems to be serving up
>the axis in
>document order not reverse document order like it says on P717 or Michael
>Kays
>excellent book.
>
>Any and all help would be appreciated.
>
>Richard Mitchell
>Software Developer
>http://www.vbnonline.com/
>
> XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread