Example: Duplicate key definitions within a single map
In this scenario, a DITA map contains duplicate key definitions. How a processor finds the effective key definition depends on document order and the effect of filtering applied to the key definitions.
In the following example, a map contains two definitions for the key "load-toner":
<map>
<!--... -->
<keydef keys="load-toner" href="model-1235-load-toner-proc.dita"/>
<keydef keys="load-toner" href="model-4545-load-toner-proc.dita"
/>
<!--... -->
</map>
In this example, only the first key definition (in document order) of the "load-toner" key is effective. All references to the key within the scope of the map resolve to the topic model-1235-load-toner-proc.dita.
In the following example, a map contains two definitions for the "file-chooser-dialog" key;
each key definition specifies a different value for the @platform
attribute.
<map>
<!--... -->
<keydef keys="file-chooser-dialog" href="file-chooser-osx.dita" platform="osx"/>
<keydef keys="file-chooser-dialog" href="file-chooser-win7.dita" platform="windows7"/>
<!--... -->
</map>
In this case, the effective key definition is determined not only by the order in which the
definitions occur, but also by whether the active value of the platform condition is "osx" or "windows7". Both key definitions are
potentially effective because they have distinct values for the conditional
attribute. Note that if no active value is specified for the @platform
attribute at processing time, then both of the key definitions are present and so the first
one in document order is the effective definition.
@platform
attribute are excluded, then neither definition is effective and
the key is undefined. That case can be avoided by specifying an unconditional key definition
after any conditional key definitions, for
example:<map>
<!--... -->
<keydef keys="file-chooser-dialog" href="file-chooser-osx.dita" platform="osx"/>
<keydef keys="file-chooser-dialog" href="file-chooser-win7.dita" platform="windows7"/>
<keydef keys="file-chooser-dialog" href="file-chooser-generic.dita"/>
<!--... -->
</map>
If the above map is processed with both "osx" and "windows" values for the
@platform
attribute excluded, then the effective key definition for
"file-chooser-dialog" is the file-chooser-generic.dita resource.