- From: Robert J Burns <rob@robburns.com>
- Date: Thu, 22 May 2008 18:56:49 +0000
- To: Boris Zbarsky <bzbarsky@MIT.EDU>
- Cc: Charles McCathieNevile <chaals@opera.com>, "www-tag@w3.org" <www-tag@w3.org>, "public-html@w3.org" <public-html@w3.org>, "public-xhtml2@w3.org" <public-xhtml2@w3.org>, "wai-xtech@w3.org" <wai-xtech@w3.org>
HI Boris, On May 22, 2008, at 4:16 PM, Boris Zbarsky wrote: > Robert J Burns wrote: > > The spec actually says it both ways (as null URI and according to > the > > element they are attached to). > > That's talking about two different things. The exact quote from http://www.w3.org/TR/REC-xml-names/#defaulting > second paragraph is: > > A default namespace declaration applies to all unprefixed element > names within its scope. Default namespace declarations do not apply > directly to attribute names; the interpretation of unprefixed > attributes is determined by the element on which they appear. > > The following paragraph then says: > > The namespace name for an unprefixed attribute name always has no > value. > > The key here is what "interpretation" means. Basically, all this is > saying is that the meaning (semantics) of an unprefixed attribute > depends on the element it's attached to. If you have a "fill" > attribute on a <ge:laundry-machine> element, it might describe the > level to which it's OK to fill the tub. If you have a "fill" > attribute on an <svg:path> element, it might describe the fill to > apply to the path. > > For a prefixed attribute (one which is in some namespace), on the > other hand, the meaning (semantics) is generally defined by whatever > entity defines the prefix. An xlink:href always points to some > resource, no matter what element it's on. > > No contradiction here; just have to keep in mind that there are two > questions to be asked about an attribute: 1) "What namespace is it > in?" 2) "What does it mean?" The spec talks about the answers to > both questions. I absolutely agree that it could be phrased more > clearly. I understand how you're reading it (with no contradiction), but I'm saying it is a mistake to read it that way. Remember the W3C has a priority of constituencies it tries to follow: one should keep this in mind whether writing a W3C recommendation or implementing one. That priority is: user -> author -> implementation -> specification authors. When an implementor reads the spec (especially a W3C spec) that should be foremost in their mind in shaping their reading (not trying to force a construed reading that avoids contradiction). So if one reads the spec thinking about its purpose — allowing authors to create compound documents from separate vocabularies — then its clear that there is an error in the spec that can't simply be resolved by saying: "technically there's no contradiction". If an attribute is to be treated as from a certain vocabulary, then why should it be appearing in separate namespaces? What purpose for users or authors could that possibly serve (or implementors for that matter)? > > And implementors followed the > > inappropriate way the spec describes (perhaps not anticipating the > > problems it would create). > > To be honest, I'm not aware of any serious problems this has > created, and I know of a few it has avoided... Well, that's the question I keep asking. Could you share with me a few of the problems the null namespace avoids. I'd be happy to concede to your position, but I've been hard-pressed to find what advantages there might be. > > I seriously doubt correcting that mistake in > > current implementations would lead to serious problems. > > It'd break existing script working with setAttribute(NS) in > application/xhtml+xml, SVG, MathML, etc documents. And it would > complicate UAs somewhat (e.g. UA stylesheets for HTML/XHTML would > become more complicated). And it would make it more difficult to > author content that satisfies XHTML 1.0 Appendix C and can actually > be served as text/html _or_ application/xhtml+xml (because you'd > have to write the stylesheets differently). And of course it would > be a good bit of work to change the UAs to do this. > > Frankly, I can't think of much more serious problems than that which > a spec change _could_ cause, short of security bugs. I'll grant > that this change _probably_ wouldn't introduce security bugs. I'm not sure this is the case. There may be some other minor problems, but it certainly wouldn't have to create problems with since the DOM implementation could be changed the same time the parsing implementation was changed. Since I'm saying that we should simply stop having elements or attributes in the null namespace (within a compound document), then it may not be such a difficult problem. > > > However, correcting it would make things work much easier for > authors and > > authoring tool developers. > > It would make it harder to author XHTML. What would it actually > make easier? I'd love to see an example... I've already said what would be easier: that is it is much easier for authors to not have attributes from the same vocabulary in two different namespaces. How would it make it more difficult to author XHTML? I think part of the problem here is that you've become so accustomed to thinking about things in one way that you're not considering how this could be different. > > No, the spec says two different things > > As I said above, it's talking about two different things. It > doesn't say two different things about the same topic. It's talking about two different things technically, but those two different things should be mapped one-to-one to make namespaces work smoothly (and other parts of the spec make this clear). > > and implementors went with the wrong one. Why that is I don't know > > Because they understood what the spec actually says? Maybe, but it also may be early implementors changed the spec. I don't know the history of it, but the part about null namespace strikes me as slapped on and sort of "which one of these things is not like the others". > > > No, I think it is a major headache for authoring situations. > > Again, I'd love to see a specific example where this is a problem. It's been a while since I've worked on this, but surely you can understand that having the same attribute in separate namespaces is a problem. Why would an author or user (or implementor or spec writer) ever want that? I'm sure if it was fresher in my mind I could construct some problem examples. The point is the null namespace needlessly makes authoring compound documents more difficult (for no reason as far as I can tell). Also, since the XML namespaces recommendation is a very forward looking recommendation the problems the null namespace creates will become more aggravated the more authors try to push the bounds of XML and XML namespaces. Aaron mentioned XSLT. XEvents is another XML vocabulary involving attributes that can be used on both foreign and domestic elements. I think the problem can be fixed now (rather than later) with serious damage to existing content. However, it needs to be fixed especially before CSS3 namespaces become widely used (that's an area where I think it could require some transitioning work). > > It should be users, then authors, and then implementations. > > We agree on something! > > Of course if implementations don't (e.g. can't) implement the spec > as written, that's no good for authors either. I think you're underestimating implementors. Sure there's a problem of group think where one implementor starts off (perhaps doing something wrong) and the other simply follow suit. However, there's nothing to prevent an implementation that makes sure every element and every attribute in a compound document is in a namespace. > > Of course getting a group largely controlled by implementation > developers > > leaves that largely up to the honor system. > > Indeed. Agreed again. Take care, Rob
Received on Thursday, 22 May 2008 18:57:42 UTC