Querying XML
Not nearly as mature as querying relational databases
-newer
-no underlying algebra
Sequence of Development
1. XPath – path expressions and conditions
2. XSLT – XPath + transformations, output formatting
3. XQuery – XPath + full-featured query language
XPath
Think of XML as a tree
Bookstore
-Books
-@ISBN
-@Price
-@Title
-@Authors
-First Name
-Last Name
-Magazines
Basic Constructs
/ designates root element, also used as a separator
x designates the name of an element
* matches anything
@ attribute name
// designates any descendent of current element
[] conditions or matching nth subelement of current element
Built-in functions (lots of them)
contains(s1, s2) will return true if the first string contains the second string
name()
Navigation “axes” (13 of them)
parent::
following-sibling::
descendant::
self::
More details
XPath queries operate on and return sequence of elements
– XML doc
– XML stream
sometimes result can be expressed as XML, not always