Этот документ является не официальным переводом исходной английской версии XHTML™ 1.1 - Module-based XHTML - Second Edition. Обратите внимание на то, что оригинальная версия документа существует только на английском языке. Данный перевод может содержать неточности и ошибки. Перевод выполнил © Зайцев Дмитрий, 2011. При поддержке сайта latex pillow. Комментарии к переводу оставляйте здесь! | | На главную

D. Определение XML Schema для XHTML 1.1

Содержание

Это приложение является нормативным.

D.1. XHTML 1.1 Schema Драйвер

Этот раздел содержит драйвер для реализации типа документа XHTML 1.1 в качестве XML Schema. Он основан на реализациях модуля XHTML, как это определено в [XHTMLMOD] и в [RUBY].

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.w3.org/1999/xhtml"
    xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
    xmlns="http://www.w3.org/1999/xhtml"
    elementFormDefault="qualified" >
    <xs:annotation>
        <xs:documentation>
            Это драйвер XML Schema для XHTML 1.1.
            Пожалуйста, используйте данное пространство имен для элементов XHTML:

               "http://www.w3.org/1999/xhtml"

            $Id: xhtml11_schema.html,v 1.1 2010/11/24 20:56:19 bertails Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
            Это XHTML, переформулирование HTML как модульного приложения XML
            Расширяемый язык разметки гипертекста (XHTML)
            Copyright &#169;1998-2007 World Wide Web Consortium
            (Массачусетский технологический институт, Европейский исследовательский
             консорциум информатики и математики, университет Keio).
            Все права защищены.

            Настоящим разрешается использовать, копировать, изменять и распространять
            модули XHTML Schema и сопутствующие им xs:documentation в любых целях и
            бесплатно на неограниченный срок при условии, что вышеупомянутое уведомление
            об авторских правах и данный абзац присутствуют во всех копиях.
            Правообладатели не заявляют о пригодности этих модулей XML Schema для каких-либо целей.

            Они предоставляются "как есть" без явных или косвенных гарантий.
        </xs:documentation>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
            Это файл драйвера Schema для XHTML1.1
            Тип документа

            Эта схема
              + Импорт внешних схем (xml.xsd)
              + переопределения (и включения) модулей схем для типа документа XHTML1.1.
              + включает в себя схему для Именованной модели содержимого для
                типа документа XHTML1.1

              Тип документа XHTML1.1 включает в себя следующие модули
                 Основные модули XHTML (Обязательно для соответствия семейства XHTML)
                  +  текстовый модуль
                  +  гипертекстовый модуль
                  +  модуль списков
                  +  структурный модуль
                 Другие модули XHTML
                  +  Модуль редактирования
                  +  Модуль Bdo
                  +  Модуль представления
                  +  Модуль Link
                  +  Модуль Meta
                  +  Модуль Base
                  +  Модуль Сценариев
                  +  Модуль Style
                  +  Модуль изображения
                  +  Модуль Applet
                  +  Модуль Object
                  +  Модуль Param (модулям Applet/Object необходим модуль Param)
                  +  Модуль таблиц
                  +  Модуль форм
                  +  Модуль клиентской карты-изображений
                  +  Модуль серверной карты-изображений
                  +  Модуль Ruby
        </xs:documentation>
    </xs:annotation>
    <xs:import
        namespace="http://www.w3.org/XML/1998/namespace"
        schemaLocation="http://www.w3.org/2001/xml.xsd">
        <xs:annotation>
            <xs:documentation>
                Данный импорт передает атрибуты в пространство имен XML
                Атрибуты XML используются различными модулями.
            </xs:documentation>
        </xs:annotation>
    </xs:import>
    <xs:include
        schemaLocation="xhtml11-model-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль модели документа для типа документа XHTML1.1.
                Этот файл схемы определяет все именованные модели, используемые XHTML
                Платформа модуляризации для типа документа XHTML1.1
            </xs:documentation>
        </xs:annotation>
    </xs:include>
    <xs:include
        schemaLocation="xhtml11-modules-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Схема, которая включает все модули (и переопределения)
                для типа документа XHTML1.1.
           </xs:documentation>
        </xs:annotation>
    </xs:include>
</xs:schema>

D.2. Модули Schema для XHTML 1.1

