[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Need XPath 2.0 expression which returns a non-empt
One solution (not optimized for speed or brevity: /*/p [normalize-space(translate(., '  ', '')) and (every $i in 1 to 20 satisfies preceding-sibling::p[position() eq $i and not(normalize-space(translate(., '  ', '')))] ) ] On Mon, Nov 25, 2019 at 11:38 AM Costello, Roger L. costello@xxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Hi Folks, > > I want to know if an XHTML document contains a non-empty paragraph (p) > element that is preceded by a long, uninterrupted series of paragraph > elements, each containing just a non-blocking space character (decimal > 160). Let's assume that "long" means 20. For example, here is an excerpt of > an XHTML document: > > <body> > <p>Text at top</p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p>Text at bottom</p> > </body> > > The query should return this: > > <p>Text at bottom</p> > > because it is preceded by a long, uninterrupted series of paragraph > elements, each containing just a non-blocking space character. > > Here's a query that returns the desired paragraph element: > > //p[string-length(.) gt 1][count(preceding-sibling::p[. eq ' ']) ge > 20] > > However, if I insert a non-empty paragraph element in the middle of that > long series: > > <body> > <p>Text at top</p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p>Other text</p> <------------ > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p> </p> > <p>Text at bottom</p> > </body> > > then my query erroneously returns the same paragraph element. That is, my > XPath query does not account for the requirement that the long series of > paragraph elements be uninterrupted. How to write an XPath 2.0 query for > this? > > /Roger > > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- To avoid situations in which you might make mistakes may be the biggest mistake of all ------------------------------------ Quality means doing it right when no one is looking. ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- To achieve the impossible dream, try going to sleep. ------------------------------------- Facts do not cease to exist because they are ignored. ------------------------------------- Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) ------------------------------------- Sanity is madness put to good use. ------------------------------------- I finally figured out the only reason to be alive is to enjoy it.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|