Processing conrefs

When processing content references, DITA processors compare the restrictions of each context to ensure that the conrefed content is valid in its new context.

Except where allowed by weak constraints, a conref processor MUST NOT permit resolution of a reuse relationship that could be rendered invalid under the rules of either the reused or reusing content.

Note

The DITA @conref attribute is a transclusion mechanism similar to XInclude and to HyTime value references. DITA differs from these mechanisms, however, in that conref validity does not apply simply to the current content at the time of replacement, but to the possible content given the restrictions of both the referencing document type and the referenced document type.

When pulling content with the conref mechanism, if the referenced element is the same type as the referencing element, and the set of domains declared on the @domains attribute in the referenced topic or map instance is the same as or a subset of the domains declared in the referencing document, the element set allowed in the referenced element is guaranteed to be the same as, or a subset of, the element set allowed in the referencing element.

When pushing content with the conref mechanism, the domain checking algorithm is reversed. In this case, if the set of domains declared on the @domains attribute in the referencing topic or map instance is the same as or a subset of the domains declared in the referenced document, the element set allowed in the pushed content is guaranteed to be the same as, or a subset of, the element set allowed in the new location.

In both cases, processors resolving conrefs SHOULD tolerate specializations of valid elements and generalize elements in the pushed or pulled content fragment as needed for the resolving context.

Was this helpful?