[Home] [By Thread] [By Date] [Recent Entries]
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. 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
Registergericht / Commercial Register: Amtsgericht Leipzig Registernummer / Registration Number: HRB 24930 Geschdftsf|hrer: Gerrit Imsieke, Svea Jelonek, Thomas Schmidt, Dr. Reinhard Vvckler
|

Cart



