xsl-list
[Top] [All Lists]

Re: [xsl] Determine if an element with descents has complete empty text content

2016-10-02 11:58:58
If there's any possibility that $context has a large number of descendant 
text nodes or that their content is large, then it's going to be best to 
avoid forming the string concatenation of those text nodes, which you can 
achieve with

exists($context//text()[normalize-space()])

Michael Kay
Saxonica

I thought that the simpler expression below with a decent optimizer
will be as efficient as the above:

     exists($context[normalize-space()])

as it is sufficient to find the first non-empty text() descendent to
conclude that the argument to the exists() function is the $context
element.

Seems a simple short-cutting. Or is it?


Cheers,
Dimitre



On Sun, Oct 2, 2016 at 9:12 AM, Michael Kay mike(_at_)saxonica(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

On 2 Oct 2016, at 13:16, Eliot Kimber ekimber(_at_)contrext(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

I've inherited some code that has this type of check to determine if an
element with arbitrary possible subelements has completely empty text
content:

normalize-space(string-join($context//text(), '')) != ''

In XSLT 2 I'm pretty sure there's a simpler and/or more efficient way to
do this.


Is there a better way to do this and if so, what is it?


If there's any possibility that $context has a large number of descendant 
text nodes or that their content is large, then it's going to be best to 
avoid forming the string concatenation of those text nodes, which you can 
achieve with

exists($context//text()[normalize-space()])

Michael Kay
Saxonica




-- 
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.
--~----------------------------------------------------------------
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>