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