Difference between revisions of "Map Module"
Line 102: | Line 102: | ||
{| width='100%' | {| width='100%' | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|map:merge|$ | + | |{{Func|map:merge|$input as map(*)*|map(*)}} |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | | Constructs and returns a new map. The ''map'' is formed by combining the contents of the maps supplied in the {{Code|$ | + | | Constructs and returns a new map. The ''map'' is formed by combining the contents of the maps supplied in the {{Code|$input}} argument. The maps are combined as follows: |
# There is one entry in the new map for each distinct key value present in the union of the input maps, where keys are considered distinct according to the rules of the {{Code|distinct-values}} function. | # There is one entry in the new map for each distinct key value present in the union of the input maps, where keys are considered distinct according to the rules of the {{Code|distinct-values}} function. | ||
− | # The associated value for each such key is taken from the last map in the input sequence {{Code|$ | + | # The associated value for each such key is taken from the last map in the input sequence {{Code|$input}} that contains an entry with this key. |
There is no requirement that the supplied input maps should have the same or compatible types. The type of a map (for example {{Code|map(xs:integer, xs:string)}}) is descriptive of the entries it currently contains, but is not a constraint on how the map may be combined with other maps. | There is no requirement that the supplied input maps should have the same or compatible types. The type of a map (for example {{Code|map(xs:integer, xs:string)}}) is descriptive of the entries it currently contains, but is not a constraint on how the map may be combined with other maps. | ||
Line 119: | Line 119: | ||
* <code>map:merge(($week, map{ 6: "Sonnabend" }))</code> creates <code>map { 0: "Sonntag", 1: "Montag", 2: "Dienstag", 3: "Mittwoch", 4: "Donnerstag", 5: "Freitag", 6: "Sonnabend" }</code>. | * <code>map:merge(($week, map{ 6: "Sonnabend" }))</code> creates <code>map { 0: "Sonntag", 1: "Montag", 2: "Dienstag", 3: "Mittwoch", 4: "Donnerstag", 5: "Freitag", 6: "Sonnabend" }</code>. | ||
|} | |} | ||
+ | |||
+ | ==map:put== | ||
+ | |||
+ | {{Mark|Added with Version 8.0}}: | ||
+ | |||
+ | {| width='100%' | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|map:put|$input as map(*), $key as xs:anyAtomicType, $value as item()*|map(*)}} | ||
+ | |- | ||
+ | | '''Summary''' | ||
+ | | Creates a new ''map'', containing the entries of the {{Code|$input}} argument and a new entry composed by {{Code|$key}} and {{Code|$value}}. The semantics of this function are equivalent to <code>map:merge(($input, map { $key, $value }))<code> | ||
==map:remove== | ==map:remove== |
Revision as of 13:55, 7 August 2014
This XQuery Module contains functions for manipulating maps, which will officially be introduced with XQuery 3.1.
Contents
Conventions
All functions in this module are assigned to the http://www.w3.org/2005/xpath-functions/map
namespace, which is statically bound to the map
prefix.
Functions
Some examples use the map $week
defined as:
declare variable $week as map(*) := map { 0: "Sonntag", 1: "Montag", 2: "Dienstag", 3: "Mittwoch", 4: "Donnerstag", 5: "Freitag", 6: "Samstag" };
map:contains
Signatures | map:contains($input as map(*), $key as xs:anyAtomicType) as xs:boolean
|
Summary | Returns true if the map supplied as $input contains an entry with a key equal to the supplied value of $key ; otherwise it returns false. No error is raised if the map contains keys that are not comparable with the supplied $key .
If the supplied key is |
Examples |
|
map:entry
Signatures | map:entry($key as xs:anyAtomicType, $value as item()*) as map(*)
|
Summary | Creates a new map containing a single entry. The key of the entry in the new map is $key , and its associated value is $value . If the supplied key is xs:untypedAtomic , it is compared as an instance of xs:string . If the supplied key is the xs:float or xs:double value NaN , the function returns the value in the entry whose key is NaN , or the empty sequence otherwise.
The function map:merge(( map:entry("Su", "Sunday"), map:entry("Mo", "Monday"), map:entry("Tu", "Tuesday"), map:entry("We", "Wednesday"), map:entry("Th", "Thursday"), map:entry("Fr", "Friday"), map:entry("Sa", "Saturday") )) Unlike the map:merge(for $b in //book return map:entry($b/isbn, $b)) |
Examples |
|
map:get
Signatures | map:get($input as map(*), $key as xs:anyAtomicType) as item()*
|
Summary | Returns the value associated with a supplied key in a given map. This function attempts to find an entry within the map supplied as $input that has a key equal to the supplied value of $key . If there is such an entry, it returns the associated value; otherwise it returns an empty sequence. No error is raised if the map contains keys that are not comparable with the supplied $key . If the supplied key is xs:untypedAtomic , it is converted to xs:string . If the supplied key is the xs:float or xs:double value NaN , the function returns an empty sequence.
A return value of |
Examples |
|
map:keys
Signatures | map:keys($input as map(*)) as xs:anyAtomicType*
|
Summary | Returns a sequence containing all the key values present in a map. The function takes any map as its $input argument and returns the keys that are present in the map as a sequence of atomic values. The order may differ from the order in which entries were inserted in the map.
|
Examples |
|
map:merge
Template:Mark (replacing map:new
):
Signatures | map:merge($input as map(*)*) as map(*)
|
Summary | Constructs and returns a new map. The map is formed by combining the contents of the maps supplied in the $input argument. The maps are combined as follows:
There is no requirement that the supplied input maps should have the same or compatible types. The type of a map (for example |
Examples |
|
map:put
Signatures | map:put($input as map(*), $key as xs:anyAtomicType, $value as item()*) as map(*)
| ||||||||||||||||||
Summary | Creates a new map, containing the entries of the $input argument and a new entry composed by $key and $value . The semantics of this function are equivalent to map:merge(($input, map { $key, $value })) |