Nov 11, 2011

XQuery expressions in Oracle 10g

What are and How to use XQuery Expressions
XQuery expressions are case-sensitive. The expressions include the following:
  • primary expression – literal, variable, or function application. A variable name starts with a dollar-sign ($) – for example, $foo. Literals include numerals, strings, and character or entity references.
  • XPath expression – Any XPath expression. The developing XPath 2.0 standard will be a subset of XQuery. XPath 1.0 is currently a subset, although XQuery uses a richer type system.
  • FLWOR expression – The most important XQuery expression, composed of the following, in order, from which FLWOR takes its name: forletwhere , order byreturn.
  • XQuery sequence – The comma (,) constructor creates sequences. Sequence-manipulating functions such as union and intersect are also available. All XQuery sequences are effectively flat: a nested sequence is treated as its flattened equivalent. Thus, for instance, (1, 2, (3, 4, (5), 6), 7) is treated as (1, 2, 3, 4, 5, 6, 7). A singleton sequence, such as (42), acts the same in most XQuery contexts as does its single item, 42. Remember that the result of any XQuery expression is a sequence.
  • Direct (literal) constructions – XML element and attribute syntax automatically constructs elements and attributes: what you see is what you get. For example, the XQuery expression 33 constructs the XML element33.
  • Computed (dynamic) constructions – You can construct XML data at runtime using computed values. For example, the following XQuery expression constructs this XML data: tata titi why? .
·                {attribute toto {2+3}, element bar {"tata", "titi"}, text {" why? "}
In this example, element foo is a direct construction; the other constructions are computed. In practice, the arguments to computed constructors are not literals (such as toto and "tata"), but expressions to be evaluated (such as 2+3). Both the name and the value arguments of an element or attribute constructor can be computed. Braces ({}) are used to mark off an XQuery expression to be evaluated.
  • Conditional expression – As usual, but remember that each part of the expression is itself an arbitrary expression. For instance, in this conditional expression, each of these subexpressions can be any XQuery expression:somethingsomethingElseexpression1, and expression2.
·                if (something < somethingElse) then expression1 else expression2
  • Arithmetic, relational expression – As usual, but remember that each relational expression returns a (Boolean) value. Examples:
·                2 + 3
·                42 < $a + 5
·                (1, 4) = (1, 2)
·                5 > 3 eq true()
  • Quantifier expression – Universal (every) and existential (some) quantifier functions provide shortcuts to using a FLWOR expression in some cases. Examples:
·                every $foo in doc("bar.xml")//Whatever satisfies $foo/@bar > 42
·                some $toto in (42, 5), $titi in ("xyz12", "abc", 5) satisfies $toto = $titi
  • Regular expression – XQuery regexes are based on XML Schema 1.0 and Perl.
  • Type expression – An XQuery expression that represents an XQuery type. Examples: item()node()attribute()element()document-node()namespace()text()xs:integerxs:string
Type expressions can have occurrence indicators? (optional: zero or one), * (zero or more), + (one or more). Examples: document-node(element())*item()+attribute()?.
XQuery also provides operators for working with types. These include cast ascastable astreat asinstance oftypeswitch, and validate. For example, "42" cast as xs:integer is an expression whose value is the integer 2. (It is not, strictly speaking, a type expression, because its value does not represent a type.)

No comments:

OraApps Search

Custom Search

Search This Blog