This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: MSXML ancestor-or-self
- To: "'xsl-list at lists dot mulberrytech dot com'" <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] MSXML ancestor-or-self
- From: Richard Mitchell <Richard dot Mitchell at vbnonline dot com>
- Date: Wed, 7 Mar 2001 17:56:24 -0000
- Reply-To: xsl-list at lists dot mulberrytech dot com
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@lists.mulberrytech.com
> >[mailto:owner-xsl-list@lists.mulberrytech.com]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