2.1.4.3.2 Requirements for specialized
element types and attributes
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.
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.
Previous Topic: 2.1.4.3.1
Vocabulary modules
Next Topic: 2.1.4.3.3
Element type specialization hierarchy declaration (the @class attribute)
Parent Topic: 2.1.4.3
Specialization
Sibling Topics:
2.1.4.3.1
Vocabulary modules
2.1.4.3.3
Element type specialization hierarchy declaration (the @class attribute)
2.1.4.3.4
Domain usage declaration (the @domains attribute)
2.1.4.3.5
Generalization
2.1.4.3.6
Attribute generalization
2.1.4.3.7
Specializing foreign or unknown content
2.1.4.3.8
Specialization module coding requirements