- From: Simon Pieters <simonp@opera.com>
- Date: Fri, 26 Oct 2007 18:03:03 +0200
- To: "public-xhtml2@w3.org" <public-xhtml2@w3.org>
I have some comments on: http://www.w3.org/TR/2007/WD-xhtml-role-20071004/ Document conformance says: The document MUST conform to the constraints expressed in Appendix A - DTD Implementation, combined with the constraints expressed in its host language implementation. It is unclear to me what this means. *No* document can conform to the constraints expressed in that DTD, because e.g. it doesn't declare any elements, and a document has to have at least one element to be well-formed. So it has to be when that DTD is *combined* with the host language's DTD, but this is not what the draft says. In any case, I don't see why there is a DTD in the spec in the first place. Why can't all conformance requirements be expressed in English prose instead? What if the host language doesn't have a DTD? Then it continues: If the host language is not in the XHTML namespace, the document MUST contain an xmlns declaration for the XHTML Role Attribute Module namespace [XMLNAMES]. Shouldn't that be s/xmlns/xmlns:*/, since attributes cannot be in a namespace and not have a prefix (declaratively, anyway). Furthermore, why require the namespace *declaration*? If I want to add a namespaced role attribute with script, I shouldn't have to also add a namespace declaration with script. The namespace declaration is completely useless in that case. It should say that the attribute must be in the XHTML namespace, and not say anything about namespace declarations. Host Language Conformance says: Finally, the attribute MUST be referenced using its namespace-qualified form (e.g., <myml:myelement xhtml:role='definition'>a term</myml:myelement>). This seems to be different from the previous version of the draft where it seems to imply that it is OK for host languages to use the attribute in no namespace: If the host language does not incorporate the XHTML Role Attribute Module attribute into its own namespace, [...] -- http://www.w3.org/TR/2006/WD-xhtml-role-20061113/ Why was this changed? Why can't other host languages use role="" in no namespace? User Agent Conformance says: A conforming user agent MUST support all of the features required in this specification. As far as I can tell, there are no features required in this specification, and therefore UAs can do nothing or anything and still be conforming. Or to put it in another way, it seems to be impossible to write test cases against this specification, and therefore it's impossible to prove non-conformance. Compact URIs says: A CURIE is comprised of two components, a prefix and a reference. The prefix is separated from the reference by a colon (:). It is possible to omit the prefix, and make use of the default prefix. It is also possible to omit both the prefix and the colon, leaving just a reference. This doesn't seem to match the production: curie := [ prefix [ ':' ] ] reference Shouldn't the production be: curie := [ [ prefix ] ':' ] reference ...to match the prose? Why is one if prefix and the colon allowed to be omitted? Shouldn't both have to be omitted, i.e.: curie := [ prefix ':' ] reference ...? Then it continues: A CURIE is a representation of a full IRI. This IRI is obtained by concatenating the IRI associated with the prefix with the reference. The result MUST be a syntactically valid IRI [IRI]. What does it mean when it isn't? What does it mean when the CURIE uses a prefix that is not declared? How is CURIE equivalence performed? By normalizing the two resulting IRIs? Which normalization rules are to be used, in that case? If normalization rules are to be performed, then it is utterly impossible to write style sheets or scripts that target a specific CURIE. It is already impossible to write style sheets for QNames in content. Writing scripts for QNames in content is possible but it's a great hassle. It is a great hassle because the DOM doesn't have any knowledge of QNames in content, and whether a namespace declaration is in scope can change over time. CURIEs have the same problem, but much worse since an IRI can be split anywhere to form a CURIE, and it could use uppercase letters in the domain name, specify a default port, use percentage-escaping, etc., etc. Authors will likely use the same prefixes anyway (e.g., the root element start tag in RSS 1.0 is always <rdf:RDF>, even though the prefix could be anything... it's just cargo-cult copy-paste boilerplate), and they effectively *have to* use the same prefixes if they want to have sane style sheets or scripts that target roles. By extension, it is likely that some implementors will treat the role as an opaque string with a fixed prefix and ignore the namespace declaration and the IRI (cf. some feed readers only recognize RSS 1.0 if the prefix is "rdf:"). Why are CURIEs used at all, as opposed to opaque strings with fixed prefixes? Then it continues: The CURIE prefix '_' is reserved. Why is it reserved if CURIEs aren't opaque strings? The The XHTML Role Attribute section says: The role attribute takes as its value one or more whitespace separated CURIEs. What does "role attribute" mean? An attribute with the local name "role" in no namespace? That is part of an element in the http://www.w3.org/1999/xhtml namespace? An attribute with the local name "role" in the http://www.w3.org/1999/xhtml namespace? What are UAs to do with namespaced role that is specified on XHTML elements? What are they to do with no-namespace role that is specified on non-XHTML elements? What is "whitespace"? How are UAs to extract the CURIEs from the attribute value (e.g. when other specs require UAs to do something with a specific CURIE)? Then it continues: Any non-qualified value MUST be interpreted in the XHTML namespace, and MUST be taken from the list defined in this section. What is the XHTML namespace? (AFAICT, it could be one of http://www.w3.org/1999/xhtml or http://www.w3.org/1999/xhtml/vocab# .) Are these UA requirements? If so, what does it mean to interpret a value in the XHTML namespace? What are UAs to do with non-qualified values not found in the list? What about CURIEs that have a prefix that is bound to the "XHTML namespace"? What are UAs to do when an element has more than one value found in the list? Cheers, -- Simon Pieters Opera Software
Received on Friday, 26 October 2007 16:03:13 UTC