Re: [xsl] XPath expression to check that there are no intervening elements?

Subject: Re: [xsl] XPath expression to check that there are no intervening elements?
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 19 Jul 2016 15:51:28 -0000
empty((* except B) [following-sibling::B and preceding-sibling::B])

> On 19 Jul 2016, at 16:44, Costello, Roger L. costello@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi Folks,
>
> This XML has a solid block of <B> elements:
>
> <Document>
>    <A/>
>    <B/>
>    <B/>
> </Document>
>
> This XML has an intervening <C> element:
>
> <Document>
>    <A/>
>    <B/>
>    <C/>
>    <B/>
> </Document>
>
> I need an XPath expression to return a Boolean value:
>
> 	Return true if there is one solid block of <B> elements
>              	(no intervening elements).
> 	Otherwise, return false.
>
> I created a horrendous XPath expression to solve it:
>
> count(B) eq (B[last()]/count(preceding-sibling::*)+1 -
B[1]/count(preceding-sibling::*))
>
> Can you provide a better (simpler, more efficient) XPath expression?
>
> /Roger

Current Thread