http://www.zorba-xquery.com/modules/store/data-structures/unordered-map ZC

Module Description
Before using any of the functions below please remember to import the module namespace:
import module namespace map = "http://www.zorba-xquery.com/modules/store/data-structures/unordered-map";

This module defines a set of functions for working with maps. A map is identified by a QName and can be created using the map:create or map:create-transient functions and deleted using the map:delete function, respectively.

The lifetime of a transient map is limited by the execution of the current XQuery program. A non-transient (or persistent) map lives until it is explicitly deleted. Accordingly, it's also available to other XQuery programs.

The key of a particular entry in the map can consist of a tuple of atomic values (called attributes). The actual type of each attribute is determined when the map is created. The value of each attribute can be an arbitrary sequence of items.

Author:

Matthias Brantner

XQuery version and encoding for this module:

xquery version "3.0" encoding "utf-8";

Zorba version for this module:

The latest version of this module is 2.0. For more information about module versioning in Zorba please check out this resource.

Module Resources
Related Documentation

For more details please also see:

Namespaces
an http://www.zorba-xquery.com/annotations
err http://www.w3.org/2005/xqt-errors
map http://www.zorba-xquery.com/modules/store/data-structures/unordered-map
ver http://www.zorba-xquery.com/options/versioning
zerr http://www.zorba-xquery.com/errors
Function Summary
External available-maps ( ) as xs:QName*
The function returns a sequence of QNames of the maps that are available.
Sequential Variadic External create ( $name as xs:QName, $key-type as xs:QName ) as empty-sequence()
Create a map with a given name and a set of type identifiers for each key attribute.
Sequential Variadic External create-transient ( $name as xs:QName, $key-type as xs:QName ) as empty-sequence()
Create a transient map with a given name and a set of type identifiers for each key attribute.
Sequential External delete ( $name as xs:QName ) as empty-sequence()
Destroys the map with the given name.
Variadic External get ( $name as xs:QName, $key as xs:anyAtomicType? ) as item()*
Returns the value of the entry with the given key from the map.
Sequential Variadic External insert ( $name as xs:QName, $value as item()*, $key as xs:anyAtomicType? ) as empty-sequence()
Inserts a new entry into the map with the given name.
External is-transient ( $name as xs:QName ) as xs:boolean
The function returns true if the map identified by the given QName is transient, false otherwise.
External keys ( $name as xs:QName ) as node()*
Returns the keys of all entries of a map.
Sequential Variadic External remove ( $name as xs:QName, $key as xs:anyAtomicType? ) as empty-sequence()
Removes an entry identified by the given key from the map.
External size ( $name as xs:QName ) as xs:integer
The number of entries in a map.
Functions
External available-maps back to 'Function Summary'
declare function map:available-maps (

) as xs:QName*

The function returns a sequence of QNames of the maps that are available. The sequence will be empty if there are no maps.

Returns:

Sequential Variadic External create back to 'Function Summary'
declare function map:create (
            $name as xs:QName,
            $key-type as xs:QName
) as empty-sequence()

Create a map with a given name and a set of type identifiers for each key attribute. Note that the function is variadic and might take an arbitrary number of type identifiers for the key attributes. Also note that the function is sequential and immediately creates the map in the store.

Parameters:
Returns:
Errors:

Sequential Variadic External create-transient back to 'Function Summary'
declare function map:create-transient (
            $name as xs:QName,
            $key-type as xs:QName
) as empty-sequence()

Create a transient map with a given name and a set of type identifiers for each key attribute. Note that the function is variadic and might take an arbitrary number of type identifiers for the key attributes.

Parameters:
Returns:
Errors:

Sequential External delete back to 'Function Summary'
declare function map:delete (
            $name as xs:QName
) as empty-sequence()

Destroys the map with the given name.

Parameters:
Returns:
Errors:

Variadic External get back to 'Function Summary'
declare function map:get (
            $name as xs:QName,
            $key as xs:anyAtomicType?
) as item()*

Returns the value of the entry with the given key from the map. Note that it is possible to insert entries with empty key attributes. However as the getting the entries is based on the "eq" comparison and as "eq" with an empty sequence always return false, it is not possible to retrieve these entries.

Parameters:
Returns:
Errors:
See:

Sequential Variadic External insert back to 'Function Summary'
declare function map:insert (
            $name as xs:QName,
            $value as item()*,
            $key as xs:anyAtomicType?
) as empty-sequence()

Inserts a new entry into the map with the given name. Note that the function is variadic and might take an arbitrary number of key attributes. If an entry with the given key already exists in the map, the value sequences of the existing entry and the sequence passed using $value argument are concatenated. Note that it is possible to insert entries with empty key attributes. However as the getting the entries is based on the "eq" comparison and as "eq" with an empty sequence always return false, it is not possible to retrieve these entries.

Parameters:
Returns:
Errors:
See:

External is-transient back to 'Function Summary'
declare function map:is-transient (
            $name as xs:QName
) as xs:boolean

The function returns true if the map identified by the given QName is transient, false otherwise.

Parameters:
Returns:
Errors:

External keys back to 'Function Summary'
declare function map:keys (
            $name as xs:QName
) as node()*

Returns the keys of all entries of a map. The keys are returned as sequence of nodes of the form:

 <key xmlns="http://www.zorba-xquery.com/modules/store/data-structures/unordered-map">
   <attribute value="key1_value"/>
   <attribute value="key2_value"/>
   <attribute value="key3_value"/>
 </key>
 
The following condition always holds: map:size($name) eq fn:count(map:keys($name))

Parameters:
Returns:
Errors:

Sequential Variadic External remove back to 'Function Summary'
declare function map:remove (
            $name as xs:QName,
            $key as xs:anyAtomicType?
) as empty-sequence()

Removes an entry identified by the given key from the map. Note that it is possible to insert entries with empty key attributes. However as the removing the entries is based on the "eq" comparison and as "eq" with an empty sequence always return false, it is not possible to remove these entries.

Parameters:
Returns:
Errors:
See:

External size back to 'Function Summary'
declare function map:size (
            $name as xs:QName
) as xs:integer

The number of entries in a map. The following condition always holds: map:size($name) eq fn:count(map:keys($name))

Parameters:
Returns:
Errors: