The @specializations
attribute rules and
syntax
The @specializations
attribute enables
processors to determine what attribute specializations are available in
a document. The attribute is declared on the root element for each
topic or map type. Each attribute domain defines a token to declare the
extension. The effective value of the
@specializations
attribute is composed of these
tokens.
Syntax and rules
The @props
and @base
attributes are the only two core
attributes available for specialization.
Each specialization of the @props
and @base
attributes
MUST provide a token for use by the
@specializations
attribute.
The @specializations
token for an attribute specialization begins with
either @props
or @base
followed by a slash, followed by the
name of the new attribute:
'@', props-or-base, ('/', attname)+
- If
@props
is specialized to create@myNewProp
, this results in the following token:@props/myNewProp
- If
@base
is specialized to create@myFirstBase
, this results in the following token:@base/myFirstBase
- If that specialized attribute
@myFirstBase
is further specialized to create@mySecondBase
, this results in the following token:@base/myFirstBase/mySecondBase
Note that the value for the @specializations
attribute is not authored. Instead, the value is defaulted based on
the modules that are included in the document type shell.
Example: @specializations attribute for
a task with multiple
domains
This section is non-normative.
In this example, a document-type shell integrates the task structural module and the following domain modules:
Domain | Domain short name |
---|---|
User interface | ui-d |
Software | sw-d |
@deliveryTarget attribute |
deliveryTarget |
@platform attribute |
platform |
@product attribute |
product |
The value of the @specializations
attribute
includes one value from each attribute module.
The effective value is the following:
specializations="@props/deliveryTarget @props/platform @props/product"
If the document-type shell also used a specialization of the @platform
attribute that describes the hardware platform, the new @hardwarePlatform
attribute domain would add an additional value to the @specializations
attribute:
specializations="@props/deliveryTarget @props/platform @props/platform/hardwarePlatform @props/product"