Document node constructors
All document node constructors are computed constructors. A document node constructor creates a document node for which the content of the node is computed based on an enclosed expression. A document node constructor is useful when the result of a query is a complete document.
The result of a document node constructor is a
new document node that has its own node identity.
Important: No
validation is performed on the constructed document node. The XQuery document
node constructor does not enforce the XML 1.0 rules that govern the structure
of an XML document. For example, a document node is not required to have exactly
one child that is an element node.
Syntax
- document
- A keyword that indicates that a document node will be constructed.
- ContentExpression
- An expression that generates the content of the constructed document node. The value of ContentExpression can be any sequence of nodes and atomic values except for an attribute node. Attribute nodes in the content sequence result in an error. Document nodes in the content sequence are replaced by their children. For each node that is returned by ContentExpression, a new copy is made of the node and all of its descendants, which retain their original type annotations. Any atomic values that are returned by the content expression are converted to strings and stored in text nodes, which become children of the constructed document node. Adjacent text nodes are merged into a single text node.
Example
The following document node
constructor includes a content expression that returns an XML document that
contains a root element named
customer-list
:document
{
<customer-list>
{db2-fn:xmlcolumn('MYSCHEMA.CUSTOMER.INFO')/ns1:customerinfo/name}
</customer-list>
}