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
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:remove() calls will
take place (if they do, they will work, but will result in the whole map being copied).