Transform Documents with XQuery
XQuery is a new language under development by the W3C that’s designed to query collections of XML data. XQuery provides a mechanism to efficiently and easily extract data from XML documents or from any data source that can be viewed as XML, such as relational databases.
XQuery (http://www.w3.org/XML/Query) provides a powerful mechanism to pull XML content from multiple sources and dynamically generate new content using a programmer-friendly declarative language. The XQuery code in Example 2-12 (shakes.xqy) formats in XHTML a list of unique speakers in each act of Shakespeare’s play Hamlet. The hamlet.xml file can be found at http://www.oasis-open.org/cover/bosakShakespeare200.html.
Example 2-12. A simple XQuery to search Shakespeare (shakes.xqy)
<html><head/><body>
{
for $act in doc("hamlet.xml")//ACT
let $speakers := distinct-values($act//SPEAKER)
return
<span>
<h1>{ $act/TITLE/text( ) }</h1>
<ul>
{
for $speaker in $speakers
return <li>{ $speaker }</li>
}
</ul>
</span>
}
</body></html>This example demonstrates a
XQuery
FLWOR (pronounced flower) expression. The name
comes from the five possible clauses of the expression:
for, let,
where, order by, and
return. Example 2-12 says that for
every ACT element appearing at any level in the
hamlet.xml file, let the
$speakers variable equal the distinct values of
all the SPEAKER elements found under that instance
of ACT. Then for every $act and
$speakers value, return the
$act’s TITLE
text using an h1 element ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access