xsl-list
[Top] [All Lists]

Re: [xsl] How to write (existential) predicates with maps/Why is there no effective boolean value for a map?

2019-02-12 08:40:24
I'm having trouble understanding/reproducing this. Can you supply a complete 
repro? (I.e., the source data that results in this error)

I've checked the message, and it's actually inaccurate: the offending item 
might be a function/array/map rather than an atomic value.

Michael Kay
Saxonica

On 11 Feb 2019, at 12:09, Martin Honnen martin(_dot_)honnen(_at_)gmx(_dot_)de 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

When using XPath 3.1 (e.g. in XSLT 3) on maps I have found that I have to 
change my coding habit a bit when writing predicates that want to check the 
existence of some nested map, while I hoped to be able to write e.g.

 ?locations?*[?types?*[?name = 'foo']]

to select all (map) members of the "locations" array that have a "types" 
array with at least one (map) member having a property "name" with value 
"foo" I get an error

Effective boolean value is not defined for sequence starting with an atomic 
value other than a boolean, number, or string


So in contrast to my experience with writing predicates on XML it seems for 
maps I have to explicitly use the "exists" function e.g.

 ?locations?*[exists(?types?*[?name = 'foo'])]

or a "some .. in" expression

 ?locations?*[some $m in ?types?* satisfies $m?name = 'foo']


Is there any more compact way to write such a check?

What is the reason that the effective boolean value was not extended to give 
true for a sequence with a map?

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