This depends on the technology -- some treat them as attributes and some treat them as namespace declarations. For example, SAX1 treats them as attributes and SAX2 can treat them as attributes or namespace declarations, depending on how the parser is configured. DOM levels 1 and 2 treat them as attributes, but DOM level 2 also interprets them as namespace declarations. XPath, XSLT, and XML Schemas treat them as namespaces declarations. The reason that different technologies treat these differently is that many of these technologies predate XML namespaces. Thus, newer versions of them need to worry both about XML namespaces and backwards compatibility issues.