RE: [xsl] MSXML ancestor-or-self

Subject: RE: [xsl] MSXML ancestor-or-self
From: Richard Mitchell <Richard.Mitchell@xxxxxxxxxxxxx>
Date: Wed, 7 Mar 2001 17:56:24 -0000
First of all thanks Chris...

Ok my example is a bit poor sorry for that but really my context is
C with a file like...

<A>
 	<P name="hello" value="blue"/>
	<P name="aval" value="uppest"/>
	<B>
		<P name="bval" value="upper"/>
		<P name="goodbye" value="red"/>
		<P name="hello" value="green"/>
		<C>
			<P name="goodbye" value="yellow"/>
		</C>
		<P name="goodbye" value="orange"/>
	</B>
</A>

Expecting output like...
;goodbye=yellow;hello=green;bval=upper;hello=uppest

I've just experimented a little with the | operator but can't get
anything sensible out of it

> 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
> 

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


Current Thread