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 ...
Get XML Hacks now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.