Attributes are syntactic illusions.
They appear to be part of an element simply because they are inside the brackets. Child elements are not and thus seem to represent containment. This doesn't mean attributes are not useful however since there are useful illusions, but they are useful to people and not necessarily to machines. Attributes are convenient in the same sense that C is more convenient than assembly language. Like the 'for' loop, it is a shorthand for a common usage pattern.