Реализации семейства XHTML используя XML Schema, должны обеспечить свой собственный модуль схемы, который импортирует требуемые модули из Модуляризации XHTML.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified" 
           xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/" >
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
        schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-datatypes-1.xsd" />

    <xs:annotation>
        <xs:documentation>
            Эта схема включает все модули для типа документа XHTML1.1.
            $Id: xhtml11_schema.html,v 1.1 2010/11/24 20:56:19 bertails Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
            Эта схема включает в себя все модули (и переопределения)
            для типа документа XHTML1.1.
            Тип документа XHTML1.1 включает в себя следующие Модули

              Основные модули XHTML (Обязательно для соответствия семейства XHTML)
                   +  текстовый модуль
                   +  гипертекстовый модуль
                   +  модуль списков
                   +  структурный модуль

              Другие модули XHTML
                   +  Модуль редактирования
                   +  Модуль Bdo
                   +  Модуль представления
                   +  Модуль Link
                   +  Модуль Meta
                   +  Модуль Base
                   +  Модуль Сценариев 
                   +  Модуль Style
                   +  Модуль изображения
                   +  Модуль Applet
                   +  Модуль Object
                   +  Модуль Param (модулям Applet/Object необходим модуль Param)
                   +  Модуль таблиц
                   +  Модуль Target
                   +  Модуль форм
                   +  Модуль клиентской карты-изображений
                   +  Модуль серверной карты-изображений

        </xs:documentation>
    </xs:annotation>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-framework-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Компонентные Модули Платформы Schema:
                    +  обозначения
                    +  типы данных
                    +  общие атрибуты
                    +  символьные объекты
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts"/>
        </xs:annotation>
    </xs:include>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-text-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Текстовый модуль

                Текстовый модуль включает в себя объявления для всех основных
                элементов, содержащих текст, и их атрибутов.

                    +  block phrasal
                    +  block structural
                    +  inline phrasal
                    +  inline structural

                Элементы, определенные здесь:
                  * address, blockquote, pre, h1, h2, h3, h4, h5, h6
                  * div, p
                  * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
                  * br, span
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_textmodule"/>
        </xs:annotation>
    </xs:include>
    <xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-hypertext-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Гипертекстовый модуль

                Элементы, определенные здесь:
                 * a
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_hypertextmodule"/>
        </xs:annotation>
        <xs:attributeGroup name="xhtml.a.attlist">
            <xs:attributeGroup ref="xhtml.a.attlist"/>
            <xs:attributeGroup ref="xhtml.a.csim.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределение модулем клиентской карты-изображений
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.a.events.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределение модулем атрибута событий XHTML
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.a.target.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Модуль Target - дополнения атрибута
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
    </xs:redefine>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-list-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль списков

                Элементы, определенные здесь:
                  * dt, dd, dl, ol, ul, li
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_listmodule"/>
        </xs:annotation>
    </xs:include>
    <xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-struct-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Структурный модуль

                Элементы, определенные здесь:
                  * title, head, body, html
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_structuremodule"/>
        </xs:annotation>
        <xs:attributeGroup name="xhtml.version.attrib">
            <xs:annotation>
                <xs:documentation>
                    Переопределения разметкой XHTML 1.1 (для значения версии attr)
                </xs:documentation>
            </xs:annotation>
            <xs:attribute name="version" type="xh11d:CDATA" fixed="-//W3C//DTD XHTML 1.1//EN"/>
        </xs:attributeGroup>
        <xs:attributeGroup name="xhtml.body.attlist">
            <xs:attributeGroup ref="xhtml.body.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходный Attlist для Body 
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.body.events.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределение модулем атрибута событий XHTML
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
    </xs:redefine>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-edit-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль редактирования

                Элементы, определенные здесь:
                  * ins, del
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_editmodule"/>
        </xs:annotation>
    </xs:include>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-bdo-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль двунаправленного элемента

                Элементы, определенные здесь:
                  * bdo
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_bdomodule"/>
        </xs:annotation>
    </xs:include>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-pres-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль представления

                Элементы, определенные здесь:
                  * hr, b, big, i, small,sub, sup, tt
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_presentationmodule"/>
        </xs:annotation>
    </xs:include>
    <xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-link-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль Ссылки

                Элементы, определенные здесь:
                   * link
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_linkmodule"/>
        </xs:annotation>
        <xs:attributeGroup name="xhtml.link.attlist">
            <xs:annotation>
                <xs:documentation>
                    Изменения к Attlist модуля ссылки XHTML
                </xs:documentation>
            </xs:annotation>
            <xs:attributeGroup ref="xhtml.link.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты link (объявлено в Модуле Ссылки)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.link.target.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Модуль Target в XHTML - дополнения атрибута
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
    </xs:redefine>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-meta-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль Meta

                Элементы, определенные здесь:
                  * meta
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_metamodule"/>
        </xs:annotation>
    </xs:include>
    <xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-base-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль Base

                Элементы, определенные здесь:
                  * base
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_basemodule"/>
        </xs:annotation>
        <xs:attributeGroup name="xhtml.base.attlist">
            <xs:annotation>
                <xs:documentation>
                    Изменения к Attlist модуля base в XHTML
                </xs:documentation>
            </xs:annotation>
            <xs:attributeGroup ref="xhtml.base.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты Base (определено в модуле Base)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.base.target.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Модуль Target XHTML - дополнения атрибута
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
    </xs:redefine>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-script-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль сценариев

                Элементы, определенные здесь:
                  * script, noscript
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_scriptmodule"/>
        </xs:annotation>
    </xs:include>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-style-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль Style

                Элементы, определенные здесь:
                  * style
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_stylemodule"/>
        </xs:annotation>
    </xs:include>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-inlstyle-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль атрибута Style

                Элемент, определенный здесь:
                  * style
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_styleattributemodule"/>
        </xs:annotation>
    </xs:include>
    <xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-image-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль изображения

                Элементы, определенные здесь:
                  * img
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_imagemodule"/>
        </xs:annotation>
        <xs:attributeGroup name="xhtml.img.attlist">
            <xs:attributeGroup ref="xhtml.img.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты image (в модуле изображения)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.img.csim.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Определение модулем клиентской карты-изображений
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.img.ssimap.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Определение модулем серверной карты-изображений
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
    </xs:redefine>
    <xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-csismap-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль клиентской карты-изображений (модуль CSI)

                Элементы, определенные здесь:
                  * area, map
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_imapmodule"/>
        </xs:annotation>
        <xs:attributeGroup name="xhtml.area.attlist">
            <xs:attributeGroup ref="xhtml.area.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты Area (в модуле CSI)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.area.events.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределение Модулем Атрибута Событий
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.area.target.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Модуль Target - Зона дополнения атрибута
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
    </xs:redefine>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-ssismap-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль серверной карты-изображений

                Атрибуты, определенные здесь:
                  * ismap on img
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_servermapmodule"/>
        </xs:annotation>
    </xs:include>
    <xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-object-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль Object

                Элементы, определенные здесь:
                  * object
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_objectmodule"/>
        </xs:annotation>
        <xs:attributeGroup name="xhtml.object.attlist">
            <xs:attributeGroup ref="xhtml.object.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходный Attlist для Object
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.object.csim.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределение модулем клиентской карты-изображений
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
    </xs:redefine>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-param-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль Param

                Элементы, определенные здесь:
                  * param
            </xs:documentation>
        </xs:annotation>
    </xs:include>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-table-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль таблиц

                Элементы, определенные здесь:
                  * table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_tablemodule"/>
        </xs:annotation>
    </xs:include>
    <xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-form-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль форм

                Элементы, определенные здесь:
                  * form, label, input, select, optgroup, option,
                  * textarea, fieldset, legend, button
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_extformsmodule"/>
        </xs:annotation>
        <xs:attributeGroup name="xhtml.form.attlist">
            <xs:annotation>
                <xs:documentation>
                    Изменения к Attlist формы для XHTML
                </xs:documentation>
            </xs:annotation>
            <xs:attributeGroup ref="xhtml.form.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты Form (объявлено в модуле форм)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.form.events.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Модуль событий XHTML - Дополнения атрибута
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.form.target.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Модуль Target XHTML - Дополнения атрибута
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
        <xs:attributeGroup name="xhtml.input.attlist">
            <xs:annotation>
                <xs:documentation>
                    Изменения к элементу формы Input в XHTML
                </xs:documentation>
            </xs:annotation>
            <xs:attributeGroup ref="xhtml.input.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты Input (в модуле форм)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.input.csim.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределено модулем клиентской карты-изображений
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.input.ssimap.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределено модулем серверной карты-изображений
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.input.events.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределено модулем атрибута события
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
        <xs:attributeGroup name="xhtml.label.attlist">
            <xs:attributeGroup ref="xhtml.label.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты Label (в модуле форм)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.label.events.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределено модулем атрибута события
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
        <xs:attributeGroup name="xhtml.select.attlist">
            <xs:attributeGroup ref="xhtml.select.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты Select (в модуле форм)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.select.events.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределено модулем атрибута события
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
        <xs:attributeGroup name="xhtml.textarea.attlist">
            <xs:attributeGroup ref="xhtml.textarea.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты TextArea (в модуле форм)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.textarea.events.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределено модулем атрибута события
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
        <xs:attributeGroup name="xhtml.button.attlist">
            <xs:attributeGroup ref="xhtml.button.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Исходные атрибуты Button (в модуле форм)
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
            <xs:attributeGroup ref="xhtml.button.events.attlist">
                <xs:annotation>
                    <xs:documentation>
                        Переопределено модулем атрибута события
                    </xs:documentation>
                </xs:annotation>
            </xs:attributeGroup>
        </xs:attributeGroup>
    </xs:redefine>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-ruby-1.xsd">
      <xs:annotation>
      <xs:documentation>
          Модуль Ruby

          Элементы, определенные здесь:
            * ruby, rbc, rtc, rb, rt, rp

          Обратите внимание, что должен использоваться либо Ruby или Basic Ruby, но вместе использоваться они не могут
      </xs:documentation>
      <xs:documentation source="http://www.w3.org/TR/2001/REC-ruby-20010531/#complex"/>
      </xs:annotation>
    </xs:include>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-events-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модули событий XHTML

                Атрибуты, определенные здесь:
                  Типы событий XHTML
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_intrinsiceventsmodule"/>
        </xs:annotation>
    </xs:include>
    <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-target-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Модуль атрибута Target XHTML

                Атрибуты, определенные здесь:
                  target
            </xs:documentation>
            <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_targetmodule"/>
        </xs:annotation>
    </xs:include>
