xml - Confusion regarding descendant axis and '//' -
structure of document:
<program> <projectionday> <projection/> <projection/> </projectionday> <projectionday> <projection/> <projection/> </projectionday> </program>
i want select first , last projection ( across whole document).
this returns it:
/descendant::projection[position() = 1 or position() = last()]
this returns first , last within projectionday
//projection[position() = 1 or position() = last()]
why so?
your first query using descendant
fetches <projection/>
elements, filters result set first , last element:
/descendant::projection[position() = 1 or position() = last()]
//
abbreviation /descendant-or-self::*/
. second query means
/descendant-or-self::*/projection[position() = 1 or position() = last()]
which looks elements (here: each <projectionday/>
, , returns first , last <projection/>
element inside element.
to return first , last element on <projeectionday/>
s, put before predicate parentheses:
(/descendant-or-self::*/projection)[position() = 1 or position() = last()]
or abbreviated:
(//projection)[position() = 1 or position() = last()]
Comments
Post a Comment