Attribute Specialization: XSD Version
As with DTD-based attribute domains, an XSD attribute domain module consists of a single XSD document whose name is "attributeNameAttDomain.xsd," e.g., phase-of-moonAttDomain.xsd.
The XSD document contains a single
<xs:attributeGroup>
declaration:<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attributeGroup name="phase-of-moon-d-attribute">
<xs:attribute name="phase-of-moon" type="xs:string"/>
</xs:attributeGroup>
</xs:schema>
You integrate the attribute into shell XSDs by including the attribute module document
and adding an entry for the attribute domain to the
@domains attribute declaration. For example:<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/">
<xs:include schemaLocation="xsd/phase-of-moonAttDomain.xsd" />
<!-- ================ GROUP DEFINITIONS ===================== -->
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:metaDeclGrp.xsd:1.2"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:tblDeclGrp.xsd:1.2"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:topicGrp.xsd:1.2"/>
<!-- ================= MODULE INLCUDE DEFINITION ================== -->
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:commonElementMod.xsd:1.2"/>
<!-- ======== Table elements ======== -->
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:tblDeclMod.xsd:1.2"/>
<!-- ======= MetaData elements, plus keyword and indexterm ======= -->
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:metaDeclMod.xsd:1.2"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:topicMod.xsd:1.2"/>
<xs:redefine schemaLocation="urn:oasis:names:tc:dita:xsd:commonElementGrp.xsd:1.2">
<xs:attributeGroup name="props-attribute-extensions">
<xs:attributeGroup ref="props-attribute-extensions"/>
<xs:attributeGroup ref="phase-of-moon-d-attribute"/>
</xs:attributeGroup>
</xs:redefine>
<xs:group name="info-types">
<xs:sequence/>
</xs:group>
<xs:attributeGroup name="domains-att">
<xs:attribute name="domains" type="xs:string" default="a(props phase-of-moon)"/>
</xs:attributeGroup>
</xs:schema>
This example is a topic shell that integrates only the attribute domain. In practice you would normally include a number of element domains in addition to any attribute domains.