match="x[not(preceding-sibling::*[not(self::A|self::B|self::C])]"
or if you prefer
match="x[every $p in preceding-sibling::* satisfies $p/(self::A |
self::B | self::C)]"
Michael Kay
Saxonica
On 15/04/2011 14:43, Fredrik Bengtsson wrote:
Hi,
I need to select elements (using XPath) that are preceded by sibling elements
that are not in a given whitelist. That is, I need to find elements named x,
whose preceding siblings (if any) are all named a, b or c, in any order, and
all optional, but nothing else. So the following is a match:
<c/>
<b/>
<x/>
And so is this:
<x/>
But not this one:
<c/>
<BLOCKER/>
<a/>
<x/>
I've tried something like the following with no luck:
<xsl:template match="x"> ...
<xsl:template match="x[preceding-sibling::*][not(self::a or self::b or
self::c)]"> ...
Any ideas?
Regards,
/Fredrik
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--