- From: <bugzilla@jessica.w3.org>
- Date: Wed, 15 Oct 2014 14:57:31 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=27059
Bug ID: 27059
Summary: [xp3.1] Function coercion, maps and arrays
Product: XPath / XQuery / XSLT
Version: Working drafts
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P2
Component: XPath 3.1
Assignee: jonathan.robie@gmail.com
Reporter: mike@saxonica.com
QA Contact: public-qt-comments@w3.org
Although the spec is probably technically correct, it would be worth some
explanation of how function coercion interacts with maps and arrays.
Firstly, if the expected type is a map or array type, then function coercion
does not apply. That's because the expected type is not [written as a]
TypedFunctionTest (bullet 3 of 3.1.5.2). Note that the bullets here are rather
varied in style, for example:
"If the expected type calls for a single item or optional single item"
"If the expected type is xs:string or xs:string?"
"If the expected type is a sequence of a generalized atomic type"
It would be better if they were all phrased in terms of how the type is
expressed syntactically.
Secondly, if the expected type is (expressed as) a TypedFunctionTest, and the
actual supplied value is a map or array, then function coercion does apply. For
example, fn:sort expects a function item of type function(item()) as
xs:anyAtomicType*, and it is acceptable to supply a map as the value of this
argument. If a map $M is passed, the rules of function coercion say that this
is equivalent to passing the function
function($key as item()) as xs:anyAtomicType* {
$M($key)
}
which in general (unless there is an atomization failure) will work; the sort
key for any value not present in the map is an empty sequence.
It's certainly worth a note or an example to explain this.
Thirdly, if the expected type is written as function(*), then it is legal to
supply a map or array as the value of the argument, but no coercion takes
place.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Wednesday, 15 October 2014 14:57:32 UTC