/child::ul
returns the ul
.
descendant-or-self::*
returns self (ul
again) plus all its descendants (li-A
, li-ol
, ol
, li-B
, li-C
, li-D
).
child::li
moves to children of the previous elements that are li
, which means li-A
, li-ol
and li-D
for ul
, and
li-Band
li-Cfor
ol`.
[position()=1]
only selects those that are the first such child, i.e. li-A
and li-B
.