XHTML Modular Schema Introduction Modular XHTML is complicated. The standard has not been finalized yet, so there are two "input" Working Drafts, one describing the strategy to create a new XHTML module, extension, or subset, and one proposing a refactoring of the entire XHTML v1.1 schema into modular XHTML schemas, consisting of 71 "base" schemas, 1 "driver" schema, 1 "model" schema, and 1 "module" schema. This provides a good starting point for anyone trying to do their own modules for XHTML. For new module schemas, the first point is that the base namespace (for the document element of the resulting XHTML instance document) will remain unchanged: http://www.w3.org/1999/xhtml. Furthermore, in all the schemas there should continue to be only one global element which is a valid document element: "html". When creating a new module you will likely refer to (but not change) some or all of the 71 "base" schemas, but create new "driver", "model", and "module" schemas, or at least modify those defined by XHTML-MOD v1.1. The "driver" schema does nothing more than "import" and "include" the "model" and "modules" schemas and acts as the top level schema for the definition set. This is defined in the standard XHTML namespace, and included null-namespace schemas undergo the "chameleon schema" effect and are subsumed into the XHTML namespace. Due to the "open content model" of XHTML documents, with almost un-constrained nesting of elements within each other, the convention adopted when modularizing XHTML was to have fully un-rolled definitions. This means anonymous type definitions are never used, and even within type definitions the specific content model is a referenced global definition. The convension for managing this is as follows: element name -> referenced element type (suffix .type) element type -> referenced element content model (suffix .content) element content model -> base + extension content model (suffix .mix) base content model -> xs:group definition (suffix .class or .content) extension content model -> empty xs:group (suffix .extra) The "model" schema is in the null namespace and defines the document elements (global xs:element definitions), global groups, and global attribute groups, drawing on the definitions gathered in the "modules" schema. The "modules" schema gathers the definition schemas together and consists entirely of "include" or "redefine" global declarations.