Re: [xsl] 1st previous node()

Subject: Re: [xsl] 1st previous node()
From: Karl Stubsjoen <kstubs@xxxxxxxxx>
Date: Mon, 7 Feb 2011 23:59:09 -0700
I have now.  I've just noted that in an xml like this:

<a>
 <b>
  <c>
    <e></e>
   </c>
 </b>
 <x>current node</x>
<a>

Given <x> is the context node, the preceding element is <e>, but I am
expecting <b> So I now have something like this:
<xsl:variable name="previous-nodes" select="ancestor::*[1] |
preceding-sibling::*[1]/>
The ancestor select is necessary because if the preceding <b> node did
not exist then the correct node match would be <a>.

So then previous node is:  $previous-nodes[last()]

See any issues with the above?  Let me restate what I am after:

Select the first preceding sibling node if exists, or select the first
ancestor node, if exists.

I have another question about generating id's.  Will the results be
the same regardless how you get to the node()?  I seem to be getting
different answers, but this is not conclusive.

Karl..


On Mon, Feb 7, 2011 at 11:40 PM, Szabo, Patrick (LNG-VIE)
<patrick.szabo@xxxxxxxxxxxxx> wrote:
> Have you tried preceding::*[1] ?!
> AFAIK this only matches elements.
>
>
> . . . . . . . . . . . . . . . . . . . . . . . . . .
> Patrick Szabo
>  XSLT-Entwickler
> LexisNexis
> Marxergasse 25, 1030 Wien
>
> mailto:patrick.szabo@xxxxxxxxxxxxx
> Tel.: +43 (1) 534 52 - 1573
> Fax: +43 (1) 534 52 - 146
>
>
> -----Urspr|ngliche Nachricht-----
>
> Von: Karl Stubsjoen [mailto:kstubs@xxxxxxxxx]
> Gesendet: Dienstag, 08. Februar 2011 07:16
> An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Betreff: [xsl] 1st previous node()
>
> XSL1.0
> I need help finding the first previous node, skipping white space,
> comments, etc.. I thought this might work, but I can't get it or
> similar tries to work.
>
> <xsl:variable name="previous" select="preceding::node()
>   [not(comment())]
>   [not(text())]
>   [not(processing-instruction())]
>   [1]"/>
>
> Given that <X> is the context node then I expect the previous node is <M>.
>
> <A>
>  <M>
>   <?skip me?>
>   <!--skip me-->
>  </M>
>  <X> this is context node </X>
> </A>
>
> Given that <X> is the context node then I expect the previous node is <B>.
>
> <A>
>  <B>
>  <X> this is context node </X>
>  </B>
> </A>
>
>
>
> --
> Karl Stubsjoen
> MeetScoresOnline.com
> (602) 845-0006
>
>



--
Karl Stubsjoen
MeetScoresOnline.com
(602) 845-0006

Current Thread