xsl-list
[Top] [All Lists]

Re: [xsl] 1st previous node()

2011-02-08 00:59:15


On 2011-02-08 07:16, Karl Stubsjoen wrote:
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]"/>

This can be written as

    <xsl:variable name="previous" select="preceding::node()
       [not(child::comment())]
       [not(child::text())]
       [not(child::processing-instruction())]
       [1]"/>

which will select the text node immediately preceding X.

So you could write

    <xsl:variable name="previous" select="preceding::node()
       [not(self::comment())]
       [not(self::text())]
       [not(self::processing-instruction())]
       [1]"/>

which will yield

<M>
   <?skip me?>
   <!--skip me-->
  </M>

for the first example and nothing in the second (since X doesn't have a preceding element: an element has to be closed before X starts in order to qualify as preceding).

But as Patrick points out, this can of course be written as

    <xsl:variable name="previous" select="preceding::*[1]"/>

You can get M in the first case and B in the second by declaring

<xsl:variable name="previous" select="(preceding-sibling::*[1], ..)[1]" />

which selects the immediately preceding sibling or, if there is no preceding sibling, the parent element.

-Gerrit


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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--
Gerrit Imsieke
Geschäftsführer / Managing Director
le-tex publishing services GmbH
Weissenfelser Str. 84, 04229 Leipzig, Germany
Phone +49 341 355356 110, Fax +49 341 355356 510
gerrit(_dot_)imsieke(_at_)le-tex(_dot_)de, http://www.le-tex.de

Registergericht / Commercial Register: Amtsgericht Leipzig
Registernummer / Registration Number: HRB 24930

Geschäftsführer: Gerrit Imsieke, Svea Jelonek,
Thomas Schmidt, Dr. Reinhard Vöckler

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>