<!-- -->
<!-- Каркас правил описания типов (DTD) -->
<!-- Файл: TEMPLATE.dtd - - >
<!-- Каркас правил описания типов (DTD) -->
<!-- Здесь представлен файл управления структурой. Вы можете
изменять его по своему усмотрению, но обратите внимание на комментарии относительно порядка следования описаний
Пожалуйста, используйте для регистрации следующий публичный идентификатор:
"-//W3C7/DTD XHTML MYDTD//EN"
-->
<!ENTITY % XHTML.version "-//W3C//DTD XHTML MYDTD//EN">
<!-- Введите все квалифицированные имена модулей, находящихся вне
пространства XHTML -->
<!ENTITY % MODULE-qname.mod " " >
%MODULE-qname.mod;
<!-- Введите все внешние пространства имен, на которые ссылаются правила данного DTD -->
<!ENTITY NS.prefixed.extras.attrib " " >
<!-- Определите файл моделей содержания для использования
в данном каркасе
-->
<!ENTITY %xhtml-model.mod "MYMODEL">
<!-- Зарезервировано для будущего применения с профилями документов -->
<!ENTITY % XHTML.profile " " >
<!-- Поддержка двунаправленного текста (справа налево и слева направо).
Этот компонент используется для объявления элементов и атрибутов, с помощью которых осуществляется многоязыковая поддержка документа. Установите значение параметрического компонента INCLUDE или IGNORE в соответствии с требованиями собственного языка разметки
-->
<!ENTITY % XHTML.bidi "IGNORE" >
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<!-- Этот сегмент служит для размещения объявлений элементов
разметки в описании правил DTD, перед объявлением каркаса
-->
<!ENTITY % xhtml-prefw-redecl.module "IGNORE" > <![%xhtml-prefw-redecl.module;[ %xhtml-prefw-redecl.mod;
<!-- Завершение описания модуля xhtml-prefw-redecl.module -->]]>
<!-- Если в вашем документе необходим модуль событий, его следует описывать здесь. В данном случае он исключен
-->
<!ENTITY % xhtml-events.module "IGNORE" >
<!-- Модуль Modular Framework -->
<!ENTITY % xhtml-framework.module "INCLUDE" >
<![%xhtml-framework.module;[ <!ENTITY % xhtml-framework.mod
PUBLIC "-//W3С//ELEMENTS XHTML 1.1 Modular Framework 1.0//EN" "xhtmlll-framework-1.mod"> %xhtml- framework.mod;]]>
<!-- Место для переопределения описаний, следующих за
определением каркаса --> <!-- Этот сегмент служит для размещения объявлений элементов
разметки в описании правил DTD, после объявления каркаса
- - >
<!ENTITY % xhtml-postfw-redecl.module "IGNORE" > <![%xhtml-postfw-redecl.module;[ %xhtml-postfw-redecl.mod;
<!-- Завершение описания модуля xhtml-postfw-redecl.module -->]]>
<!-- Текстовый модуль (обязательный) -->
<!ENTITY % xhtml-text.module "INCLUDE" > <![%xhtml-text.module;[ <!ENTITY % xhtml-text.mod
PUBLIC "-//W3С / /ELEMENTS XHTML 1.1 Text 1.0//EN" "xhtmlll-text-1.mod" > %xhtml-text.mod;]]>
<!-- Модуль гипертекста (обязательный) -->
<!ENTITY % xhtml-hypertext.module "INCLUDE" > <![%xhtml-hypertext.module;[ <!ENTITY % xhtml-hypertext.mod
PUBLIC "-//W3С//ELEMENTS XHTML 1.1 Hypertext 1.0//EN" "xhtmlll-hypertext-1.mod" > %xhtml-hypertext.mod;]]>
<!-- Модуль списков (обязательный) -->
<[ENTITY % xhtml-list.module "INCLUDE" >
<![%xhtml-1ist.module;[
<!ENTITY % xhtml-list.mod;
PUBLIC "-//W3С / /ELEMENTS XHTML 1.1 Lists 1.0//EN" "xhtmlll-list-l.mod" %xhtml-list.mod;]]>
<!-- Здесь можно размещать ваши собственные модули. Применяйте базовые формы описаний, представленные выше. Обратите внимание на включение в файл каталога для каждого задействованного вами модуля public FPI. В этом месте разрешается также использовать модули, определенные консорщиумом W3C
-->
<!-- Модуль структуры документа (обязательный) -->
<[ENTITY % xhtml-struct.module "INCLUDE" > <![%xhtml-struct.module;[ <!ENTITY % xhtml-struct.mod
PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Document Structure 1.0//EN" "xhtmlll-struct-1.mod" > %xhtml-struct.mod;]]>
<!-- Завершение описания каркаса DTD -->
<! -- -->
Как обычно, первым сегментом будет большой блок комментариев, представляющих имя файла и информацию об идентификаторах:
<!-- -->
<!-- Правила описаний типов данных для проекта "Рецепт" --> <!-- Файл: recipe-l_0.dtd -->
<!-- Это управляющее приложение правил DTD для проекта Recipe 1.0. Пожалуйста, используйте для регистрации следующий публичный идентификатор:
"-//WebGeek//DTD XHTML Recipe 1.0//EN"
Далее следует определение пространства имен для элементов recipe-unique:
xmlns:recipe="http://www.webgeek.com/xmlns/recipe"
- ->
Первый компонент определил публичный идентификатор:
<!ENTITY % XHTML.version "-//WebGeek//DTD XHTML Recipe 1.0//EN" >
Далее следует описать компонент и включить составные имена подмодулей, которые были приведены в главе 15.
<!ENTITY % Recipe-qname.mod
SYSTEM "recipe-qname-1.mod" > %Recipe-qname.mod;
Поскольку дополнительные пространства имен не нужны, следующие строки изменять не требуется:
<!-- Новых пространств имен нет --> <!ENTITY NS.prefixed.extras.attrib "" >
<!-- Определите файл модели содержания для использования в каркасе
- ->
<!ENTITY % xhtml-model-1.mod "recipe-model-1.mod" >
Данный элемент ссылается на модуль определения модели содержания, которую нужно создать. Для модуля рецептов она имеет самую общую форму: это представление с помощью синтаксиса правил DTD минимальной модели, указанной в описании абстрактного модуля, которое содержит расширения, необходимые для включения элемента корня - recipe. Данный элемент служит указателем типа содержания.
Поскольку recipe выступает в качестве дополнения к множеству блоковых элементов, его часть, qname, необходимо включить в описание параметрического компонента %Block. extra:
<!ENTUTY %В1оск.extra
"I %Recipe.recipe.qname;">
Изменения, которые необходимо внести в модуль общей модели содержания, коснутся также публичных и системных идентификаторов, имени файла и пространства имен. Это отражено в листинге 16.3, в первом сегменте файла с расширением .mod.
Листинг 16.3. Завершенная форма модуля модели содержания Recipe
<!-- -->
<!-- Модуль модели содержания проекта "Рецепт" -->
<!-- Файл: recipe-model-1.mod -->
PUBLIC "-//WebGeek//ELEMENTS XHTML Recipe Model 1.0// "
SYSTEM "http://www.webgeek.com/DTDs/recipe-model-1.mod"
xmlns:recipe="http://www.webgeek.com/xmlns/recipe"
-->
<!-- Описание модели содержания для Misc.extra -->
<!ENTITY % Misc.class
"I%script.qname; I %noscript.qname;" >
<!-- Внутристроковые элементы -->
<!ENTITY % Head-opt.mix
" (%style.qname; I %meta.qname;)*" >
<[ENTITY % I18n.class "">
<!ENTITY % Inlstruct.class "%br.qname; I %span.qname;" > <!ENTITY % Inphras.class
"I %em.qname; I %strong.qname; I %dfn.qname; I %code.qname;
%samp.qname; I %kbd.qname; I %var.qname;| %cite.qname;
%abbr.qname; I %acronym.qname; I %q.qname;" > <!ENTITY % Inlpres.class
" %tt.qname; I %i.qname; I %b.qname; I %big.qname;
%small.qname; I %sub.qname; I %sup.qname;" > <!ENTITY % Anchor.class "I %a.qname;" > <!ENTITY % Inlspecial.class "I %img.qname;" > <!ENTITY % Inline.extra " " >
<!-- % Inline.class; данный класс включает все внутристроковые элементы, используемые в качестве компонентов в смешанных структурах
-->
<!ENTITY % Inline.class "%Inlstruct.class; % Inlphras.class; % Inlpres.class; % Anchor.class; % Inlspecial.class;">
<!-- % Inline-noA.class; данный класс включает все
внутристроковые элементы, не являющиеся элементами привязки для ссылок. Они применяются в качестве компонентов в смешанных структурах
-->
<!ENTITY % Inline-noA.class "%Inlstruct.class; % Inlphras.class; % Inlpres.class; % Inlspecial.class;">
<!-- % Inline-noA.mix; включает все несвязанные внутристроковые элементы
-->
<!ENTITY % Inline-noA.mix "%Inline-noA.class; % Misc.class;">
<!-- % Inline.mix; включает все внутристроковые элементы, в том числе %Misc.class;"
-->
<!ENTITY % Inline.mix "%Inline.class; % Misc.class;>
<!- Элементы блочного уровня -->
<!ENTITY % Heading.class
"%H1.qname; I %H2.qname; I %H3.qname; I %H4.qname; %H5.qname; I %H6 .qname;" > <!ENTITY % List.class "%U1.qname; I %0l.qname; I %D1.qname;" > <!ENTITY % Blkstruct.class "%P.qname; I %Div.qname;" > <!ENTITY % Blkphras.class
"I %Pre.qname; I %Blockquote.qname; I %Address.qname;" > <!ENTITY % Blkpres.class "I %Hr.qname;" > <!ENTITY % Block.extra "I %Recipe.recipe.qname; " >
<!-- %Block.class; данный класс включает все элементы блочного уровня, используемые в качестве компонентов в смешанных структурах
-->
<!ENTITY % Block.class "%Blkstruct.class; % Blkphras.class; % Blkpres.class; % Block.extra;">
<!-- %Block.mix; включает все элементы блочного уровня, а также
%Misc.class;
-->
<!ENTITY % Block.mix "%Heading.class;
%List.class;
%Block.class; % Misc.class; ">
<!-- Все элементы содержания -->
<!-- % Flow.mix; включает все текстовые потоки (содержание), блочные и внутристроковые элементы
-->
<!ENTITY % Flow.mix
"%Heading.class,¦
%List.class;
%Block.class;
%Inline.class; % Misc.class;">
<!-- Завершение описания модуля recipe-model-1.mod -->
Далее следует строка описания профилей документа. На данном этапе мы не работаем с ними, поэтому содержательная часть строки остается пустой:
<!-- Зарезервировано для будущего использования с профилями документов -->
<!ENTITY % XHTML.profile "">
Для упрощения структуры документа двусторонняя поддержка в описании языка запрещена:
<!-- Здесь поддержки двунаправленного текста нет --> <!ENTITY % XHTML.bidi "IGNORE">
Сегмент, предваряющий описание каркаса, останется без изменений; обработка событий не поддерживается. Информацию о месте вставки сегмента, предшествующего описанию каркаса, можно просто удалить (в описании эти инструкции сопровождаются соответствующими комментариями). Модуль событий также помечен значением "IGNORE":
<!-- Эту часть можно удалить -->
<!-- Место для вставки сегмента переопределения описаний,
предваряющих объявление каркаса --> <!-- Этот сегмент служит для размещения объявлений элементов
разметки в описании правил DTD, перед объявлением каркаса
-->
<!ENTITY % xhtml-prefw-redecl.module "IGNORE" > <![%xhtml-prefw-redecl.module;[ %xhtml-prefw-redecl.mod;
<!-- Завершение описания модуля xhtml-prefw-redecl.module -->]]> <!-- Окончание описания, которое можно удалить --> <!-- Если в вашем проекте необходим модуль событий, его следует описывать здесь. В данном случае он исключен
-->
<[ENTITY % xhtml-events.module "IGNORE" >
Теперь каркас и необходимые модули описаны и находятся на своих местах. Нам не нужно использовать сегмент переопределения данных, следующих за каркасом, поэтому в следующих строках его нет. Это единственное изменение, которое требуется в данном сегменте:
<!-- Модуль Modular Framework -->
<!ENTITY % xhtml-framework.module "INCLUDE" > <![%xhtml-framework.module;[ <!ENTITY % xhtml-framework.mod
PUBLIC "-//W3С//ELEMENTS XHTML 1.1 Modular Framework 1.0//EN" "xhtmlll-framework-1.mod" > %xhtml- framework.mod;] ]>
<!-- Текстовый модуль (обязательный) -->
<[ENTITY % xhtml-text.module "INCLUDE" > <![%xhtml-text.module;[ <!ENTITY % xhtml-text.mod
PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Text 1.0//EN" "xhtmlll-text-1.mod" > %xhtml-text.mod;]]>
<!-- Модуль гипертекста (обязательный) -->
<!ENTITY % xhtml-hypertext.module "INCLUDE" > <![%xhtml-hypertext.module;[ <!ENTITY % xhtml-hypertext.mod
PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Hypertext 1.0//EN" "xhtmlll-hypertext-1.mod" > %xhtml-hypertext.mod;]]>
<!-- Модуль списков (обязательный) -->
<!ENTITY % xhtml-list.module "INCLUDE" > <![%xhtml-list.module;[ <!ENTITY % xhtml-list.mod
PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Lists 1.0//EN" "xhtmlll-list-1.mod" > %xhtml-list.mod;]]>
На данном этапе в правила описания типов документа вводятся новые элементы:
<!-- Модуль рецептов -->
<!ENTITY % Recipe-elements.mod
SYSTEM "recipe-elements-1.mod" > %Recipe-elements.mod;
Наконец, необходимо включить модуль структуры:
<!-- Модуль структуры документа (обязательный) -->
<!ENTITY % xhtml-struct.module "INCLUDE" > <![%xhtml-struct.module;[ <!ENTITY % xhtml-struct.mod
PUBLIC " -//W3С//ELEMENTS XHTML 1.1 Document Structure 1.0//EN" "xhtmlll-struct-1.mod" > %xhtml-struct.mod;]]>
Если перечислены все свойства, которые необходимо поддерживать в проекте, работу можно считать завершенной. Однако для получения окончательной формы документа следует добавить еще ряд модулей: изображения (Images), метаданные (Metainformation) и таблицы стилей (Stylesheet). Они вводятся перед завершающим модулем описания структуры:
<!-- Модуль изображений -->
<!ENTITY % xhtml-image.mod
PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
"http://www.w3.org/TR/xhtml-modularization/DTD/ xhtml-image-1.mod"> %xhtml-image.mod;
<!-- Модуль метаданных документа -->
<!ENTITY % xhtml-meta.mod
PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN" "xhtml-meta-1.mod"> %xhtml-image.mod;
<!-- Модуль XHTML-таблиц стилей -->
<!ENTITY % xhtml-style.mod
PUBLIC "-//W3C//ELEMENTS XHTML Stylesheets 1.0//EN"
"http://www.w3.org/TR/xhtml-modularization/DTD/ xhtml-style-1.mod" > %xhtml-image.mod;
<!-- Модуль структуры документа (обязательный) -->
<!ENTITY % xhtml-struct.module "INCLUDE" >
<![%xhtml-list.module;[
<!ENTITY % xhtml-struct.mod
PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Document Structure 1.0//EN" "xhtmlll-struct-1.mod" > %xhtml-struct.mod;]]>
Опубликовал vovan666
April 09 2013 22:32:05 ·
0 Комментариев ·
10227 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.