preceding-sibling::node()[normalize-space()][1][self::comment()]
This will select the first in a list of nodes that return true for
normalize-space() and self::comment().
No, that would be
preceding-sibling::node()[normalize-space()][self::comment()][1]
What you have,
preceding-sibling::node()[normalize-space()][1][self::comment()]
selects the first non-whitespace-text node if it is a comment.
Sure. But aren't they both the same (they select the same node)? The
only difference would be the size of the lists the predicates create?
(feel free to point out the correct terminology here)
Definitely no.