Используя простой предыдущий пример, можно определить новое ОТД, которое использует и довольно легко расширяет модули XHTML.
Во-первых, определим в модуле новые элементы и их модель содержимого:
<!-- Файл simpleml-model-1.mod -->
<!-- Объявляем Parameter Entity (PE)/Объект Параметра, который определяет любое внешнее пространство имён, используемое этим модулем -->
<!-- Устанавливаем PE, который используется в каждом ATTLIST данного модуля. NS.prefixed.attrib инициализирован в модуле xhtml-qname, а SimpleML.ns.noprefix.attrib инициализирован в файле ОТД драйвера SimpleML.-->
<!ENTITY % SimpleML.xmlns.attrib "%NS.decl.attrib;" >
<!ENTITY % SimpleML.Common.attrib "%SimpleML.xmlns.attrib; id ID #IMPLIED" >
<!ENTITY % SimpleML.element.qname "%SimpleML.pfx;element" > <!ENTITY % SimpleML.otherelement.qname "%SimpleML.pfx;otherelement" >
<!ELEMENT %SimpleML.element.qname; ( #PCDATA | %SimpleML.otherelement.qname; )* > <!ATTLIST %SimpleML.element.qname; myattribute CDATA #IMPLIED %SimpleML.Common.attrib; > <!ELEMENT %SimpleML.otherelement.qname; EMPTY > <!ATTLIST %SimpleML.otherelement.qname; %SimpleML.Common.attrib; >
<!ENTITY % SimpleML.img.myattr.qname "%SimpleML.pfx;myattr" > <!ATTLIST %img.qname; %SimpleML.img.myattr.qname; CDATA #IMPLIED >
<!-- Добавляем наши элементы к модели содержимого XHTML --> <!ENTITY % Misc.class "| %SimpleML.element.qname;" >
<!-- Теперь вводим Basic content model XHTML --> <!ENTITY % xhtml-basic-model.mod PUBLIC "-//W3C//ENTITIES XHTML Basic 1.0 Document Model 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10-model-1.mod" > %xhtml-basic-model.mod;
Затем определяем драйвер ОТД для нового языка:
<!-- Файл simpleml-1_0.dtd -->
<!-- Вводим типы данных XHTML --> <!ENTITY % xhtml-datatypes.mod PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod" > %xhtml-datatypes.mod;