- From: Shane McCarron <shane@aptest.com>
- Date: Mon, 11 Aug 2008 17:18:36 -0500
- To: Doug Schepers <schepers@w3.org>
- CC: "Gregory J. Rosmaita" <oedipus@hicom.net>, w3c-wai-pf@w3.org, public-xhtml2@w3.org, w3c-wai-ua@w3.org, public-svg-wg@w3.org, wai-liaison@w3.org
Doug,
Your comments cut to the core of a deep philosophical issue. XHTML
Modularization is a framework and techniques for defining interoperable
XML modules. XHTML Access is one such module. The XHTML specifications
have in general *never* defined required behavior in the face of
incorrect usage - in particular when such behavior would be a violation
of the underlying protocols or technologies. Instead, we have used
formal terms like "unspecified" or "undefined" as an indicator to
application developers that it would be a bad idea to rely upon such a
thing. From XHTML 1.0:
Unspecified
When a value or behavior is unspecified, the specification
defines no portability requirements for a facility on an
implementation even when faced with a document that uses the
facility. A document that requires specific behavior in such an
instance, rather than tolerating any behavior when using that
facility, is not a Strictly Conforming XHTML Document.
This standards development model is intentional, and as I think I
mentioned I am irrationally biased in this regard. It is hard for me to
objectively consider other points of view because I am so opposed to
trying to codify specific behaviors in the face of incorrect usage. Its
not that I don't understand that implementations might choose to do
something when presented with an incorrect document. I get it. I just
don't want to encourage it or define it in any way other than to tell
document authors "don't do this - its wrong, the results are
unpredictable, and your customers will not be happy." I understand that
there are people who disagree with me, and that those people feel we
should carefully lock down the behavior so that it is possible to
develop portable content even when that content is broken. I just think
that is silly.
I am not advocating breaking the web. I think that is bad. However, I
am personally adamant in my position that we not *continue* to break the
web. That includes this case. XML is extremely clear about IDs. So is
HTML 4. There cannot be more than one ID with the same value in a
document. Period. If I had been there when HTML 4 was being written to
include ID, and had my way, we would have mandated that user agents
refuse to process a document with such a violation except to say "your
document is broken on line 245 - duplicate value of id attribute" and
force the content developer to fix it. If the web had worked that way
from day one, we wouldn't have a steaming trillion page high pile of
dung that is the modern web. But I digress.
So, in specific response to your questions:
Doug Schepers wrote:
>
> Hi, Shane-
>
> Shane McCarron wrote (on 8/10/08 9:18 AM):
>> I appreciate what you are trying to accomplish, and I will leave that
>> suggestion to the working group. I have a strong bias against
>> encouraging the behavior your are trying to permit. This is an XML
>> module, and XML does not permit duplicate IDs. Period. It would be
>> inappropriate to use this module as written in any non-XML grammar.
>
> Hm... why's that? If a non-XML grammar has enough similarities to XML
> that this module would be useful to it, then it seems appropriate
> enough to use it there.
If there is such a language in the future, we can define the behaviors
along with a new version of this module. This module is for XML. And
that's it. And as such, it should not document *successful* behavior
that violates the XML recommendation. I would be happy to say, if you
like, that "As required by the XML Recommendation (ref) duplicate values
for the ID attribute are not permitted, and therefore no behavior is
defined for documents that violate that constraint." I suspect you
would not find that very satisfying. Nor would other people. In the
past, we have decided that being silent on an issue rather than
duplicating constraints enforced by underlying specifications is the
wiser course.
>> And
>> even in such a grammar (e.g. HTML4) duplicate IDs are not permitted.
>> So I don't see why defining the behavior and therefore encouraging
>> people to violate the rules is a good idea. If it were up to me, I
>> would codify that duplicate IDs are an error, and that the behavior
>> of an implementation in the face of them is unspecified (formal, IEEE
>> term... means its a bad idea, don't do it. won't work portably).
>
> Why leave it unspecified? It's not much more work to anticipate
> common problems and explain what should happen in those
> circumstances. This is a big help to implementors, and it will make
> it more likely that a well-detailed spec will be implemented, and that
> the behavior will be interoperable.
Unspecified is a formal term. This isn't about more work or less work.
Its about what we are telling content developers. It is also about our
support for the underlying specifications... XHTML M12N and XML in this
case. Both of them say that such behavior is not permitted. The DOM
also does not permit it - it isn't even possible to discover a duplicate
ID value via the DOM. Or it should not be. If I say "getElementByID"
for a given ID, I get one. And only one. If there are multiple that
match, I suspect the behavior is either 1) not what you expect or 2) not
what I expect. Either way, its bad. And we can't fix it in the XHTML
Access Module.
>> But, like I said, I value your input and know that I am dogmatic in
>> this respect. So I will leave it to the working group.
>
> Here's a compromise that may be more palatable to you (and is a bit
> more precise than the original wording):
>
> "Also note: When processing a document with duplicate ids (e.g., an
> invalid XML document), element groups based on targetid values may
> contain multiple values, just like those of targetrole values."
Honestly, I don't consider your suggestion a compromise. Regardless, I
am stepping out of the decision loop on this issue. I am clearly very
opinionated on this, and it is possible my opinions are out of sync with
the current thinking of the XHTML 2 Working Group.
Thanks again for your hard work and suggestions. I hope that this will
get resolved at the next XHTML 2 Working Group meeting on Wednesday.
--
Shane P. McCarron Phone: +1 763 786-8160 x120
Managing Director Fax: +1 763 786-8180
ApTest Minnesota Inet: shane@aptest.com
Received on Monday, 11 August 2008 22:19:37 UTC