XQuery, concluded - Retrieving the Value of an Attribute
(Page 2 of 5 )
Not all of the information is contained in the text of an XML tag. Sometimes information is assigned to an attribute of a tag, such as the UPC code in the CD tag that we show here:
<cd upc="75679244222">
You can use an XQuery to extract the value of an attribute by calling the data() function and specifying the @ symbol in front of the attribute name. Let’s say that the UPC code is an attribute of the cd element and the cd element is the child of the catalog element. You then access the UPC code by using the following call to the data() function. You’ve seen something like this used previously in this chapter when you learned about how to use the data() function. The only new feature is the @ symbol, which you use to tell Saxon-B to use the value of the attribute rather than the text of the element.
{data(doc("catalog.xml")/catalog/cd/@upc)}
Here’s the XQuery that accesses the value of the upc attribute. This is basically the same XQuery that you learned about previously in this chapter, except that you pass the @upc to the data() function.
<html>
<body>
List of titles in this catalog:<br/>
<table border="1">
<tr>
<td>UPC</td>
<td>Artist</td>
<td>Title</td>
</tr>
{
for $cd in doc("catalog.xml")/catalog/cd
order by $cd/artist
return
<tr>
<td>{data($cd/@upc)}</td>
<td>{data($cd/artist)}</td>
<td>{data($cd/title)}</td>
</tr>
}
</table>
</body>
</html>
Here’s what the XQuery writes to the output.html file.
<html>
<body>
List of titles in this catalog:<br><table border="1">
<tr>
<td>UPC</td>
<td>Artist</td>
<td>Title</td>
</tr>
<tr>
<td>74646938720</td>
<td>Billy Joel</td>
<td>Songs in the Attic</td>
</tr>
<tr>
<td>74640890529</td>
<td>Bob Dylan</td>
<td>The Times They Are A-Changin'</td>
</tr>
<tr>
<td>8811160227</td>
<td>Jimi Hendrix</td>
<td>Are You Experienced?</td>
</tr>
<tr>
<td>75679244222</td>
<td>Led Zeppelin</td>
<td>Physical Graffiti</td>
</tr>
<tr>
<td>75678263927</td>
<td>Led Zeppelin</td>
<td>Houses of the Holy</td>
</tr>
<tr>
<td>75678367229</td>
<td>Rush</td>
<td>Rush in Rio</td>
</tr>
<tr>
<td>602498678299</td>
<td>U2</td>
<td>How to Dismantle an Atomic Bomb</td>
</tr>
</table>
</body>
</html>
Here’s what the XQuery writes to the output.html file, and Figure 9-4 shows the result when it’s displayed in a browser.
Next: Retrieving the Value of an Attribute and the Attribute Name >>
More XML Articles
More By McGraw-Hill/Osborne
|
This article is excerpted from chapter nine of the book XML DeMYSTiFieD, written by Jim Keogh and Ken Davidson (McGraw-Hill/Osborne, 2005; ISBN: 0072262109). Check it out today at your favorite bookstore. Buy this book now.
|
|