Dear editors,
I understand the most common way to add modules is through namespaces.
But even in XHTML 1.1 the W3 validator throws an error at namespaces
[1], so I rather combined the XHTML Role DTD with the ARIA-State DTD.
Alas that's impossible if I do not edit the modules themselves [2].
The difficulty lies in the order the modules have to be implemented. If
my understanding is correct the order has to be like this:
1. bring in the Role Attribute modules (xhtml-role-1.mod,
xhtml-role-qname-1.mod)
2. bring in the States and Properties module (aaa-qname.mod),
3. add %xhtml-role.attrs.qname; and %aaa.attrs.qname; to
%Common.extra.attrib,
4. get the XHTML 1.1 driver,
5. add tabindex to text containers.
Now the problem is that ARIA-State is *bundled* with the XHTML 1.1
driver *and* tabindex. Thus I can't add %xhtml-role.attrs.qname; to
%Common.extra.attrib after aaa-qname.mod but before the XHTML 1.1
driver. If I add it before the ARIA-State module, %Common.extra.attrib
gets overwritten by %aaa.attrs.qname; and my role definition is lost. If
I try to IGNORE the XHTML driver in the Aria-State module in order to
add %Common.extra.attrib and then manually INCLUDE the XHTML driver
later, the tabindex extension gets lost.
Concerning the DTDs there are these inconveniences:
1. It would be more consistent with other XHTML modules to create
ARIA-State as an add-on module without bundling it with the XHTML 1.1
driver. That would also enable the use of these modules in other XML
languages. But if I'm right and the states and properties must be added
before the XHTML driver and tabindex extended after it, there need to be
two separate modules: a) States and Properties, b) tabindex.
2. If you have to bundle it for convenience of the average user, create
an extra deluxe bundle with XHTML 1.1, XHTML Role and ARIA-State. That
should be optional, an extra service for the lazy developer, while the
modules themselves should be available unbundled.
3. A better solution to extend %Common.extra.attrib is needed, so that
the role attribute extension doesn't conflict with the states and
properties extension. Also adding tabindex to %Common.extra.attrib might
be an option [1], so there would be 3 modules that use it.
4. The manual implementation of both xhtml-role-1.mod and
xhtml-role-qname-1.mod is a bit of a pain. I would expect
xhtml-role-1.mod to bring in the qname module, instead it does nothing
(and even says so in a comment). Probably the HTML WG had good reason to
create it that way, but I wonder why? "Does nothing" reads like a joke.
5. The "triple-a" in "xhtml11-aaa.dtd" or the default namespace leads to
some confusion because people think it is related to triple-a WCAG
conformance. Calling it xhtml11-state.dtd with a "state" default
namespace would be less ambiguous.
I have posted this a while ago to the Protocols and Formats WG [2], but
I thought it might be good to bring this to the attention of the XHTML
Role editors as well. It is impossible to address this issue without the
other working group since both DTDs are concerned and a harmonization is
needed.
Best regards,
Martin
[1]
http://validator.w3.org/check?uri=http://learningtheworld.eu/aaa-dtd-xmlns/
[2] http://learningtheworld.eu/aaa-custom-dtd/
[3]
http://lists.w3.org/Archives/Public/public-pfwg-comments/2006OctDec/0003.html
[4]
http://lists.w3.org/Archives/Public/public-pfwg-comments/2006OctDec/0002.htm