</xs:schema>

D.3. Настройки XHTML 1.1

Тип документа семейства XHTML (такой как XHTML 1.1) должен определять модель содержимого которую он использует. Это сделано через отдельный модуль модели содержимого, который обрабатывается Модульной платформой XHTML. Модуль модели содержимого и драйвер XHTML 1.1 (см. выше) работают вместе, чтобы настроить реализации модуля к определенным требованиям типа документа. Модуль модели содержимого для XHTML 1.1 определен ниже:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
    elementFormDefault="qualified" >
    <xs:import
        namespace="http://www.w3.org/1999/xhtml/datatypes/"
        schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-datatypes-1.xsd"/>
    <xs:annotation>
        <xs:documentation> 
            Это модуль XML Schema общей модели содержимого для XHTML 1.1 
            
            $Id: xhtml11_schema.html,v 1.1 2010/11/24 20:56:19 bertails Exp $ 
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation> 
            Модель документа XHTML
            Этот модуль описывает группировки элементов/атрибутов,
            которые составляют базовые модели содержимого для элементов XHTML. 
            XHTML имеет следующие базовые модели содержимого:
               xhtml.Inline.mix; элементы на символьном уровне
               xhtml.Block.mix; элементы подобные блочным, например, параграфы и списки
               xhtml.Flow.mix; любые блочные или внутристрочные элементы
               xhtml.HeadOpts.mix; Элементы Head
               xhtml.InlinePre.mix; Специальный класс для предварительной модели содержимого
               xhtml.InlineNoAnchor.mix; Модель содержимого для Якоря
            
            Любые группы, объявленные в этом модуле, могут использоваться, чтобы создать
            модели содержимого элемента, но вышеупомянутые группы считаются 'global' 
            (поскольку этот термин применяется здесь). XHTML имеет следующие
            Группы атрибутов
               xhtml.Core.extra.attrib 
               xhtml.I18n.extra.attrib
               xhtml.Common.extra 
            
            Данные Группы атрибутов считаются Глобальными
        </xs:documentation>
    </xs:annotation>
    <xs:attributeGroup
        name="xhtml.I18n.extra.attrib">
        <xs:annotation>
            <xs:documentation> Расширенный атрибут I18n </xs:documentation>
        </xs:annotation>
        <xs:attributeGroup
            ref="xhtml.dir.attrib">
            <xs:annotation>
                <xs:documentation> 
                    Атрибут "dir" из модуля двунаправленного текста (bdo)
                </xs:documentation>
            </xs:annotation>
        </xs:attributeGroup>
        <xs:attribute name="lang" type="xh11d:LanguageCode" />
    </xs:attributeGroup>
    <xs:attributeGroup
        name="xhtml.Common.extra">
        <xs:annotation>
            <xs:documentation> Расширенные Общие Атрибуты </xs:documentation>
        </xs:annotation>
        <xs:attributeGroup
            ref="xhtml.style.attrib">
            <xs:annotation>
                <xs:documentation> 
                    Атрибут "style" из встроенного модуля Style
                </xs:documentation>
            </xs:annotation>
        </xs:attributeGroup>
        <xs:attributeGroup ref="xhtml.Events.attrib">
            <xs:annotation>
                <xs:documentation> 
                    Атрибуты от Модуля Событий
                </xs:documentation>
            </xs:annotation>
        </xs:attributeGroup>
    </xs:attributeGroup>
    <xs:attributeGroup
        name="xhtml.Core.extra.attrib">
        <xs:annotation>
            <xs:documentation> Расширенные Основные Атрибуты </xs:documentation>
        </xs:annotation>
    </xs:attributeGroup>
    <xs:attributeGroup
        name="xhtml.Global.core.extra.attrib">
        <xs:annotation>
            <xs:documentation> Расширенные Глобальные Основные Атрибуты </xs:documentation>
        </xs:annotation>
    </xs:attributeGroup>
    <xs:attributeGroup
        name="xhtml.Global.I18n.extra.attrib">
        <xs:annotation>
            <xs:documentation> Расширенные Глобальные атрибуты I18n </xs:documentation>
        </xs:annotation>
    </xs:attributeGroup>
    <xs:attributeGroup
        name="xhtml.Global.Common.extra">
        <xs:annotation>
            <xs:documentation> Расширенные Глобальные Общие Атрибуты </xs:documentation>
        </xs:annotation>
    </xs:attributeGroup>
    <xs:group
        name="xhtml.Head.extra">
        <xs:sequence/>
    </xs:group>
    <xs:group
        name="xhtml.HeadOpts.mix">
        <xs:choice>
            <xs:element
                name="script"
                type="xhtml.script.type"/>
            <xs:element
                name="style"
                type="xhtml.style.type"/>
            <xs:element
                name="meta"
                type="xhtml.meta.type"/>
            <xs:element
                name="link"
                type="xhtml.link.type"/>
            <xs:element
                name="object"
                type="xhtml.object.type"/>
            <xs:group
                ref="xhtml.Head.extra"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.head.content">
        <xs:sequence>
            <xs:group
                ref="xhtml.HeadOpts.mix"
                minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:choice>
                <xs:sequence>
                    <xs:element
                        name="title"
                        minOccurs="1"
                        maxOccurs="1"
                        type="xhtml.title.type"/>
                    <xs:group
                        ref="xhtml.HeadOpts.mix"
                        minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:sequence
                        minOccurs="0">
                        <xs:element
                            name="base"
                            type="xhtml.base.type"/>
                        <xs:group
                            ref="xhtml.HeadOpts.mix"
                            minOccurs="0"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:sequence>
                <xs:sequence>
                    <xs:element
                        name="base"
                        type="xhtml.base.type"
                        minOccurs="1"
                        maxOccurs="1"/>
                    <xs:group
                        ref="xhtml.HeadOpts.mix"
                        minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element
                        name="title"
                        minOccurs="1"
                        maxOccurs="1"
                        type="xhtml.title.type"/>
                    <xs:group
                        ref="xhtml.HeadOpts.mix"
                        minOccurs="0"
                        maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:choice>
        </xs:sequence>
    </xs:group>
    <!--
        ins и del используются для обозначения редакционных изменений
    -->
    <xs:group
        name="xhtml.Edit.class">
        <xs:choice>
            <xs:element
                name="ins"
                type="xhtml.edit.type"/>
            <xs:element
                name="del"
                type="xhtml.edit.type"/>
        </xs:choice>
    </xs:group>
    <!--
        script и noscript используются для хранения скриптов
        и альтернативного содержимого
    -->
    <xs:group
        name="xhtml.Script.class">
        <xs:choice>
            <xs:element
                name="script"
                type="xhtml.script.type"/>
            <xs:element
                name="noscript"
                type="xhtml.noscript.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.Misc.extra">
        <xs:sequence/>
    </xs:group>
    <!--
        Эти элементы не являются ни блочными, ни внутристрочными, и
        по сути, могут использоваться где угодно в теле документа.
    -->
    <xs:group
        name="xhtml.Misc.class">
        <xs:choice>
            <xs:group
                ref="xhtml.Edit.class"/>
            <xs:group
                ref="xhtml.Script.class"/>
            <xs:group
                ref="xhtml.Misc.extra"/>
        </xs:choice>
    </xs:group>
    <!-- Внутристрочные элементы -->
    <xs:group
        name="xhtml.InlStruct.class">
        <xs:choice>
            <xs:element
                name="br"
                type="xhtml.br.type"/>
            <xs:element
                name="span"
                type="xhtml.span.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.InlPhras.class">
        <xs:choice>
            <xs:element
                name="em"
                type="xhtml.em.type"/>
            <xs:element
                name="strong"
                type="xhtml.strong.type"/>
            <xs:element
                name="dfn"
                type="xhtml.dfn.type"/>
            <xs:element
                name="code"
                type="xhtml.code.type"/>
            <xs:element
                name="samp"
                type="xhtml.samp.type"/>
            <xs:element
                name="kbd"
                type="xhtml.kbd.type"/>
            <xs:element
                name="var"
                type="xhtml.var.type"/>
            <xs:element
                name="cite"
                type="xhtml.cite.type"/>
            <xs:element
                name="abbr"
                type="xhtml.abbr.type"/>
            <xs:element
                name="acronym"
                type="xhtml.acronym.type"/>
            <xs:element
                name="q"
                type="xhtml.q.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.InlPres.class">
        <xs:choice>
            <xs:element
                name="tt"
                type="xhtml.InlPres.type"/>
            <xs:element
                name="i"
                type="xhtml.InlPres.type"/>
            <xs:element
                name="b"
                type="xhtml.InlPres.type"/>
            <xs:element
                name="big"
                type="xhtml.InlPres.type"/>
            <xs:element
                name="small"
                type="xhtml.InlPres.type"/>
            <xs:element
                name="sub"
                type="xhtml.InlPres.type"/>
            <xs:element
                name="sup"
                type="xhtml.InlPres.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.I18n.class">
        <xs:sequence>
            <xs:element
                name="bdo"
                type="xhtml.bdo.type"/>
        </xs:sequence>
    </xs:group>
    <xs:group
        name="xhtml.Anchor.class">
        <xs:sequence>
            <xs:element
                name="a"
                type="xhtml.a.type"/>
        </xs:sequence>
    </xs:group>
    <xs:group
        name="xhtml.InlSpecial.class">
        <xs:choice>
            <xs:element
                name="img"
                type="xhtml.img.type"/>
            <xs:element
                name="map"
                type="xhtml.map.type"/>
            <xs:element
                name="object"
                type="xhtml.object.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.InlForm.class">
        <xs:choice>
            <xs:element
                name="input"
                type="xhtml.input.type"/>
            <xs:element
                name="select"
                type="xhtml.select.type"/>
            <xs:element
                name="textarea"
                type="xhtml.textarea.type"/>
            <xs:element
                name="label"
                type="xhtml.label.type"/>
            <xs:element
                name="button"
                type="xhtml.button.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.Inline.extra">
        <xs:sequence/>
    </xs:group>
    <xs:group
        name="xhtml.Ruby.class">
        <xs:sequence>
            <xs:element
                name="ruby"
                type="xhtml.ruby.type"/>
        </xs:sequence>
    </xs:group>
    <!--
        Inline.class включает в себя все внутристрочные элементы,
        используемые в качестве компонента в перемешиваниях
    -->
    <xs:group
        name="xhtml.Inline.class">
        <xs:choice>
            <xs:group
                ref="xhtml.InlStruct.class"/>
            <xs:group
                ref="xhtml.InlPhras.class"/>
            <xs:group
                ref="xhtml.InlPres.class"/>
            <xs:group
                ref="xhtml.I18n.class"/>
            <xs:group
                ref="xhtml.Anchor.class"/>
            <xs:group
                ref="xhtml.InlSpecial.class"/>
            <xs:group
                ref="xhtml.InlForm.class"/>
            <xs:group
                ref="xhtml.Ruby.class"/>
            <xs:group
                ref="xhtml.Inline.extra"/>
        </xs:choice>
    </xs:group>
    <!--
        InlNoRuby.class включает в себя все внутристрочные элементы,
        за исключением ruby
    -->
    <xs:group
        name="xhtml.InlNoRuby.class">
        <xs:choice>
            <xs:group
                ref="xhtml.InlStruct.class"/>
            <xs:group
                ref="xhtml.InlPhras.class"/>
            <xs:group
                ref="xhtml.InlPres.class"/>
            <xs:group
                ref="xhtml.I18n.class"/>
            <xs:group
                ref="xhtml.Anchor.class"/>
            <xs:group
                ref="xhtml.InlSpecial.class"/>
            <xs:group
                ref="xhtml.InlForm.class"/>
            <xs:group
                ref="xhtml.Inline.extra"/>
        </xs:choice>
    </xs:group>
    <!--
        InlinePre.mix
        Используется в качестве компонента в предварительной модели
    -->
    <xs:group
        name="xhtml.InlinePre.mix">
        <xs:choice>
            <xs:group
                ref="xhtml.InlStruct.class"/>
            <xs:group
                ref="xhtml.InlPhras.class"/>
            <xs:element
                name="tt"
                type="xhtml.InlPres.type"/>
            <xs:element
                name="i"
                type="xhtml.InlPres.type"/>
            <xs:element
                name="b"
                type="xhtml.InlPres.type"/>
            <xs:group
                ref="xhtml.I18n.class"/>
            <xs:group
                ref="xhtml.Anchor.class"/>
            <xs:group
                ref="xhtml.Misc.class"/>
            <xs:element
                name="map"
                type="xhtml.map.type"/>
            <xs:group
                ref="xhtml.Inline.extra"/>
        </xs:choice>
    </xs:group>
    <!--
        InlNoAnchor.class включает в себя все без-якорьные внутристрочные
        элементы, используемые в качестве компонента в перемешиваниях
    -->
    <xs:group
        name="xhtml.InlNoAnchor.class">
        <xs:choice>
            <xs:group
                ref="xhtml.InlStruct.class"/>
            <xs:group
                ref="xhtml.InlPhras.class"/>
            <xs:group
                ref="xhtml.InlPres.class"/>
            <xs:group
                ref="xhtml.I18n.class"/>
            <xs:group
                ref="xhtml.InlSpecial.class"/>
            <xs:group
                ref="xhtml.InlForm.class"/>
            <xs:group
                ref="xhtml.Ruby.class"/>
            <xs:group
                ref="xhtml.Inline.extra"/>
        </xs:choice>
    </xs:group>
    <!--
        InlNoAnchor.mix включает в себя все без-якорьные внутристрочные элементы
    -->
    <xs:group
        name="xhtml.InlNoAnchor.mix">
        <xs:choice>
            <xs:group
                ref="xhtml.InlNoAnchor.class"/>
            <xs:group
                ref="xhtml.Misc.class"/>
        </xs:choice>
    </xs:group>
    <!--
        Inline.mix включает в себя все без-якорьные внутристрочные элементы, в том числе Misc.class
    -->
    <xs:group
        name="xhtml.Inline.mix">
        <xs:choice>
            <xs:group
                ref="xhtml.Inline.class"/>
            <xs:group
                ref="xhtml.Misc.class"/>
        </xs:choice>
    </xs:group>
    <!--
        InlNoRuby.mix включает в себя все inline.mix элементы,
        за исключением ruby
    -->
    <xs:group
        name="xhtml.InlNoRuby.mix">
        <xs:choice>
            <xs:group
                ref="xhtml.InlNoRuby.class"/>
            <xs:group
                ref="xhtml.Misc.class"/>
        </xs:choice>
    </xs:group>
    <!--
        В DTD для HTML 4, заголовок и список элементов были
        включены в блочную группу. Группы Heading.class и
        List.class, теперь должны быть включены явно
        в объявлениях элементов, где это необходимо.
    -->
    <xs:group
        name="xhtml.Heading.class">
        <xs:choice>
            <xs:element
                name="h1"
                type="xhtml.h1.type"/>
            <xs:element
                name="h2"
                type="xhtml.h2.type"/>
            <xs:element
                name="h3"
                type="xhtml.h3.type"/>
            <xs:element
                name="h4"
                type="xhtml.h4.type"/>
            <xs:element
                name="h5"
                type="xhtml.h5.type"/>
            <xs:element
                name="h6"
                type="xhtml.h6.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.List.class">
        <xs:choice>
            <xs:element
                name="ul"
                type="xhtml.ul.type"/>
            <xs:element
                name="ol"
                type="xhtml.ol.type"/>
            <xs:element
                name="dl"
                type="xhtml.dl.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.Table.class">
        <xs:choice>
            <xs:element
                name="table"
                type="xhtml.table.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.Form.class">
        <xs:choice>
            <xs:element
                name="form"
                type="xhtml.form.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.Fieldset.class">
        <xs:choice>
            <xs:element
                name="fieldset"
                type="xhtml.fieldset.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.BlkStruct.class">
        <xs:choice>
            <xs:element
                name="p"
                type="xhtml.p.type"/>
            <xs:element
                name="div"
                type="xhtml.div.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.BlkPhras.class">
        <xs:choice>
            <xs:element
                name="pre"
                type="xhtml.pre.type"/>
            <xs:element
                name="blockquote"
                type="xhtml.blockquote.type"/>
            <xs:element
                name="address"
                type="xhtml.address.type"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.BlkPres.class">
        <xs:sequence>
            <xs:element
                name="hr"
                type="xhtml.hr.type"/>
        </xs:sequence>
    </xs:group>
    <xs:group
        name="xhtml.BlkSpecial.class">
        <xs:choice>
            <xs:group
                ref="xhtml.Table.class"/>
            <xs:group
                ref="xhtml.Form.class"/>
            <xs:group
                ref="xhtml.Fieldset.class"/>
        </xs:choice>
    </xs:group>
    <xs:group
        name="xhtml.Block.extra">
        <xs:sequence/>
    </xs:group>
    <!--
        Block.class включает в себя все блочные элементы,
        используемые в качестве компонента в перемешиваниях
    -->
    <xs:group
        name="xhtml.Block.class">
        <xs:choice>
            <xs:group
                ref="xhtml.BlkStruct.class"/>
            <xs:group
                ref="xhtml.BlkPhras.class"/>
            <xs:group
                ref="xhtml.BlkPres.class"/>
            <xs:group
                ref="xhtml.BlkSpecial.class"/>
            <xs:group
                ref="xhtml.Block.extra"/>
        </xs:choice>
    </xs:group>
    <!--
        Block.mix включает в себя все блочные элементы, плюс %Misc.class;
    -->
    <xs:group
        name="xhtml.Block.mix">
        <xs:choice>
            <xs:group
                ref="xhtml.Heading.class"/>
            <xs:group
                ref="xhtml.List.class"/>
            <xs:group
                ref="xhtml.Block.class"/>
            <xs:group
                ref="xhtml.Misc.class"/>
        </xs:choice>
    </xs:group>
    <!--
        Все элементы содержимого
        Flow.mix включает в себя все текстовое содержимое, блочные и встроенные элементы
        Обратите внимание, что "любой" элемент, включенный здесь, позволяет нам
        добавить данные от любого другого пространства имен, при необходимости
        создания составного документа.
        Отметьте однако, что не возможно добавить к любому
    	главному элементу уровня без дальнейших изменений.
        Чтобы добавить метаданные RDF к заголовку 
        документа, модифицируйте структурный модуль.
    -->
    <xs:group
        name="xhtml.Flow.mix">
        <xs:choice>
            <xs:group
                ref="xhtml.Heading.class"/>
            <xs:group
                ref="xhtml.List.class"/>
            <xs:group
                ref="xhtml.Block.class"/>
            <xs:group
                ref="xhtml.Inline.class"/>
            <xs:group
                ref="xhtml.Misc.class"/>
        </xs:choice>
    </xs:group>
    <!--
        BlkNoForm.mix  включает в себя все блоковые элементы, за исключением тех,
        которые существуют в модуле форм, плюс Misc.class
    -->
    <xs:group
        name="xhtml.BlkNoForm.mix">
        <xs:choice>
            <xs:group
                ref="xhtml.Heading.class"/>
            <xs:group
                ref="xhtml.List.class"/>
            <xs:group
                ref="xhtml.BlkStruct.class"/>
            <xs:group
                ref="xhtml.BlkPhras.class"/>
            <xs:group
                ref="xhtml.BlkPres.class"/>
            <xs:group
                ref="xhtml.Table.class"/>
            <xs:group
                ref="xhtml.Block.extra"/>
            <xs:group
                ref="xhtml.Misc.class"/>
        </xs:choice>
    </xs:group>
    <xs:element
        name="html"
        type="xhtml.html.type"/>
