|
Subject: Re: [xsl] Need XPath 2.0 expression which returns a non-empty paragraph element that is preceded by a long uninterrupted series of empty paragraph elements From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Mon, 25 Nov 2019 20:07:54 -0000 |
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.
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Need XPath 2.0 expression, Peter Flynn peter@xx | Thread | Re: [xsl] Need XPath 2.0 expression, BR Chrisman brchrism |
| Re: [xsl] Need XPath 2.0 expression, Peter Flynn peter@xx | Date | Re: [xsl] Need XPath 2.0 expression, BR Chrisman brchrism |
| Month |