Operator Type:
Operator Scope of Action:
Operator Purpose:
Operator First Added:
Operator Altered:
Function [other Function type actions]
Document [operators of similar scope]
Set & List creation [other Set & List creation operators]
5.10.1
values(attribute)
This returns a Set of unique values for the attribute attribute. As the output is a of Set data type, the list of possible values is de-duped thus giving a list of unique values.
If the named attribute is a set or list, values() returns a list of all the unique discrete list item values that occur. If the named attribute is a string, values() returns all the unique strings.
The attribute parameter is evaluated so may be:
- A quoted attribute name without $-prefix:
values("MyList")
. - A string attribute name, whose current value is the name of an attribute (without a dollar prefix). If $MyString has the value "MyList", then
values($MyString)
will evaluate the unique values for $MyList (and output the same result asvalues("MyList")
above). - An expression resolving to an attribute name.
Thus if $MyString has the value "MyList", then these are functionally equivalent:
values("MyList")
values($MyString)
It is envisaged that the first method (the quoted, un-prefixed, attribute name) will be the most usual method of using values().
The scope of the assessment is always across the whole document. The data is returned in case-sensitive sort order (i.e. all capitals sort before lower case letters) so chaining .isort() may often be the desired 'default'.
values() differs from collect() in that values() returns Set-type data and collect() returns List-type data. For a list $MyList, the following are functionally equivalent in output:
collect("all",$MyList).unique
values("MyList")
values($MyString)
(where $MyString has the value "MyList")