xsl-list
[Top] [All Lists]

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

2016-07-19 10:51:33
empty((* except B) [following-sibling::B and preceding-sibling::B])

On 19 Jul 2016, at 16:44, Costello, Roger L. costello(_at_)mitre(_dot_)org 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> 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

--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>