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.

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.

Was this helpful?