Widespread use of XML has established it as a lingua franca. The choice of XML to represent ever-increasing amounts of data led to the need for a query language that uses the structure of XML intelligently to express queries across the diverse kinds of data XML can be used to represent. W3C has developed a formal specification of such a query language; it is called XQuery.
The best approach to learning XQuery is one that comes naturally to developersexamine a few examples and start writing queries. The eXist open-source native XML database (http://exist.sourceforge.net) comes with a sandbox that makes such an approach easy; see Figure 1. In the upper window, the query doc("musicians.xml")/musicians/musician searches the document contained in the file "musicians.xml" (Listing One) for all musician nodes that are children of the node named musicians. The results of the query are displayed in the lower window.
<?xml version="1.0" encoding="UTF-8"?> <musicians> <musician uid="1111"> <nickname>Slash</nickname> <name>Saul Hudson</name> <instrument>Lead Guitar</instrument> <birthDate>1965-07-23</birthDate> <birthLocation>Hampstead, England</birthLocation> </musician> <musician uid="2222"> <nickname>Axl Rose</nickname> <name>William Bruce Rose, Jr.</name> <instrument>Vocals</instrument> <birthDate>1962-02-06</birthDate> <birthLocation>Lafayette, Indiana, USA</birthLocation> </musician> <musician uid="3333"> <nickname>Duff "Rose" McKagan</nickname> <name>Michael Andrew McKagan</name> <instrument>Bass Guitar</instrument> <birthDate>1964-02-05</birthDate> <birthLocation>Seattle, Washington, USA</birthLocation> </musician> <musician uid="4444"> <name>Matt Sorum</name> <instrument>Drums</instrument> <birthDate>1960-11-19</birthDate> <birthLocation>Mission Viejo, California, USA</birthLocation> </musician> <musician uid="5555"> <name>Izzy Stradlin</name> <instrument>Rhythm Guitar</instrument> <birthDate>1962-04-08</birthDate> <birthLocation>Lafayette, Indiana, USA</birthLocation> </musician> <musician uid="6666"> <name>Scott Weiland</name> <instrument>Vocals</instrument> <birthDate>1967-10-27</birthDate> <birthLocation>Santa Cruz, California, USA</birthLocation> </musician> <musician uid="7777"> <name>Dean DeLeo</name> <instrument>Lead Guitar</instrument> <birthDate>1961-08-23</birthDate> <birthLocation>Point Pleasant, New Jersey, USA</birthLocation> </musician> <musician uid="8888"> <name>Robert Emile DeLeo</name> <instrument>Bass Guitar</instrument> <birthDate>1966-02-02</birthDate> <birthLocation>Montclair, New Jersey, USA</birthLocation> </musician> </musicians>