Simple XQuery FLWOR Expressions

The simplest XQuery FLWOR expression might be something like this:

for $v in $doc//video return $v 

This returns all of the video elements in $doc.

We can add a bit of substance by adding XQuery where and return clauses:

for $v in $doc//video 
where $v/year = 1999 
return $v/title 

This returns all of the titles of videos released in 1999.

If you know SQL, that XQuery probably looks reassuringly similar to the equivalent SQL statement:

SELECT v.title  
FROM video v  
WHERE v.year = 1999 

And if you know XPath, you might be wondering why our XQuery cannot be written as this:

$doc//video[year=1999]/title 

Well, you can. This XPath expression is completely equivalent to the FLWOR expression above, and furthermore, it is a legal XQuery query. In fact, every legal XPath expression is also legal in XQuery. Thus the first query in this section can be written as:

$doc//video 

Which style you prefer seems to depend on where you are coming from: if you have been using XML for years, especially XML with a deep hierarchy as found in "narrative" documents, then you will probably be comfortable with path expressions. But if you are more used to thinking of your data as representing a table, then the FLWOR style might suit you better.

As you will see, FLWOR expressions are a lot more powerful than path expressions when it comes to doing joins. But for simple queries, the capabilities overlap and you have a choice. Although it might be true that in SQL every query is a SELECT statement, it is not so that in XQuery every query has to be a FLWOR expression.

Forest & Paper Products

Many forest & paper product companies realize the best XML suite doesn't have "pay per" features. That's why these top forest & paper product companies choose Stylus Studio 2006 to get the world's best XML features all in one bundle!

Stylus Studio's Advanced XQuery Mapper Features

Learn how to create an advanced XQuery expression in the XQuery mapper, specifying operations, constants, and ports, for use in conditional blocks and FLWR expressions. Free online video demonstration!

DTD Generator

Stylus Studio's DTD Generator supports the automatic generation and association of both internal and external DTDs based on XML instance documents.

Converting Custom EDI Message Types to XML

Vital and valuable legacy data locked in proprietary EDI files? See how to use DataDirect XML Converters™ custom EDI message type tools to convert nonconformant EDI to XML.

Stylus Most Wanted

 
Free Stylus Studio XML Training:
W3C Member