RE: [xsl] Testing for a following sibling node type that occurs a t a varied position

Subject: RE: [xsl] Testing for a following sibling node type that occurs a t a varied position
From: "Tobias Nies" <Tonini7@xxxxxx>
Date: Wed, 30 Jun 2004 09:20:51 +0200 (MEST)
Hi Michael,

I changed your test a little, so I detect all the last 'B' by testing if the
name of the actual node differs from the name of the following node.
I hope this will help you

-----------------------------------------
<xsl:template match="root">
 <xsl:for-each select="B">
  <xsl:if test="not(name() = name(following-sibling::*))">
   <xsl:value-of select="." />
  </xsl:if>
 </xsl:for-each>
</xsl:template>
-----------------------------------------

Tobias Nies

> Hi Brian,
> There aren't multiple A's after a given B, but here is an example of how
> I'm
> trying to implement this in the XSL:
> 
> -----------------------------
> <xsl:template match="root">
>  <xsl:for-each select="B">
>   <xsl:if test="../A/preceding-sibling::B[1]/following-sibling::A[1]">
>    Hello
>   </xsl:if>
>  </xsl:for-each>
> </xsl:template>
> -----------------------------
> 
> ..and it seems to be indicating that the test is true for each instance of
> the B node, instead of just testing true for the last one which is what I
> need. 
> 
> Does this implementation look like what you had intended?
> 
> Thanks again,
> Steve
> 
> -----Original Message-----
> From: Brian Chrisman [mailto:brian.chrisman@xxxxxx] 
> Sent: Tuesday, June 29, 2004 4:18 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Testing for a following sibling node type that occurs a
> t
> a varied position
> 
> Wright, Steve wrote:
> 
> >Hi Michael,
> >Thanks for your suggestion. I tried implementing it, but since I am
> actually
> >operating from w/in a for-each loop of the 'B' node, I need to test for
> the
> >following 'A' node from the last 'B' node in each sequence somehow, and I
> >didn't have any luck using the preceding-sibling function. 
> >
> >Any other ideas?
> >
> >  
> >
> 
> 
> root/A/preceding-sibling::B[1]/following-sibling::A[1]
> 
> This will output duplicates A's if there are multiple A's after a 
> particular B...
> Are there multiple A's after a particular B?  There aren't in the sample 
> doc.
> 
> Brian
> 
> >Thanks again,
> >Steve
> >
> >-----Original Message-----
> >From: Michael Kay [mailto:mhk@xxxxxxxxx] 
> >Sent: Tuesday, June 29, 2004 3:54 PM
> >To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >Subject: RE: [xsl] Testing for a following sibling node type that occurs
> at
> >a varied position
> >
> >Starting with <root> as the context node, you can select the marked B
> nodes
> >using
> >
> >A/preceding-sibling::B[1]
> >
> >Michael Kay 
> >
> >  
> >
> >>-----Original Message-----
> >>From: Wright, Steve [mailto:Steve.Wright@xxxxxx] 
> >>Sent: 29 June 2004 23:40
> >>To: XSL-List@lists. mulberrytech. com 
> >>(XSL-List@xxxxxxxxxxxxxxxxxxxxxx)
> >>Subject: [xsl] Testing for a following sibling node type that 
> >>occurs at a varied position
> >>
> >>I wasn't sure on how else to phrase the subject, but here is 
> >>what I need
> >>help in figuring out:
> >>
> >> 
> >>
> >>I need to detect when a specific sibling node follows the 
> >>context node in
> >>the document order, the catch is that it is not always 
> >>located the same
> >>number of positions after the context node, if it were, 
> >>something like this
> >>would work: 
> >>
> >>--------------------------------------------------------------
> >>
> >>following-sibling::node()[1][self::A]
> >>
> >>--------------------------------------------------------------
> >>
> >> 
> >>
> >>Here is an XML example to illustrate my situation:
> >>
> >>--------------------------------------------
> >>
> >><root>
> >>
> >>            <A>text</A>
> >>
> >>            <B>text</B>
> >>
> >>            <B>text</B>
> >>
> >>            <B>text</B> (indicate this node based on 
> >>following sibling 'A')
> >>
> >>            <C>text</C>
> >>
> >>            <C>text</C>
> >>
> >>            <C>text</C>
> >>
> >>            <A>text</A> 
> >>
> >>            <B>text</B>
> >>
> >>            <B>text</B>
> >>
> >>            <B>text</B>
> >>
> >>            <B>text</B> (indicate this node based on 
> >>following sibling 'A')
> >>
> >>            <D>text</D>
> >>
> >>            <D>text</D>
> >>
> >>            <A>text</A>
> >>
> >>            <B>text</B>
> >>
> >>            <B>text</B> (indicate this node based on 
> >>following sibling 'A')
> >>
> >>            <C>text</C>
> >>
> >>            <A>text</A>
> >>
> >>            <B>text</B>
> >>
> >>            <B>text</B>
> >>
> >>            <B>text</B>
> >>
> >>            <B>text</B> (indicate this node based on 
> >>following sibling 'A')
> >>
> >>            <C>text</C>
> >>
> >>            <D>text</D>
> >>
> >>            <D>text</D>
> >>
> >>            <D>text</D>
> >>
> >>            <C>text</C>
> >>
> >>            <A>text</A>
> >>
> >></root>
> >>
> >>--------------------------------------------
> >>
> >> 
> >>
> >>I want to implement a feature that corresponds w/ the last 
> >>'B' node that
> >>occurs before the next 'A' node.
> >>
> >> 
> >>
> >>Thanks in advance for any help.
> >>
> >> 
> >>
> >>Steve

-- 
"Sie haben neue Mails!" - Die GMX Toolbar informiert Sie beim Surfen!
Jetzt aktivieren unter http://www.gmx.net/info


Current Thread