An attribute domain vocabulary module declares a new attribute specialized from either
the @props
or @base
attribute. An attribute domain module
defines exactly one new attribute type.
All vocabulary and constraint modules must document their
@domains
attribute contribution. The value of the contribution is
constructed according to the rules found in domains attribute rules and syntax. The OASIS grammar files
use a <domainsContribution>
element to document the contribution;
this element is used to help enable generation of DTD and XSD grammar files. An XML comment
or <a:documentation>
element can also be used.
An attribute domain's name is the name of the attribute plus "Att". For example, for the attribute named "deliveryTarget" the attribute domain name is "deliveryTargetAtt". The attribute domain name is used to construct pattern names for the domain.
An attribute domain consists of one file, which has three sections:
The @domains
contribution must be documented in the module. The value
is constructed according to the rules found in domains attribute rules and syntax.
@props
or
@base
attribute set pattern to include the attribute
specialization.@props
the pattern is named
props-attribute-extensions
. The pattern specifies a
@combine
value of "interleave", and the content of the pattern is a
reference to the specialized attribute declaration pattern. For
example:<define name="props-attribute-extensions" combine="interleave">
<ref name="deliveryTargetAtt-d-attribute"/>
</define>
@base
the pattern is named
base-attribute-extensions
. The pattern specifies a
@combine
value of "interleave", and the content of the pattern is a
reference to the specialized attribute declaration pattern. For
example:<define name="base-attribute-extensions" combine="interleave">
<ref name="myBaseSpecializationAtt-d-attribute"/>
</define>
domainName-d-attribute
. The attribute must be defined as optional. For
example, the @deliveryTarget
specialization of @props
is defined as
follows:<define name="deliveryTargetAtt-d-attribute">
<optional>
<attribute name="deliveryTarget"/>
</optional>
</define>