In the current CSS 2.1 standard the element selectors are ignoring the namespaces of the elements they are matching. Only the local name of the elements are considered in the selector matching process.
<oXygen/> Author uses a different approach similar to the CSS Level 3 specification. If the element name from the CSS selector is not preceded by a namespace prefix it is considered to match an element with the same local name as the selector value and ANY namespace, otherwise the element must match both the local name and the namespace.
In CSS up to version 2.1 the name tokens from the selectors are matching all elements from ANY namespace that have the same local name. Example:
<x:b xmlns:x="ns_x"/> <y:b xmlns:y="ns_y"/>
Are both matched by the rule:
b {font-weight:bold}
Starting with CSS Level 3 you can create selectors that are namespace aware.
Example 7.5. Defining both prefixed namespaces and the default namespace
Given the namespace declarations:
@namespace sync "http://sync.example.org"; @namespace "http://example.com/foo";
In a context where the default namespace applies:
represents the name A in the
http://sync.example.org
namespace.
represents the name B that belongs to NO NAMESPACE.
represents the name C in ANY namespace, including NO NAMESPACE.
represents the name D in the
http://example.com/foo
namespace.
Example 7.6. Defining only prefixed namespaces
Given the namespace declaration:
@namespace sync "http://sync.example.org";
Then:
represents the name A in the
http://sync.example.org
namespace.
represents the name B that belongs to NO NAMESPACE.
represents the name C in ANY namespace, including NO NAMESPACE.
represents the name D in ANY namespace, including NO NAMESPACE.