Создание ОТД путём расширения XHTML
Теперь создалась ситуация, когда завершённый дополнительный комплексный модуль добавлен к XHTML (или к поднабору XHTML). В сущности, это тот же самый тривиальный вышеприведённый пример, единственное отличие заключается в том, что добавляемый модуль встроен в ОТД по ссылке, а не включает новые определения непосредственно в ОТД.
Одним из таких сложных модулей является ОТД для . Чтобы объединить MathML и XHTML в единое ОТД, автору понадобится лишь решить, где содержимое MathML должно легализоваться в документе, и добавить корневой элемент MathML в модель содержимого в этой точке.
Во-первых, определим модуль модели содержимого, устанавливающий ОТД MathML и подключающий его к модели содержимого:
<!-- Файл mathml-model.mod --> <!ENTITY % XHTML1-math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd" > %XHTML1-math;
<!ENTITY % Inlspecial.extra "%a.qname; | %img.qname; | %object.qname; | %map.qname; | %Mathml.Math.qname;" >
Затем определим драйвер ОТД, идентифицирующий наш новый модуль модели содержимого как модель содержимого для ОТД и передающий процесс драйверу XHTML 1.1 (например):
<!-- Файл xhtml-mathml.dtd --> <!ENTITY % xhtml-model.mod SYSTEM "mathml-model.mod" > <!ENTITY % xhtml11.dtd PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" > %xhtml11.dtd;