</xs:schema>

D.4. Реализация Ruby в XML Schema

Спецификация RUBY в настоящий момент не определяет модуль XHTML Module, используя XML Schema. Определяется ниже:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-1.xsd" />
  <xs:annotation>
    <xs:documentation>
        Это модуль Ruby для XHTML
        $Id: xhtml11_schema.html,v 1.1 2010/11/24 20:56:19 bertails Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
        "Ruby" это короткие промежутки текста рядом с основным текстом, обычно 
        используемый в документах Восточной Азии, чтобы указать произношение или
        обеспечить короткую аннотацию. Полная спецификация для Ruby находится по адресу:
      
          http://www.w3.org/TR/2001/REC-ruby-20010531/
      
        Этот модуль определяет "Ruby " или "complex Ruby", как описано
        в спецификации:
      
          http://www.w3.org/TR/2001/REC-ruby-20010531/#complex
    
        Простой или Базовый Ruby определен в отдельном модуле.
      
        Этот модуль объявляет элементы и их атрибуты  используемых
        для поддержки комплексной разметки аннотации ruby(complex ruby annotation markup).
        Элементы, определенные здесь:
          * ruby, rbc, rtc, rb, rt, rp
      
        Этот модуль ожидает, что модель документа определит
        следующие модели содержимого
          + InlNoRuby.mix                 
    </xs:documentation>
    <xs:documentation
         source="http://www.w3.org/TR/2001/REC-ruby-20010531/"/>    
  </xs:annotation>

  <xs:group name="xhtml.ruby.content.simple">
      <xs:sequence>
          <xs:element name="rb" type="xhtml.rb.type"/>
          <xs:choice>
              <xs:element name="rt" type="xhtml.rt.type"/>
              <xs:sequence>
                  <xs:element name="rp" type="xhtml.rp.type"/>
                  <xs:element name="rt" type="xhtml.rt.type"/>
                  <xs:element name="rp" type="xhtml.rp.type"/>
              </xs:sequence>
          </xs:choice>
      </xs:sequence>
  </xs:group>

  <xs:group name="xhtml.ruby.content.complex">
    <xs:sequence>
      <xs:element name="rbc" type="xhtml.rbc.type"/>
      <xs:element name="rtc" type="xhtml.rtc.type" maxOccurs="2"/>
    </xs:sequence>
  </xs:group>

  <!--
      добавим к этой группе любые общие атрибуты для всех элементов Ruby
  -->
  <xs:attributeGroup name="xhtml.ruby.common.attrib"/>
  
  <xs:group name="xhtml.ruby.content">
    <xs:choice>
      <xs:group ref="xhtml.ruby.content.simple"/>
      <xs:group ref="xhtml.ruby.content.complex"/>
    </xs:choice>
  </xs:group>

  <xs:complexType name="xhtml.ruby.type">
    <xs:group ref="xhtml.ruby.content"/>
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:complexType>

  <!--
      элемент rbc (базовый компонент ruby)
  -->
  <xs:attributeGroup name="xhtml.rbc.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="xhtml.rbc.content">
    <xs:sequence>
      <xs:element name="rb" type="xhtml.rb.type" />
    </xs:sequence>
  </xs:group>  

  <xs:complexType name="xhtml.rbc.type">
    <xs:group ref="xhtml.rbc.content"/>
    <xs:attributeGroup ref="xhtml.rbc.attlist"/>
  </xs:complexType>

  <!--
      элемент rtc (текстовый компонент ruby)
  -->
  <xs:attributeGroup name="xhtml.rtc.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="xhtml.rtc.content">
    <xs:sequence>
      <xs:element name="rt" type="xhtml.rt.type" maxOccurs="unbounded"/>
    </xs:sequence>  
  </xs:group>    

  <xs:complexType name="xhtml.rtc.type">
    <xs:group ref="xhtml.rt.content"/>  
    <xs:attributeGroup ref="xhtml.rtc.attlist"/>
  </xs:complexType>

  <!--
      элемент rb (ruby base)
  -->
  <xs:attributeGroup name="xhtml.rb.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:attributeGroup>

  <xs:group name="xhtml.rb.content">
    <xs:sequence>
       <xs:group ref="xhtml.InlNoRuby.mix" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>      

  <xs:complexType name="xhtml.rb.type" mixed="true">
    <xs:group ref="xhtml.rb.content"/>
    <xs:attributeGroup ref="xhtml.rb.attlist"/>
  </xs:complexType>
    
  <!--
      элемент rt (ruby text)
  -->
  <xs:attributeGroup name="xhtml.rt.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
    <xs:attribute name="rbspan" type="xh11d:Number" default="1"/>
  </xs:attributeGroup>

  <xs:group name="xhtml.rt.content">
    <xs:sequence>
       <xs:group ref="xhtml.InlNoRuby.mix" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>      
  
  <xs:complexType name="xhtml.rt.type" mixed="true">
    <xs:group ref="xhtml.rt.content"/>  
    <xs:attributeGroup ref="xhtml.rt.attlist"/>
  </xs:complexType>

  <!-- элемент rp (ruby parenthesis)  -->
  <xs:attributeGroup name="xhtml.rp.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="xhtml.rp.content">
    <xs:sequence/>
  </xs:group>      
  

  <xs:complexType name="xhtml.rp.type" mixed="true">
    <xs:group ref="xhtml.rp.content"/>
    <xs:attributeGroup ref="xhtml.rp.attlist"/>
  </xs:complexType>

</xs:schema>