<xs:include> of the domain's XSD module file (XSD domain modules consist of a single XSD file).@domains attribute contribution in the "domains-att" attribute group declaration.catalog_dita.xml file that is in the Open Toolkit's top-level directory.softwareDomain.xsd has these declarations: <xs:group name="sw-d-ph">
<xs:choice>
<xs:element ref="msgph" />
<xs:element ref="filepath" />
<xs:element ref="userinput" />
<xs:element ref="systemoutput" />
</xs:choice>
</xs:group>
<xs:group name="sw-d-keyword">
<xs:choice>
<xs:element ref="msgnum" />
<xs:element ref="varname" />
<xs:element ref="cmdname" />
</xs:choice>
</xs:group>
<xs:group name="sw-d-pre">
<xs:choice>
<xs:element ref="msgblock" />
</xs:choice>
</xs:group>
Reflecting the fact that the software domain specializes from <pre>, <ph>, and <keyword>.
@domains attribute contribution is "(topic domainShortName-d)" for a domain that specializes directly from topic and not from another domain. The @domains attribute value for the domain should also be documented in an XSD annotation at the start of the domain's XSD file, as in this example from softwareDomain.xsd: <xs:annotation>
<xs:appinfo>
<dita:domainsModule
xmlns:dita="http://dita.oasis-open.org/architecture/2005/"
>(topic sw-d)</dita:domainsModule>
</xs:appinfo>
<xs:documentation>
</xs:documentation>
</xs:annotation>
<xs:include> element for the highlight domain. Copy it and paste a new copy into myTopic.xsd immediately after the original:... <!-- ================ TOPIC DOMAINS ===================== --> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:highlightDomain.xsd:1.2"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:highlightDomain.xsd:1.2"/> ...
@schemaLocation value with the URN for the XML domain:... <!-- ================ TOPIC DOMAINS ===================== --> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:highlightDomain.xsd:1.2"/> <xs:include schemaLocation="urn:pubid:exmple.org:doctypes:dita:modules:xmlDomain"/> ...
<xs:redefine> for commonElementGrp.xsd and then the group named "keyword". Add a reference to the "xml-d-keyword" group:...
<xs:redefine schemaLocation="urn:oasis:names:tc:dita:xsd:commonElementGrp.xsd:1.2">
<xs:group name="keyword">
<xs:choice>
<xs:group ref="keyword"/>
<xs:group ref="xml-d-keyword"/>
</xs:choice>
</xs:group>
...
@default attribute:...
<xs:attributeGroup name="domains-att">
<xs:attribute name="domains" type="xs:string"
default="(topic abbrev-d)
(topic hi-d)
(topic indexing-d)
(topic ut-d)
(topic xml-d)
"/>
</xs:attributeGroup>
</xs:schema>
If the document validates, see if you can enter any of the element types from the domain into a paragraph, such as <xmlelem> or <xmlatt>. You should be able to.
That's it, you're done. You've successfully created a new topic type shell that removes domains you don't want and adds a new domain you do want.
It should be clear from following this tutorial that creating document type shells is an entirely mechanical process and that once you've done it once or twice it becomes very easy and quick.
This tutorial did not show how to package your new shell as a Toolkit plugin. For that, see Packaging Document Type Shells and Vocabulary Modules as Toolkit Plugins.
This tutorial shows how to create a topic type shell. Creating map type shells is exactly the same.