Create a custom plugin for custom shells

In CCMS Desktop, you can integrate your own custom DTD shells that define custom topic or map types, as well as additional domains or constraints. This is the first of two methods you can use to do so.

You must distinguish between the version of DITA you use in your deployment: DITA 1.2 and a DITA 1.3. This is critical for the step that involves public and system identifiers.

Read the entire introductory section to determine which of the two methods best fits your situation. See Custom DTD shell methods.

The following steps assume you have already created the custom shells you want to integrate. For these steps, let's assume you are integrating the following: company-concept.dtd, company-task.dtd, company-reference.dtd, company-topic.dtd, company-map.dtd, and company-bookmap.dtd. In addition, you are integrating company-utilitiesdomain.ent and company-utilitiesdomain.mod.

Note: It's likely you will need to integrate the MadCap Software Localization domain into your custom topic shells. For instructions, refer to Example domain specialization: Localization.

To create a custom plugin for your custom shells:

  1. In CCMS Admin, use Create Collection to create a new plugin folder in Repository/system/plugins.

    Give this DTD plugin a unique name, following standard DITA plugin naming conventions. This procedure and the ones that follow use the name com.company.doctypes as an example. When following these instructions, be sure to substitute your actual name.

  2. Add a dtd subfolder using Create Collection.
  3. Copy plugin.xml and catalog.xml from com.ixiasoft.dita13.dtd to com.company.doctypes.
    Tip: You might have to export both files to your desktop and then add them to com.company.doctypes using Insert Documents.
  4. Check out plugin.xml (in com.company.doctypes) and open it.
  5. Delete the existing content and replace it with the following.
    <plugin id="com.company.doctypes">
        <feature extension="dita.specialization.catalog.relative" 
                 value="catalog.xml" type="file"/>
    </plugin>
  6. Save, close and check in plugin.xml.
  7. Check out catalog.xml (in com.company.doctypes) and open it.
  8. Delete everything between the opening and closing catalog tags.
  9. Add lines for the public and system identifiers of each shell you are integrating.
    Your catalog will vary depending on the shells you are integrating and the identifiers of those DTDs. The following is a DITA 1.3 example of the shells listed above and their likely identifiers.
    Important: If your deployment uses DITA 1.2, replace each instance of DITA 1.3 text with DITA 1.2.
    <?xml version="1.0" encoding="UTF-8"?>
    <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="public">
        
        <!-- TOPICS -->
        <public publicId="-//COMPANY//DTD DITA Company Concept//EN" 
            uri="dtd/company-concept.dtd"/>
        <public publicId="-//COMPANY//DTD DITA 1.3 Company Concept//EN" 
            uri="dtd/company-concept.dtd"/>
            
        <public publicId="-//COMPANY//DTD DITA Company Reference//EN" 
            uri="dtd/company-reference.dtd"/>
        <public publicId="-//COMPANY//DTD DITA 1.3 COMPANY Reference//EN" 
            uri="dtd/company-reference.dtd"/>
        
        <public publicId="-//COMPANY//DTD DITA Company Task//EN" 
            uri="dtd/company-task.dtd"/>    
        <public publicId="-//COMPANY//DTD DITA 1.3 Company Task//EN" 
            uri="dtd/company-task.dtd"/>
        
        <public publicId="-//COMPANY//DTD DITA Company Topic//EN" 
            uri="dtd/company-topic.dtd"/>
        <public publicId="-//COMPANY//DTD DITA 1.3 Company Topic//EN" 
            uri="dtd/company-topic.dtd"/>
        
        <!-- MAPS -->
        <public publicId="-//COMPANY//DTD DITA Company BookMap//EN" 
            uri="dtd/company-bookmap.dtd"/>
        <public publicId="-//COMPANY//DTD DITA 1.3 Company BookMap//EN" 
            uri="dtd/company-bookmap.dtd"/>
    
        <public publicId="-//COMPANY//DTD Company DITA Map//EN" 
            uri="dtd/company-map.dtd"/>
        <public publicId="-//COMPANY//DTD DITA 1.3 Company Map//EN" 
            uri="dtd/company-map.dtd"/>  
    
        <!-- DOMAINS -->
        <public publicId="-//COMPANY//ELEMENTS DITA Utilities Domain//EN" 
            uri="dtd/company-utilitiesdomain.mod"/>
        <public publicId="-//COMPANY/ENTITIES DITA Utilities Domain//EN" 
            uri="dtd/company-utilitiesdomain.ent"/>		
    </catalog>
    Note: It is very important that the public and system IDs are absolutely correct in this catalog, as this is the file that the CCMS and Oxygen use to locate your DTDs and validate your content. If any one of them is wrong, it could prevent you from creating and editing content that refers to any of these DTDs.
  10. Save, close and check in catalog.xml.
  11. To add the new plugin's catalog to the master catalog, complete the task in Reference the custom catalog in the CMS master catalog.
  12. Follow the steps in Configure system id's for imported content for DITA 1.3 to add the doctypes defined by your shells to the list of those recognized by the CMS when importing content.
  13. Add the new topic or map types to equivalence.xml.
  14. Take the following actions:
    • Create new templates that correspond to the new topic and map shells.
    • Edit your existing templates to use the doctypes of the new topic and map shells.
Your custom plugin is ready for use by your custom DTD shells.