XSLT 2.0 and XPath 2.0 Programmer's Reference, 4th Edition (409 page)

BOOK: XSLT 2.0 and XPath 2.0 Programmer's Reference, 4th Edition
7.18Mb size Format: txt, pdf, ePub

Most people writing XPath expressions use this abbreviation all the time without really thinking about it. In fact, it's rare to see
child::
spelled out explicitly. But I do sometimes like to write the full form to alert the reader to what's going on. For example, the expression
record[*]
selects all

elements that have one or more child elements. I sometimes write this as
record[child::*]
so that anyone reading the code can see more clearly what it means. The full syntax for the expression, of course, is
child::record[child::*]
, and you could spell it out even more explicitly by writing
child::record[exists(child::*)]
. (The
exists()
function is in Chapter 13).

There's one exception to the general rule that if you don't specify an axis, you get the child axis. This is when you use a
NodeTest
of the form
attribute(…)
or
schema-attribute(…)
. This kind of
NodeTest
is used when testing the schema-defined type of an attribute node; it is described in detail in Chapter 11. Because the
NodeTest
makes it clear that you are looking for attributes rather than child elements, the system in this case chooses the attribute axis as the default. This avoids your having to write
attribute::attribute(*)
or
@attribute(X)
, both of which read rather oddly, though they are both legal and logical.

Other books

Bite by Deborah Castellano
Mrs. Roopy Is Loopy! by Dan Gutman
The Suitor List by Shirley Marks
Zeck by Khloe Wren
Anton's Odyssey by Andre, Marc
Lena's River by Caro, Emily
Commander-In-Chief by Mark Greaney, Tom Clancy