In this scenario, an information architect wants to redefine the attributes for the section element. He wants to make the id attribute required and omit the spectitle attribute.
- He creates a .mod file named idRequiredSectionContraint.mod, where "idRequired" is a string that characterizes the constraint.
- He adds the following content to idRequiredSectionContraint.mod:
<!-- ============================================================= --> <!-- CONSTRAINED TOPIC ENTITIES --> <!-- ============================================================= --> <!ENTITY section-constraints "(topic idRequired-section-c)" > <!-- Declares the entities referenced in the constrained content --> <!-- model. --> <!ENTITY % conref-atts 'conref CDATA #IMPLIED conrefend CDATA #IMPLIED conaction (mark|pushafter|pushbefore|pushreplace|-dita-use-conref-target) #IMPLIED conkeyref CDATA #IMPLIED' > <!ENTITY % filter-atts 'props CDATA #IMPLIED platform CDATA #IMPLIED product CDATA #IMPLIED audience CDATA #IMPLIED otherprops CDATA #IMPLIED %props-attribute-extensions;' > <!ENTITY % select-atts '%filter-atts; base CDATA #IMPLIED %base-attribute-extensions; importance (default|deprecated|high|low|normal|obsolete|optional| recommended|required|urgent|-dita-use-conref-target) #IMPLIED rev CDATA #IMPLIED status (changed|deleted|unchanged|-dita-use-conref-target) #IMPLIED' > <!ENTITY % localization-atts 'translate (no|yes|-dita-use-conref-target) #IMPLIED xml:lang CDATA #IMPLIED dir (lro|ltr|rlo|rtl|-dita-use-conref-target) #IMPLIED' > <!-- Declares the constrained content model. Original definition --> <!-- included %univ-atts;, spectitle, and outputclass; now includes--> <!-- individual pieces of univ-atts, to make ID required. --> <!ENTITY % section.attributes "id CDATA #REQUIRED %conref-atts; %select-atts; %localization-atts; outputclass CDATA #IMPLIED">
Note: The information architect had to declare all the parameter entities that are referenced in the redefined attributes for section. If he did not do so, none of the attributes that are declared in the conref-atts, select-atts, or localization-atts parameter entities would be available on the section element. Furthermore, since the select-atts parameter entity references the filter-atts parameter entity, the filter-atts must be declared and it must precede the declaration for the select-atts parameter entity. The props-attribute-extensions and base-attribute-extensions parameter entities do not need to be declared in the constraint module, because they are declared in the document-type shells before the inclusion of the constraint module. - He then integrates the constraint module into the applicable document-type shells and adds it to his catalog.xml file.