Attributes are not children, although (confusingly, but that's just the way it is) they may have parents. You write:
"an attribute can only exist as a child of an element" (p. 37)
"since attributes are children of their parent element, you can think of the attribute axis as a special type of child axis: it just selects attribute nodes and no other type of child nodes" (p. 61)
This matters because it presents attributes as a subtype of children, and if that were the case, selecting all children would also select attributes. The statement that the attribute axis selects only attributes is true, much as selecting all (biological) eldest children selects only eldest children, and no other type of child. But selecting all (biological) children selects both eldest and non-eldest, while selecting all child nodes does not also select attributes.
Attributes are not children, although (confusingly, but that's just the way it is) they may have parents. You write:
This matters because it presents attributes as a subtype of children, and if that were the case, selecting all children would also select attributes. The statement that the attribute axis selects only attributes is true, much as selecting all (biological) eldest children selects only eldest children, and no other type of child. But selecting all (biological) children selects both eldest and non-eldest, while selecting all child nodes does not also select attributes.