-- Data model --
1. Every tag and attribute is optionally namespaced by a URI. (Tags usually are, attributes usually are not.)
2. The meaning of a non-namespaced attribute is defined by the tag to which it's applied.
3. The meaning of a non-namespaced tag is defined by the application.
-- Serialization --
4. To save space in the textual representation of XML, namespaces are (necessarily) referenced by user-defined aliases.
5. To save even more space, a default namespace may be (and usually is) defined for use by tags (but not attributes).
6. Alias definitions live in opening tags, and are scoped to the tag itself and all its children. They are of the form xmlns:{alias}="{namespace}", or xmlns="{namespace}" for the default namespace.
7. Tag and attribute names are prefixed with an alias to indicate that they live in that namespace: {alias}:{tag/attribute name}
8. If a tag name is not prefixed with an alias, it lives in the default namespace (if any).
9. If an attribute name is not prefixed with an alias, it is not namespaced.
10. The aliases generally have no semantic meaning, but there are wacky exceptions (e.g. XML Schema).
EDIT, forgot: 11. The "xml" namespace is reserved and predefined as 'http://www.w3.org/XML/1998/namespace'.