When you specialize one element from another, or a new attribute from @props or @base,
the new element or attribute must obey certain rules in order to be a conforming
specialization.
A specialized element:
- Must have a properly formed @class
attribute specifying inheritance from its parent.
- Must not have a more inclusive content
model than its parent has.
- Must not have attributes that its
parent lacks.
- Must not have values or value ranges
of these attributes that are more extensive than those in the parent.
An attribute specialized from the @props or @base attribute:
- Must follow the rules for attribute
domain specialization.
- Must not have values or value ranges
that are more extensive than those of the parent.
- Must conform to the rules
for conditional processing values, that is, alphanumeric space-delimited values. In
generalized form, the values must conform to the rules for attribute
generalization.
- Must be declared as a global attribute. Attribute specializations
cannot be limited to specific element types.
DITA elements are never in a namespace. Only the @DITAArchVersion attribute is in a
DITA-defined namespace. All other attributes, except for those defined by the XML standard,
are in no namespace.
This limitation is imposed by the details of the @class attribute syntax, which makes it
impractical to have namespace-qualified names for either vocabulary modules or individual
element types or attributes. Elements included as descendants of the DITA <foreign> element
type may be in any namespace.
Note: For this reason, domain modules that are intended for wide
use should take care to define element type and attribute names that are unlikely to
conflict with names used in other domains, for example, by using a domain-specific prefix on
all names.