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.