Atomization

Atomization is the process of converting a sequence of items into a sequence of atomic values. Atomization is used by expressions whenever a sequence of atomic values is required.

Each item in a sequence is converted to an atomic value by applying the following rules:

  • If the item is an atomic value, then the atomic value is returned.
  • If the item is a node, then its typed value is returned. The typed value of a node is a sequence of zero or more atomic values that can be extracted from the node. If the node has no typed value, then an error is returned.

Implicit atomization of a sequence produces the same result as invoking the fn:data function explicitly on a sequence.

For example, the following sequence contains a combination of nodes and atomic values:

("Some text",<anElement xsi:type="string">More text</anElement>,
<anotherElement xsi:type="decimal">1.23</anotherElement>,1001)

Applying atomization to this sequence results in the following sequence of atomic values:

("Some text", "More text", 1.23, 1001)

The following XQuery expressions use atomization to convert items into atomic values:

  • Arithmetic expressions
  • Comparison expressions
  • Function calls with arguments whose expected types are atomic
  • Cast expressions
  • Constructor expressions for various kinds of nodes
  • order by clauses in FLWOR expressions
  • Type constructor functions