Branch filtering: Multiple condition sets for a branch
Using multiple <ditavalref>
elements as the children of a map
or map branch indicates that the map or map branch must be conditionally processed using the
rules that are specified in the referenced DITAVAL documents.
When multiple <ditavalref>
elements occur as children of the same
element, the rules in the referenced DITAVAL documents are processed independently. This
effectively requires a processor to maintain one copy of the branch for each
<ditavalref>
, so that each copy can be filtered using
different conditions.
<ditavalref>
conditions. However, this might not be the case when multiple
<ditavalref>
elements occur as direct children of a root map.
In this case, it is possible that the map could be filtered in a manner that results in
two or more distinct versions of the <title>
or metadata. How
this is handled is processor dependent. For example, when a
root map has three <ditavalref>
elements as children of
<map>
, a conversion to EPUB could produce an EPUB with
three versions of the content, or it could produce three distinct EPUB
documents.When a processor maintains multiple copies of a branch for different condition sets, it has to manage situations where a single resource with a single key name results in two distinct resources. Key names must be modified in order to allow references to a specific filtered copy of the resource; without renaming, key references could only be used to refer to a single filtered copy of the resource, chosen by the processor. See Branch filtering: Impact on resource and key names for details on how to manage resource names and key names.