The concepts described below are critical for a full understanding of keys and key processing.
The use of the phases "
<map> element" or
<topicref> element" should be interpreted as
<map> element and any specialization of
<map> element " or "
<topicref> element or
any specialization of
<topicref>element that binds one or more key names to zero or more resources.
A key definition binds one or more keys to zero or more resources. Resources can be:
@hrefattribute or indirectly by the
@keyrefattribute on the key definition. References to the key are considered references to the URI-addressed resource.
<topicmeta>element) The child elements of the
<topicmeta>element. The content of those elements can be used to populate the content of elements that reference the key.
If a key definition does not contain a
<topicmeta> element and does not
refer to a resource by
@keyref, it is nonetheless a valid key definition. References to the key
definition are considered resolvable, but no linking or content transclusion occurs.
All key definitions and key references exist within a key scope. If the
@keyscope attribute is never specified within the map hierarchy,
all keys exist within a single, default key scope.
Additional key scopes are created when the
@keyscope attribute is used. The
attribute specifies a name or names for the scope. Within a map hierarchy, key scopes are
bounded by the following:
<topicref>elements that specify the
The key space associated with a key scope is used to resolve all key references that occur immediately within that scope. Key references in child scopes are resolved using the key spaces that are associated with those child scopes.
A key scope is associated with exactly one key space. That key space contains all key definitions that are located directly within the scope; it might also contain definitions that exist in other scopes. Specifically, the key space associated with a key scope is comprised of the following key definitions, in order of precedence:
A key space can contain many definitions for a given key, but only one definition is effective for the purpose of resolving key references.
When a key has a definition in the key space that is inherited from a parent scope, that definition is effective. Otherwise, a key definition is effective if it is first in a breadth-first traversal of the locally-scoped submaps beneath the scope-defining element. Put another way, a key definition is effective if it is the first definition for that key name in the shallowest map that contains that key definition. This allows higher-level map authors to override keys defined in referenced submaps.
@keysattribute might be the effective definition for some of its keys but not for others.
Within a key scope, keys do not have to be defined before they are referenced. The key space is effective for the entire scope, so the order of key definitions and key references relative to one another is not significant. This has the following implications for processors:
For purposes of key definition precedence, the scope-qualified key definitions from a child scope are considered to occur at the location of the scope-defining element within the parent scope. See Example: How key scopes affect key precedence for more information.
Return to main page.
|Copyright © OASIS Open 2015. All Rights Reserved.||03 September 2015|