XQuery Syntax

XQuery is case-sensitive and XQuery elements, attributes, and variables must be valid XML names

XQuery Basic Syntax Rules

Some basic syntax rules:

  • XQuery is case-sensitive
  • XQuery elements, attributes, and variables must be valid XML names
  • An XQuery string value can be in single or double quotes
  • An XQuery variable is defined with a $ followed by a name, e.g. $bookstore
  • XQuery comments are delimited by (: and :), e.g. (: XQuery Comment :)
  • The XML Example Document

    We will use the "books.xml" document in the examples below (same XML file as in the previous chapters).

    XQuery Conditional Expressions

    "If-Then-Else" expressions are allowed in XQuery.

    Look at the following example:

    for $x in doc("books.xml")/bookstore/book
    return if ($x/@category="children")
    then <child>{data($x/title)}</child>
    else <adult>{data($x/title)}</adult>
    Notes on the "if-then-else" syntax: parentheses around the if expression are required. else is required, but it can be just else ().

    The result of the example above will be:

    <adult>Everyday Italian</adult>
    <child>Harry Potter</child>
    <adult>XQuery Kick Start</adult>
    <adult>Learning XML</adult>

    XQuery Comparisons

    In XQuery there are two ways of comparing values.

    1. General comparisons: =, !=, <, <=, >, >=

    2. Value comparisons: eq, ne, lt, le, gt, ge

    The difference between the two comparison methods are shown below.

    The following expression returns true if any q attributes have a value greater than 10:

    $bookstore//book/@q > 10

    The following expression returns true if there is only one q attribute returned by the expression, and its value is greater than 10. If more than one q is returned, an error occurs:

    $bookstore//book/@q gt 10