|
Subject: Finding the closest node (was Re: [xsl] inconsistent Preceding-Sibling behaviour when nested in For-Each From: Peter Flynn <peter@xxxxxxxxxxx> Date: Tue, 05 Nov 2002 00:07:48 +0000 |
Jeni Tennison wrote: [...]
When you collect together all the preceding-siblings of a node, and handle them in document order the first of those nodes is the first of the siblings -- the first child of the parent -- not the closest of those siblings.
If you want to get the *closest* of the siblings then you can use [last()] as follows:
<xsl:value-of select="(preceding-sibling::person/name)[last()]" />
What if I want to get the closest of some possible (specific) subset of ancestors? eg (this is Docbook, let us say the current node is an <xref> in a <para> at some depth within one of the following):
<xsl:variable name="anchor"
select="ancestor::sidebar |
ancestor::warning |
ancestor::note |
ancestor::orderedlist |
ancestor::itemizedlist |
ancestor::variablelist |
ancestor::varlistentry |
ancestor::listitem |
ancestor::procedure |
ancestor::step |
ancestor::footnote"/>Unfortunately, XPath returns the remotest node (the earliest in document order). For example, if the current node is in a step in a procedure, I need a variable set to that step, not to the whole procedure. Ignore for the moment the possibility of nested lists.
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] inconsistent Preceding-Si, Alan Stein | Thread | Re: Finding the closest node (was R, G. Ken Holman |
| [xsl] Parameter based transformatio, Damian Clark | Date | RE: [xsl] xsl:include of a variable, Richard Lander |
| Month |