I notice that in the latest draft of the ditaspec.pdf, there is a to-do
under "Modularization in DTDs" to the effect of "add info on attribute
specialization".
OK--so how do we do attribute specialization, in particular of the base
attribute (it's slightly clearer for the conditional attributes).
If I read the specialization spec correctly we are not allowed to add
additional attributes to element types but there is the "base" attribute
which is intended to allow arbitrary specialization.
But what is the mechanism for actually declaring that an attribute is a
specialization of "base" and what would be the point of doing so?
That is, it's not clear to me how specializing from base= would aid
interoperability since it's local meaning must be application specific
(and therefore not generally interoperable). It's also not clear whether
specializing base means simply constraining the allowed values of the
base attribute for a particular element type or if it means declaring a
new attribute name that is somehow mapped to "base".
In the absence of a mechanism for remapping attribute names, it seems to
me that it would be sufficient to simply say that any attribute whose
name is not defined in the base DITA specification is by definition an
extension attribute, but that the declaration of such attributes should
not be prohibited. [NOTE: I'm not suggesting we have an attribute
renaming mechanism--that would be prohibitively complicated--I'm just
observing that we don't have one (and probably can't ever have one as
long as it's a goal to support non-schema-aware, naive processing of
DITA instances).]
If we wanted to be even more strict we could require that any private
attributes be in a namespace other than the DITA-defined namespace(s).
Cheers,
Eliot
--
W. Eliot Kimber
Professional Services
Innodata Isogen
8500 N. Mopac, Suite 402
Austin, TX 78759
(214) 954-5198
ekimber@innodata-isogen.com
www.innodata-isogen.com