Example: Adding an existing domain attribute to certain elements using DTDs
This section is non-normative.
In this scenario, a company wants to use the
      @otherprops attribute specialization. However, they
    want to make the attribute available only on certain elements:
      <p>, <div>, and
      <section>.
The DITA architect will need to create an extension module and integrate it into the appropriate document-type shells.
- 
        The DITA architect creates an expansion module that adds the @otherpropsattribute to the selected elements: acme-otherpropsAttExpansion.mod. The expansion module contains the following code:<?xml version="1.0" encoding="UTF-8"?> <!-- Add the otherprops attribute to certain elements --> <!ATTLIST p %otherpropsAtt-d-attribute;> <!ATTLIST div %otherpropsAtt-d-attribute;> <!ATTLIST section %otherpropsAtt-d-attribute;>Note that the %otherpropsAtt-d-attribute;is defined in the separate attribute-specialization module that defines the@otherpropsattribute.
- They then update the catalog.xml file to include the expansion module.
- They integrate the extension module into the applicable
        document-type shell, after the declaration for the
          @otherpropsattribute-specialization module:<!-- ============================================================= --> <!-- DOMAIN ATTRIBUTES DECLARATIONS --> <!-- ============================================================= --> ... <!ENTITY % otherpropsAtt-d-dec PUBLIC "-//OASIS//ENTITIES DITA 2.0 Otherprops Attribute Domain//EN" "otherpropsAttDomain.ent" >%otherpropsAtt-d-dec; <!ENTITY % otherprops-expansion-e-def PUBLIC "-//ACME//DITA 2.0 Otherprops Expansion//EN" "acme-otherpropsAttExpansion.mod" >%otherprops-expansion-e-def; ...
- 
        They remove the reference to the @otherpropsattribute from theprops-attribute-extensionentity:<!-- ============================================================= --> <!-- DOMAIN ATTRIBUTE EXTENSIONS --> <!-- ============================================================= --> <!ENTITY % base-attribute-extensions "" > <!ENTITY % props-attribute-extensions "%audienceAtt-d-attribute; %deliveryTargetAtt-d-attribute; %otherpropsAtt-d-attribute; %platformAtt-d-attribute; %productAtt-d-attribute;" >
- They ensure that the included-domainsentity contains the@otherpropscontribution to the@specializationsattribute:<!-- ============================================================= --> <!-- SPECIALIZATIONS ATTRIBUTE OVERRIDE --> <!-- ============================================================= --> <!ENTITY included-domains "&audienceAtt-d-att; &deliveryTargetAtt-d-att; &otherpropsAtt-d-att; &platformAtt-d-att; &productAtt-d-att;" >
- After checking the test topic to ensure that the attribute lists are modified as expected, the work is done.