"model"."document name".[path to element]."element name"
Query Structure
A valid XML SELECT Command against a document model is of the form SELECT … FROM … WHERE … ORDER BY … . The use of any other SELECT command clause is not allowed.
The fully qualified name for an XML element is:
.
The fully qualified name for an attribute is:
"model"."document name".[path to element]."element name".[@]"attribute name"
Partially qualified names for elements and attributes can be used as long as the partial name is unique.
FROM Clause
Specifies the document to generate. Document names resemble other virtual groups - "model"."document name".
Syntax Rules:
-
The from may only contain one unary clause specifying the desired document.
SELECT Clause
The select clause determines which parts of the XML document are generated for output.
Example Syntax:
select * from model.doc
select model.doc.root.parent.element.* from model.doc
select element, element1.@attribute from model.doc
Syntax Rules:
-
SELECT * and SELECT "xml" are equivalent and specify that every element and attribute of the document should be output.
-
The SELECT clause of an XML Query may only contain *, "xml", or element and attribute references from the specified document. Any other expressions are not allowed.
-
If the SELECT clause contains an element or attribute reference (other than * or "xml") then only the specified elements, attributes, and their ancestor elements will be in the generated document.
-
element.* specifies that the element, it’s attribute, and all child content should be output.
WHERE Clause
The where clause specifies how to filter content from the generated document based upon values contained in the underlying mapping classes. Most predicates are valid in an XML SELECT Command, however combining value references from different parts of the document may not always be allowed.
Criteria is logically applied to a context which is directly related to a mapping class. Starting with the root mapping class, there is a root context that describes all of the top level repeated elements that will be in the output document. Criteria applied to the root or any other context will change the related mapping class query to apply the affects of the criteria, which can include checking values from any of the descendant mapping classes.
Example Syntax:
select element, element1.@attribute from model.doc where element1.@attribute = 1
select element, element1.@attribute from model.doc where context(element1, element1.@attribute) = 1
Syntax Rules:
-
Each criteria conjunct must refer to a single context and can be criteria that applies to a mapping class, contain a rowlimit function, or contain rowlimitexception function.
-
Criteria that applies to a mapping class is associated to that mapping class via the context function. The absence of a context function implies the criteria applies to the root context.
-
At a given context the criteria can span multiple mapping classes provided that all mapping classes involved are either parents of the context, the context itself, or a descendant of the context.
Note
|
Sibling Root Mapping Classes - Implied root context user criteria against a document model with sibling root mapping classes is not generally semantically correct. It is applied as if each of the conjuncts is applied to only a single root mapping class. This behavior is the same as prior releases but may be fixed in a future release. |
XML SELECT Command Specific Functions
XML SELECT Command functions are resemble scalar functions, but act as hints in the WHERE clause. These functions are only valid in an XML SELECT Command.
Context Function
CONTEXT(arg1, arg2)
Select the context for the containing conjunct.
Syntax Rules:
-
Context functions apply to the whole conjunct.
-
The first argument must be an element or attribute reference from the mapping class whose context the criteria conjunct will apply to.
-
The second parameter is the return value for the function.
Rowlimit Function
ROWLIMIT(arg)
Limits the rows processed for the given context.
Syntax Rules:
-
The first argument must be an element or attribute reference from the mapping class whose context the row limit applies.
-
The rowlimit function must be used in equality comparison criteria with the right hand expression equal to an positive integer number or rows to limit.
-
Only one row limit or row limit exception may apply to a given context.
Rowlimitexception Function
Limits the rows processed for the given context and throws an exception if the given number of rows is exceeded.
ROWLIMITEXCEPTION(arg)
Syntax Rules:
-
The first argument must be an element or attribute reference from the mapping class whose context the row limit exception applies.
-
The rowlimitexception function must be used in equality comparison criteria with the right hand expression equal to an positive integer number or rows to limit.
-
Only one row limit or row limit exception may apply to a given context.
ORDER BY Clause
The XML SELECT Command ORDER BY Clause specifies ordering for the referenced mapping class queries.
Syntax Rules:
-
Each order by item must be an element or attribute reference tied a output value from a mapping class.
-
The order or the order by items is the relative order they will be applied to their respective mapping classes.