Specifying Attributes in Queries

To specify an attribute name in a query, precede the attribute name with an at sign (@). The XPath processor treats elements and attributes in the same way wherever possible. For example:

//@style 

This query returns the style attributes associated with the magazine, the three books, and the my:book element. That is, it returns all the style attributes in the document. It does not return the elements that contain the attributes.

Following is another query that includes an attribute:

/bookstore/book/@style 

This query returns the three style attributes for the three book elements.

The following query returns the style attribute of the context node:

@style  

If the context node does not have a style attribute, the result set is empty.

The next query returns the exchange attribute on price elements in the current context:

price/@exchange  

Following is an example that is not valid because attributes cannot have subelements:

price/@exchange/total  

Following is a query that finds the style attribute for all book elements in the document:

//book/@style  

Restrictions

Attributes cannot contain subelements. Consequently, you cannot apply a path operator to an attribute. If you try to, you receive a syntax error.

Attributes are inherently unordered. Consequently, you cannot apply a position number to an attribute. If you try to, you receive a syntax error.

Attributes and Wildcards

You can use an at sign (@) and asterisk (*) together to retrieve a collection of attributes. For example, the following query finds all attributes in the current context:

@*  

 
Free Stylus Studio XML Training:
W3C Member