Example: Constrain attributes for the section element
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.
constraintsexamplesrestricting attributes for an
element
examplesconstraintsrestricting attributes for an
element
- 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">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.