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

Subject: Re: [xsl] Determine if an element with descents has complete empty text content
From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 2 Oct 2016 16:58:52 -0000
> 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@xxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
>> On 2 Oct 2016, at 13:16, Eliot Kimber ekimber@xxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> 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.

Current Thread