XPath 3.1 implementation
The Saxon-defined "source-location" property provided for the fn:transform() function now sets the global context item as well as the initial match selection, except when streaming (because the global context item cannot be a streamed node).
A new implementation of maps (called a DictionaryMap
) has been introduced, optimized for maps with
string-valued keys that are unlikely to be modified after initial construction (such modifications are still
allowed, but are inefficient). This implementation is used in a number of cases where maps are constructed
internally, notably for the result of parse-json()
and xml-to-json()
. It may be
explicitly selected on the map:merge() function by
adding two vendor-defined options to the second (options) parameter:
key-type="string"
constrains the entries in the map to be strings (a dynamic error occurs if not), and
final="true()"
indicates that the map should be constructed assuming no map:put()
or map:remove()
calls will
take place (if they do, they will work, but will result in the whole map being copied).