Re: [selectors4] List [xml:lang] and [xmlns] as selectors that do not work in XML

Le 25/09/2013 12:43, Leif Halvard Silli a écrit :
> The section on ‘Attribute selectors and namespaces’ says: [1]
>
> ]]
>     [|att] { color: green }
>      [att] { color: green }
>        [ … snip … ]
>     The last two rules are equivalent and will match only elements
>     with the attribute att where the attribute is not in a namespace.
> [[
>
> Hence, these rules would not work in a namespace aware XML parser:
>
>       [xmlns] { color: green }
>  [xml:lang] { color: green }

[xml:lang] is not valid Selector syntax. You probably want this:

   @namespace xml "http://www.w3.org/XML/1998/namespace";
   [xml|lang] { color: green }


As to [xmlns], some testing shows that a bare xmlns attribute (defining 
the default namespace) ends up in the DOM with 'namespaceURI' set to 
"http://www.w3.org/2000/xmlns/". I have no idea why. So the way to 
select it (though I don’t know why you would want that) is:

   @namespace xmlns "http://www.w3.org/2000/xmlns/";
   [xmlns|xmlns] { color: green }


Test cases:

data:application/xhtml+xml,<html xmlns="http://www.w3.org/1999/xhtml" 
xml:lang="fr"><style>@namespace xml 
"http://www.w3.org/XML/1998/namespace";[xml|lang]{color:green}</style>Test</html>

data:application/xhtml+xml,<html 
xmlns="http://www.w3.org/1999/xhtml"><style>@namespace xmlns 
"http://www.w3.org/2000/xmlns/";[xmlns|xmlns]{color:green}</style>Test</html>


> Proposal: Please add a note/info that mentions @xml:foo and @xmlns as
> examples of common attributes that cannot, when occurring in a XML
> document, be styled with a simple [att]{} selector. It helps authors to
> understand the concept if they see an actual, non-theoretical, example.
>
> [1] http://dev.w3.org/csswg/selectors4/#attrnmsp

I find this @xmlns parsing oddity more confusing than helpful in 
understanding namespaces.

-- 
Simon Sapin

Received on Wednesday, 25 September 2013 13:42:19 UTC