- From: Steven Pemberton <steven.pemberton@cwi.nl>
- Date: Wed, 28 May 2008 14:44:07 +0200
- To: "Charles McCathieNevile" <chaals@opera.com>, "Robert J Burns" <rob@robburns.com>, "Aaron M Leventhal" <aleventh@us.ibm.com>
- Cc: www-tag@w3.org, "public-html@w3.org Group" <public-html@w3.org>, public-xhtml2@w3.org, "wai-xtech@w3.org WAI-XTECH" <wai-xtech@w3.org>
On Thu, 22 May 2008 14:08:36 +0200, Charles McCathieNevile <chaals@opera.com> wrote: > I can only speculate about whether the SVG group decided, a decade ago, > not to have its attributes in a namespace, and to reduce namespace > mixing as far as possible, or whether they were not clear on what the > namespace spec (then in development) really meant. But they have the two > different attributes, and the only way to tell them apart is by the > element they are attached to. But that is how XML (and SGML) works! There is no requirement that the same named attributes on different elements do the same thing. To take HTML4, look at <meta name="..." <a name="..." <param name="..." <button name="..." (and several others). These are all different name attributes. They do different things. You use the element to identify which is which. Namespaces are about identification, and that is the reason for the frequently misunderstood sentence in the namespaces spec "The namespace name for an unprefixed attribute name always has no value." This doesn't mean that the attribute is in the null namespace; it means "you are asking the wrong question when you ask which namespace an unprefixed attribute is in", because you don't identify unprefixed attributes from the namespace, but from the element it is on. On the other hand, a prefixed attribute is a *completely different* attribute from an unprefixed one. This is why the following (frequently not-understood) example from the namespaces spec is OK: <x xmlns:n1="http://www.w3.org" xmlns="http://www.w3.org" > <good a="1" b="2" /> <good a="1" n1:a="2" /> </x> a and n1:a are two *different* attributes, and it is up to the n1 spec to say what n1:a means. They must be different, because the XML spec doesn't allow duplication of attributes on an element. Everyone might reasonably be expected to understand what <my:foo html:href="bar"/> is mean to convey, but there is no guessing what <my:foo html:name="a"/> should mean. But in either case, some specification has to say what they mean when used like this. So to summarise, SVG was perfectly in order using the same attribute name on different elements like this. Best wishes, Steven
Received on Wednesday, 28 May 2008 12:47:13 UTC