Модуль Style Attribute
Модуль Style Attribute определяет атрибут style. Если выбран этот модуль, то он активирует .
Реализация:
Модуль Style Sheet
Модуль Style Sheet определяет элемент для использования при объявлении внедрённых таблиц стилей. Элемент и атрибуты этого модуля:
style | , media (), title (), type* (), xml:space="preserve" |
PCDATA |
При использовании этого модуля элемент style
добавляется к модели содержимого элемента head модуля Structure.
Реализация:
Модуль Tables
Как видно уже из названия, модуль Tables предоставляет элементы, которые относятся к таблицам и имеют улучшенный доступ из невизуальных ПА (пользовательских агентов). Модуль Tables поддерживает следующие элементы, атрибуты и модель содержимого:
caption | (PCDATA | Inline)* | |
table | , border (), cellpadding (), cellspacing (), datapagesize (), frame ("void" | "above" | below" | "hsides" | "lhs" | "rhs" | "vsides" | "box" | "border"), rules ("none" | "groups" | "rows" | "cols" | "all"), summary (), width () |
caption?, ( col* | colgroup* ), (( thead?, tfoot?, tbody+ ) | ( tr+ )) |
td | , abbr (), align ("left" | "center" | "right" | "justify" | "char"), axis (), char (), charoff (), colspan (), headers (), rowspan (), scope ("row", "col", "rowgroup", "colgroup"), valign ("top" | "middle" | "bottom" | "baseline") |
(PCDATA | Flow)* |
th | , abbr (), align ("left" | "center" | "right" | "justify" | "char"), axis (), char (), charoff (), colspan (), headers (), rowspan (), scope ("row", "col", "rowgroup", "colgroup"), valign ("top" | "middle" | "bottom" | "baseline") | (PCDATA | Flow)* |
tr | , align ("left" | "center" | "right" | "justify", "char"), char (), charoff (), valign ("top" | "middle" | "bottom" | "baseline") | (td | th)+ |
col | , align ("left" | "center" | "right" | "justify", "char"), char (), charoff (), span (), valign ("top" | "middle" | "bottom" | "baseline"), width () | EMPTY |
colgroup | , align ("left" | "center" | "right" | "justify", "char"), char (), charoff (), span (), valign ("top" | "middle" | "bottom" | "baseline"), width () | col* |
tbody | , align ("left" | "center" | "right" | "justify", "char"), char (), charoff (), valign ("top" | "middle" | "bottom" | "baseline") | tr+ |
thead | , align ("left" | "center" | "right" | "justify", "char"), char (), charoff (), valign ("top" | "middle" | "bottom" | "baseline") | tr+ |
tfoot | , align ("left" | "center" | "right" | "justify", "char"), char (), charoff (), valign ("top" | "middle" | "bottom" | "baseline") | tr+ |
При использовании этого модуля добавляется элемент table к набору содержимого Block, как определено в модуле Text.
Реализация:
Модуль Target
Содержимое фрэйма может специфицировать цели назначения при выборе. Этот модуль добавляет элемент target к области и связывает определяемые элементы. Определяется отдельный модуль, поэтому он может быть включён в документы, которые входят в состав фреймов, и документы, использующие target для открытия нового окна.
a& | target ( ) | |
area& | target ( ) | Если выбран модуль Client-side Image Map. |
base& | target ( ) | Если выбран модуль Legacy. |
link& | target ( ) | Если выбран модуль Link . |
form& | target ( ) | Если выбран модуль Basic Forms или Forms. |
Реализация:
Модуль Text
Этот модуль определяет все базовые элементы-контейнеры, атрибуты текста и их модель содержимого:
abbr | (PCDATA | Inline)* | |
acronym | (PCDATA | Inline)* | |
address | (PCDATA | Inline)* | |
blockquote | , cite () | (PCDATA | Heading | Block | List)* |
br | EMPTY | |
cite | (PCDATA | Inline)* | |
code | (PCDATA | Inline)* | |
dfn | (PCDATA | Inline)* | |
div | (PCDATA | Flow)* | |
em | (PCDATA | Inline)* | |
h1 | (PCDATA | Inline)* | |
h2 | (PCDATA | Inline)* | |
h3 | (PCDATA | Inline)* | |
h4 | (PCDATA | Inline)* | |
h5 | (PCDATA | Inline)* | |
h6 | (PCDATA | Inline)* | |
kbd | (PCDATA | Inline)* | |
p | (PCDATA | Inline)* | |
pre | , xml:space="preserve" | (PCDATA | Inline)* |
q | , cite () | (PCDATA | Inline)* |
samp | (PCDATA | Inline)* | |
span | (PCDATA | Inline)* | |
strong | (PCDATA | Inline)* | |
var | (PCDATA | Inline)* |
Минимальная модель содержимого для этого модуля определяет несколько наборов содержимого:
Heading
h1 | h2 | h3 | h4 | h5 | h6
Block
address | blockquote | div | p | pre
Inline
abbr | acronym | br | cite | code | dfn | em | kbd | q | samp | span | strong | var
Flow
Heading | Block | Inline
Реализация:
Модуль XHTML Skiing
Модуль XHTML Skiing определяет разметку для использования при описании аспектов ski lodge (лыжного домика?? - кто знает, переведите!!). Элементы и атрибуты, определённые в этом модуле:
resort | Common, href (CDATA) | description, Aspen+ |
lodge | Common | description, (Aspen - lift)+ |
lift | Common, href | description? |
chalet | Common, href | description? |
room | Common, href | description? |
lobby | Common, href | description? |
fireplace | Common, href | description? |
description | Common | PCDATA* |
Этот модуль определяет также набор содержимого Aspen с моделью минимального содержимого lodge | lift | chalet | room | lobby | fireplace.
[] [] []
Модули ядра
Модули ядра это модули, наличие которых необходимо в любом .
Модули поддержки ОТД XHTML
Модули этого раздела являются элементами реализации ОТД XHTML, которые, будучи скрытыми от случайного доступа, важны для понимания при создании языков производной разметки с использованием архитектуры Модуляризации.
Модули текстовых расширений
В этом разделе определены различные дополнительные модули текстовой разметки.
Модульный каркас XHTML
Чтобы использовать преимущества модуля ОТД XHTML, авторам ОТД необходимо определить модель содержимого для своих ОТД. XHTML предоставляет различные утилиты для облегчения этой работы. Это определено в наборе вспомогательных модулей в главном модуле Framework:
<!-- ...................................................................... --> <!-- Модуль XHTML Modular Framework ....................................... --> <!-- Файл xhtml-framework-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-framework-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Modular Framework/Модульный Каркас
Этот необходимый модуль устанавливает модули, необходимые для поддержки модели модуляризации XHTML, и включает:
+ нотацию + типы данных + квалифицированные имена пространства имён + общие атрибуты + модель документа + мнемоники символов
Модуль Intrinsic Events/Внутренние События по умолчанию игнорируется, но появляется в данном модуле, поскольку он обязан быть установлен перед Attributes/Атрибутами, но после Datatypes/Типов Данных. -->
<!ENTITY % xhtml-arch.module "IGNORE" > <![%xhtml-arch.module;[ <!ENTITY % xhtml-arch.mod PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN" "xhtml-arch-1.mod" > %xhtml-arch.mod;]]>
<!ENTITY % xhtml-notations.module "INCLUDE" > <![%xhtml-notations.module;[ <!ENTITY % xhtml-notations.mod PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN" "xhtml-notations-1.mod" > %xhtml-notations.mod;]]>
<!ENTITY % xhtml-datatypes.module "INCLUDE" > <![%xhtml-datatypes.module;[ <!ENTITY % xhtml-datatypes.mod PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN" "xhtml-datatypes-1.mod" > %xhtml-datatypes.mod;]]>
Нормативные ссылки
"", W3C Recommendation, B. Bos, H. W. Lie, C. Lilley, I. Jacobs,
eds., 12 мая 1998.
Находится на http://www.w3.org/TR/1998/REC-CSS2-19980512
"", L. Wood et al., 1 октября 1998.
Находится на http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001
"", W3C Recommendation, D. Raggett, A. Le Hors, I. Jacobs, eds., 24 декабря 1999.
Находится на http://www.w3.org/TR/1999/REC-html401-19991224
"Information Technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane", ISO/IEC 10646-1:2000. Это справочник о наборе кодовых точек, который дополняется по мере внесения в него новых символов. Также этот справочник принимает, что наборы символов, определённые в ISO 10646 и , являются эквивалентом символ-символ. Данный справочник содержит также будущие публикации других частей 10646 (т.е. не Part 1), определяющие символы в планах 1-16.
"", RFC 1808, R. Fielding, июнь 1995.
Находится на http://www.ietf.org/rfc/rfc1808.txt
"", RFC 2045, N. Freed, N. Borenstein, ноябрь 1996.
Находится на http://www.ietf.org/rfc/rfc2045.txt
"", RFC 2119, S. Bradner, март 1997.
Находится на http://www.ietf.org/rfc/rfc2119.txt
"", RFC 3066, H. Alvestrand, январь 2001.
Находится на http://www.ietf.org/rfc/rfc3066.txt
"Information Processing -- Text and Office Systems -- Standard Generalized Markup Language (SGML)", ISO 8879:1986.
См. в информацию о стандарте или о SGML.
"", version 1.10, M. Stokes, M. Anderson, S. Chandrasekar, and R. Motta, 5 ноября 1996.
Находится на http://www.w3.org/Graphics/Color/sRGB
"The Unicode Standard", The Unicode Consortium. Version 3.1 of the Unicode Standard составлен как книга, документирующая version 3.0 и онлайновое Unicode Standard Annex, документирующее изменения и дополнения, составляющие version 3.1.
"", The Unicode Consortium, Reading, Mass.: Addison- Wesley Developers Press, 2000. ISBN 0-201-61633-5 (см. в http://www.unicode.org/unicode/uni2book/u2.html online-издания книги).
"", Mark Davis, Michael Everson, Asmus Freytag, John H. Jenkins et al. (см. http://www.unicode.org/unicode/reports/tr27/).
О Unicode см. дополнительно .
[URI]
"", RFC 2396, T. Berners-Lee, R. Fielding, L. Masinter, август 1998.
Находится на http://www.ietf.org/rfc/rfc2396.txt. Это RFC обновляет RFC 1738 [URL]
и [RFC1808].
[URL]
"", RFC 1738, T. Berners-Lee, L. Masinter, M. McCahill, декабрь 1994.
Находится на http://www.ietf.org/rfc/rfc1738.txt
[XHTML1]
"", W3C Recommendation, S. Pemberton et al., 26 января 2000.
Находится на http://www.w3.org/TR/2000/REC-xhtml1-20000126
[XML]
"", W3C Recommendation, T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, eds., 6 октября 2000.
Находится на http://www.w3.org/TR/2000/REC-xml-20001006
[XMLNAMES]
"", W3C Recommendation, T. Bray, D. Hollander, A. Layman, eds., 14 января 1999.
Находится на http://www.w3.org/TR/1999/REC-xml-names-19990114
[XMLSCHEMA]
"", W3C Proposed Recommendation, H. S. Thompson, D. Beech, M. Maloney, N. Mendelsohn,
eds., 30 марта 2001.
Находится на http://www.w3.org/TR/2001/PR-xmlschema-1-20010330
См. также "",
Находится на
Нотация XHTML
<!-- ...................................................................... --> <!-- Модуль XHTML Notations ............................................... --> <!-- файл xhtml-notations-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-framework-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-notations-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Notations
определяет следующую нотацию, большая часть которой импортирована из других спецификаций и стандартов. Если известен существующий FPI, он присоединяется здесь. -->
<!-- Нотация XML ..................................... --> <!-- Нотации SGML и XML .............................. -->
<!-- Рекомендации W3C XML 1.0 --> <!NOTATION w3c-xml PUBLIC "ISO 8879//NOTATION Extensible Markup Language (XML) 1.0//EN" >
<!-- XML 1.0 CDATA --> <!NOTATION cdata PUBLIC "-//W3C//NOTATION XML 1.0: CDATA//EN" >
<!-- SGML Formal Public Identifiers/Формальные Публичные Идентификаторы --> <!NOTATION fpi PUBLIC "ISO 8879:1986//NOTATION Formal Public Identifier//EN" >
<!-- Нотация XHTML ................................... -->
<!-- Размер определён для полей/заполнения ячеек -->
<!-- nn для пикселов или nn% для процентных значений --> <!NOTATION length PUBLIC "-//W3C//NOTATION XHTML Datatype: Length//EN" >
<!-- список разделённых пробелами типов ссылок --> <!NOTATION linkTypes PUBLIC "-//W3C//NOTATION XHTML Datatype: LinkTypes//EN" >
<!-- одиночный или список разделённых запятыми дескрипторов носителя --> <!NOTATION mediaDesc PUBLIC "-//W3C//NOTATION XHTML Datatype: MediaDesc//EN" >
<!-- в пикселах, процентах или относительные (размеры) --> <!NOTATION multiLength PUBLIC "-//W3C//NOTATION XHTML Datatype: MultiLength//EN" >
<!-- одна или более цифр (NUMBER) --> <!NOTATION number PUBLIC "-//W3C//NOTATION XHTML Datatype: Number//EN" >
<!-- целое число, представляющее значение в пикселах --> <!NOTATION pixels PUBLIC "-//W3C//NOTATION XHTML Datatype: Pixels//EN" >
<!-- выражение скрипта --> <!NOTATION script PUBLIC "-//W3C//NOTATION XHTML Datatype: Script//EN" >
<!-- текстовое содержимое --> <!NOTATION text PUBLIC "-//W3C//NOTATION XHTML Datatype: Text//EN" >
<!-- Импортированная Нотация ................................ -->
<!-- одиночный символ из [ISO10646] --> <!NOTATION character PUBLIC "-//W3C//NOTATION XHTML Datatype: Character//EN" >
<!-- кодировка символов, как в [RFC2045] --> <!NOTATION charset PUBLIC "-//W3C//NOTATION XHTML Datatype: Charset//EN" >
<!-- список разделённых пробелами кодировок символов, как в [RFC2045] --> <!NOTATION charsets PUBLIC "-//W3C//NOTATION XHTML Datatype: Charsets//EN" >
<!-- тип носителя, как в [RFC2045] --> <!NOTATION contentType PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentType//EN" >
<!-- список разделённых запятыми типов носителя, как в [RFC2045] --> <!NOTATION contentTypes PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentTypes//EN" >
<!-- информация о дате и времени. Формат даты ISO --> <!NOTATION datetime PUBLIC "-//W3C//NOTATION XHTML Datatype: Datetime//EN" >
<!-- код языка, как в [RFC3066] --> <!NOTATION languageCode PUBLIC "-//W3C//NOTATION XHTML Datatype: LanguageCode//EN" >
<!-- Uniform Resource Identifier, см. [URI] --> <!NOTATION uri PUBLIC "-//W3C//NOTATION XHTML Datatype: URI//EN" >
<!-- список разделённых пробелами Uniform Resource Identifiers, см. [URI] --> <!NOTATION uris PUBLIC "-//W3C//NOTATION XHTML Datatype: URIs//EN" >
<!-- конец xhtml-notations-1.mod -->
Объект
<!-- ...................................................................... --> <!-- Модуль XHTML Embedded Object ........................................ --> <!-- файл xhtml-object-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-object-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Embedded Objects/Внедрённые Объекты
object
Этот модуль объявляет тип элемента object его атрибуты, используемый для внедрения внешних объектов как части страниц XHTML. Размещайте элементы param перед остальным содержимым в элементе object.
Обратите внимание, что использование этого модуля требует установки модуля Param Element. -->
<!-- object: Generic Embedded Object/Общий Внедрённый Объект ................... -->
<!ENTITY % object.element "INCLUDE" > <![%object.element;[ <!ENTITY % object.content "( #PCDATA | %Flow.mix; | %param.qname; )*" > <!ENTITY % object.qname "object" > <!ELEMENT %object.qname; %object.content; > <!-- end of object.element -->]]>
<!ENTITY % object.attlist "INCLUDE" > <![%object.attlist;[ <!ATTLIST %; %Common.attrib; declare ( declare ) #IMPLIED classid #IMPLIED codebase #IMPLIED data #IMPLIED type #IMPLIED codetype #IMPLIED archive #IMPLIED standby #IMPLIED height #IMPLIED width #IMPLIED name CDATA #IMPLIED tabindex #IMPLIED > <!-- end of object.attlist -->]]>
<!-- конец xhtml-object-1.mod -->
Определение Абстрактных Модулей
4.1.
4.2.
4.3.
4.4.
4.4.1.
Этот раздел является нормативным.
Абстрактный модуль это определение модуля XHTML с использованием описания и некоторых соглашений по неформальной разметке.
Поскольку такие определения обычно не используются при машинной обработке типов документов, необходимо помочь людям понять, что содержится в модуле.
Данный раздел посвящён способам определения абстрактных модулей XHTML.
Модуль, соответствующий XHTML, не требует
предоставления определения абстрактного модуля. Однако разработчику модуля XHTML рекомендуется предоставлять резюме для облегчения использования модуля.
Определение дополнительных атрибутов
В определённых случаях расширение XHTML может быть таким же простым, как создание дополнительных атрибутов. Атрибуты могут быть добавлены к элементу путём спецификации дополнительного ATTLIST для этого элемента, например:
<!ATTLIST %a.qname; %MyModule.pfx;myattr CDATA #IMPLIED %MyModule.xmlns.extras.attrib; >
добавит атрибут "myattr" с необязательным префиксом "%MyModule.pfx", с типом данных CDATA, к элементу "a". Это будет работать, поскольку XML разрешает определение или расширение списка атрибутов элемента в любой точке ОТД. Обсуждение квалифицированных имён и префиксов пространства имён см. в .
Естественно, добавление атрибута в ОТД не означает, что любое новое поведение определено для любого клиента. Однако разработчик содержимого может использовать дополнительный атрибут для хранения информации, которая доступна для ассоциированных скриптов через Document Object Model (для примера).
Определение дополнительных элементов
Определение дополнительных элементов лишь немного сложнее, чем добавление дополнительных атрибутов. В основном авторы ОТД должны написать только объявление элемента для каждого элемента:
<!-- В субмодуле qname --> <!ENTITY % MyModule.myelement.qname "%MyModule.pfx;myelement" > <!ENTITY % MyModule.myotherelement.qname "%MyModule.pfx;myotherelement" >
<!-- В объявлении субмодуля --> <!ELEMENT %MyModule.myelement.qname; ( #PCDATA | %MyModule.myotherelement.qname; )* > <!ATTLIST %MyModule.myelement.qname; myattribute CDATA #IMPLIED >
<!ELEMENT %MyModule.myotherelement.qname; EMPTY >
После того как элементы определены, их необходимо интегрировать в модель содержимого. Стратегия интеграции новых элементов или наборов элементов в модель содержимого рассматривается в следующем разделе.
Определение коллекции содержимого для коллекции модулей
Поскольку модель содержимого коллекции модулей XHTML полностью параметризована, авторы ОТД могут модифицировать модель содержимого для каждого элемента в каждом модуле. Детали интерфейса модуля ОТД определены в . Есть два базовых подхода к этой модификации:
Переопределить объект параметра ".content" для каждого элемента.
Переопределить один или более объектов глобальной модели содержимого (обычно через объект параметра ".extras").
Конкретная стратегия зависит от природы комбинируемых модулей и природы интегрируемых элементов. Далее в этом разделе описывается техника интеграции двух различных классов модулей.
Определение пространства имён модуля
XHTML требует, чтобы элементы и атрибуты, объявленные в модуле, находились внутри определённого XML пространства имён . Идентификатором этого пространства имён служит произвольный URI. XHTML требует, чтобы, если модуль реализован с использованием ОТД XML, то этот модуль объявлял пространство имён специальным способом. Это сделано для того, чтобы разрешить выбор, во время разбора/проверки документа, использования префиксов пространства имён и того префикса, который используется для идентификации элементов и атрибутов модуля.
Разработчики содержимого, желающие создавать документы на базе гибридных типов документа, могут выбрать использование префиксов пространства имён (ПИ) XML для элементов из ПИ XHTML, для элементов из других ПИ или обоих.
Чтобы убедиться, что такие документы соответствуют XHTML и обратно совестимы с утилитами, не работающими с ПИ, W3C рекомендует, чтобы разработчики содержимого не использовали префиксы ПИ XML в элементах из ПИ XHTML.
Если разработчики содержимого заинтересованы в обработке своего содержимого процессорами, работающими с ПИ, W3C рекомендует специфицировать элементы из не-XHTML пространств имён и использованием префикса ПИ XML, а не полагаться на механизмы ПИ XML по умолчанию.
Необходимо, чтобы каждый соответствующий XHTML модуль, реализованный как ОТД XML, определял префикс ПИ XML по умолчанию, метод изменения этого префикса в объекте документа и маркированный раздел, запускающий обработку префиксов.
Обратите внимание, что верным и ожидаемым для нескольких модулей будет то, что эти модули, если они связаны, будут относиться к одному ПИ. Все модули XHTML, например, являются частями одного пространства имён.
Определение соответствия
Содержание
3.1
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
Этот раздел является нормативным.
Чтобы обеспечить максимальную переносимость документов семейства XHTML в пользовательские агенты (ПА) семейства XHTML, эта спецификация строго определяет требования соответствия для типов документов семейства XHTML.
Определения соответствия находятся в этом разделе и ссылаются на необходимый нормативный текст в данном документе в базовой спецификации XHTML [XHTML1] и в других спецификациях. Необходимо только полностью разобраться с требованиями соответствия XHTML, полностью прочитав все нормативные ссылки.
Слова "MUST/ОБЯЗАН", "MUST NOT/НЕ ОБЯЗАН", "REQUIRED/НЕОБХОДИМ", "SHOULD/ДОЛЖЕН", "SHOULD NOT/НЕ ДОЛЖЕН", "MAY/МОЖЕТ", "RECOMMENDED/РЕКОМЕНДУЕТСЯ" И "OPTIONAL/НЕ ОБЯЗАТЕЛЕН" в этом документе интерпретируются так, как описано в .
Определения общих атрибутов XHTML
<!-- ...................................................................... --> <!-- Модуль XHTML Common Attributes ...................................... --> <!-- Файл xhtml-attribs-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-attribs-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-attribs-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Common Attributes/Общие Атрибуты
Этот модуль объявляет многие из общих атрибутов для ОТД XHTML. %NS.decl.attrib; объявлен в модуле XHTML Qname. -->
<!ENTITY % id.attrib "id ID #REQUIRED" >
<!ENTITY % class.attrib "class NMTOKENS #REQUIRED" >
<!ENTITY % title.attrib "title #REQUIRED" >
<!ENTITY % Core.extra.attrib "" >
<!ENTITY % Core.attrib "%XHTML.xmlns.attrib; %id.attrib; %class.attrib; %title.attrib; %Core.extra.attrib;" >
<!ENTITY % lang.attrib "xml:lang #REQUIRED" >
<![%XHTML.bidi;[ <!ENTITY % dir.attrib "dir ( ltr | rtl ) #REQUIRED" >
<!ENTITY % I18n.attrib "%dir.attrib; %lang.attrib;" >
]]> <!ENTITY % I18n.attrib "%lang.attrib;" >
<!ENTITY % Common.extra.attrib "" >
<!-- атрибуты внутренних событий, объявленных ранее --> <!ENTITY % Events.attrib "" >
<!ENTITY % Common.attrib "%Core.attrib; %I18n.attrib; %Events.attrib; %Common.extra.attrib;" >
<!-- конец xhtml-attribs-1.mod -->
Param
<!-- ...................................................................... --> <!-- Модуль XHTML Param Element ........................................... --> <!-- файл: xhtml-param-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-param-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Параметры для Аплетов Java и Встроенных Объектов
param
Этот модуль предоставляет объявления для элемента param, используемого для предоставления значений именованных свойства для элементов applet и object. -->
<!-- param: Значение Именованного Свойства ....................... -->
<!ENTITY % param.element "INCLUDE" > <![%param.element;[ <!ENTITY % param.content "EMPTY" > <!ENTITY % param.qname "param" > <!ELEMENT %param.qname; %param.content; > <!-- end of param.element -->]]>
<!ENTITY % param.attlist "INCLUDE" > <![%param.attlist;[ <!ATTLIST %; %XHTML.xmlns.attrib; %id.attrib; name CDATA #REQUIRED value CDATA #IMPLIED valuetype ( data | ref | object ) 'data' type #IMPLIED > <!-- end of param.attlist -->]]>
<!-- конец xhtml-param-1.mod -->
Переобъявления наследственности
<!-- ...................................................................... --> <!-- Модуль XHTML Legacy Redeclarations ................................... --> <!-- файл xhtml-legacy-redecl-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-legacy-redecl-1.mod,v 4.4 2001/04/10 09:42:30 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Legacy Redeclarations 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-legacy-redecl-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Переобъявления Наследственности
Этот необязательный модуль замещает модуль Modular Framework, рассеивая переобъявления различных объектов параметров, чтобы дать возможность включит разметку Transitional модель документа XHTML 1.1. Это устанавливает модули, необходимые для поддержки модели модуляризации XHTML, в том числе:
+ нотация + типы данных + квалифицированные имена пространства имён + общие атрибуты + модель документа + мнемоники символов
По умолчанию, модуль Object включён, а Frames и IFrames проигнорированы.
Модуль Intrinsic Events по умолчанию игнорируется, но появляется в этом модуле, поскольку он должен быть установлен до Attributes, но после Datatypes. --> <!ENTITY % xhtml-legacy.module "INCLUDE" >
<!ENTITY % xhtml-arch.module "IGNORE" > <![%xhtml-arch.module;[ <!ENTITY % xhtml-arch.mod PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN" "xhtml-arch-1.mod" > %xhtml-arch.mod;]]>
<!ENTITY % xhtml-notations.module "INCLUDE" > <![%xhtml-notations.module;[ <!ENTITY % xhtml-notations.mod PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN" "xhtml-notations-1.mod" > %xhtml-notations.mod;]]>
<!-- Модуль Datatypes ............................................ --> <!ENTITY % xhtml-datatypes.module "INCLUDE" > <![%xhtml-datatypes.module;[ <!ENTITY % xhtml-datatypes.mod PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN" "xhtml-datatypes-1.mod" > %xhtml-datatypes.mod;]]>
<!-- Модуль Qualified Names ...................................... --> <!ENTITY % xhtml-qname.module "INCLUDE" > <![%xhtml-qname.module;[ <!ENTITY % xhtml-qname.mod PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN" "xhtml-qname-1.mod" > %xhtml-qname.mod;]]>
<!-- Дополнительные Квалифицированные Имена .................................. -->
<!-- xhtml-legacy-1.mod --> <!ENTITY % font.qname "%XHTML.pfx;font" > <!ENTITY % basefont.qname "%XHTML.pfx;basefont" > <!ENTITY % center.qname "%XHTML.pfx;center" > <!ENTITY % s.qname "%XHTML.pfx;s" > <!ENTITY % strike.qname "%XHTML.pfx;strike" > <!ENTITY % u.qname "%XHTML.pfx;u" > <!ENTITY % dir.qname "%XHTML.pfx;dir" > <!ENTITY % menu.qname "%XHTML.pfx;menu" > <!ENTITY % isindex.qname "%XHTML.pfx;isindex" >
<!-- xhtml-frames-1.mod --> <!ENTITY % frameset.qname "%XHTML.pfx;frameset" > <!ENTITY % frame.qname "%XHTML.pfx;frame" > <!ENTITY % noframes.qname "%XHTML.pfx;noframes" >
<!-- xhtml-iframe-1.mod --> <!ENTITY % iframe.qname "%XHTML.pfx;iframe" >
<!ENTITY % xhtml-events.module "IGNORE" > <![%xhtml-events.module;[ <!ENTITY % xhtml-events.mod PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN" "xhtml-events-1.mod" > %xhtml-events.mod;]]>
<!-- Дополнительные Общие Атрибуты ................................ -->
<!-- включён исторический атрибут 'lang' ( который всегда должен совпадать со значением 'xml:lang') --> <!ENTITY % lang.attrib "xml:lang #IMPLIED lang #IMPLIED" >
<!-- Модуль Common Attributes .................................... --> <!ENTITY % xhtml-attribs.module "INCLUDE" > <![%xhtml-attribs.module;[ <!ENTITY % xhtml-attribs.mod PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN" "xhtml-attribs-1.mod" > %xhtml-attribs.mod;]]>
<!-- заглушка для переобъявлений модели содержимого --> <!ENTITY % xhtml-model.redecl "" > %xhtml-model.redecl;
<!-- Переобъявлени Модели Документа ............................... -->
<!ENTITY % InlPres.class "| %tt.qname; | %i.qname; | %b.qname; | %big.qname; | %small.qname; | %sub.qname; | %sup.qname; | %font.qname; | %basefont.qname; | %iframe.qname; | %s.qname; | %strike.qname; | %u.qname;" >
<!ENTITY % InlSpecial.class "| %img.qname; | %map.qname; | %applet.qname; | %object.qname;" >
<!ENTITY % BlkPres.class "| %hr.qname; | %center.qname;" >
<!ENTITY % BlkSpecial.class "| %table.qname; | %form.qname; | %fieldset.qname; | %noframes.qname; | %isindex.qname;" >
<!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname; | %dir.qname; | %menu.qname;" >
<!-- Модуль Document Model ...................................... --> <!ENTITY % xhtml-model.module "INCLUDE" > <![%xhtml-model.module;[ <!-- устанавливает модуль Document Model, объявленный в драйвере ОТД --> %xhtml-model.mod;]]>
<!ENTITY % applet.content "( #PCDATA | %param.qname; | %Flow.mix; )*" >
<!ENTITY % blockquote.content "( #PCDATA | %Flow.mix; )*" >
<!ENTITY % noscript.content "( #PCDATA | %Flow.mix; )*" >
<!ENTITY % body.content "( #PCDATA | %Flow.mix; )*" >
<!-- переобъявляет модель содержимого <html>, чтобы разрешить содержимое body или frameset. SGML-возможности минимизации разметки, используемые в HTML 4, не применяются, так что неоднозначность, делавшая необходимым разделение на два ОТД - Frameset и Transitional - устранена. --> <!ENTITY % html.content "( %head.qname;, ( %body.qname; | %frameset.qname; ) )" >
<!ENTITY % xhtml-charent.module "INCLUDE" > <![%xhtml-charent.module;[ <!ENTITY % xhtml-charent.mod PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN" "xhtml-charent-1.mod" > %xhtml-charent.mod;]]>
<!-- конец xhtml-legacy-redecl-1.mod -->
[] [] []
Подмодуль(и) объявлений
Далее вам необходимо определить один или более "подмодулей объявлений". Задачей этих файловых объектов является объявление элементов ОТД XML и списков атрибутов. Модуль объявлений XHTML должен конструироваться следующим образом:
Определить объект параметра для использования с ATTLIST каждого объявленного элемента. Этот объект параметра должен содержать %NS.decl.attrib;, если %MODULE.prefixed; установлен в INCLUDE, и %NS.decl.attrib; плюс "xmlns %URI.datatype; #FIXED '%MODULE.xmlns;'", если %MODULE.prefixed; установлен в IGNORE.
Объявить все элементы и атрибуты модуля. В каждый ATTLIST элемента включить объект параметра, определённый выше, так, чтобы все необходимые атрибуты xmlns были доступны каждому элементу модуля.
Если модуль добавляет атрибуты к тем элементам, определённым в модуле, которые не разделяют пространство имён этого модуля, объявить эти атрибуты так, чтобы они использовали префикс %MODULE.pfx. Например:
<ENTITY % MODULE.img.myattr.qname "%MODULE.pfx;myattr" > <!ATTLIST %img.qname; %MODULE.img.myattr.qname; CDATA #IMPLIED >
Здесь должен быть добавлен атрибут к элементу img модуля Image, но имя атрибута будет квалифицированным именем, включая префикс, если префиксы выбраны для объекта документа.
Добавляется также атрибут xmlns:MODULE_PREFIX к списку атрибутов элемента img, так что разборщик, понимающий пространство имён XML, будет "знать", как разбирать пространство имён на безе его (ПИ) префиксов.
В следующем примере показано объявление подмодуля для гипотетического модуля Inventory:
<!-- ...................................................................... --> <!-- Inventory Elements Module ................................................... --> <!-- file: inventory-1.mod
PUBLIC "-//MY COMPANY//ELEMENTS XHTML Inventory Elements 1.0//EN" SYSTEM "http://www.example.com/DTDs/inventory-1.mod"
xmlns:inventory="http://www.example.com/xmlns/inventory" ...................................................................... -->
<!-- Inventory Module
shelf item sku desc price
Этот модуль определяет простую структуру инвентаризации -->
<!-- Определяет атрибуты глобального ПИ --> <![%Inventory.prefixed;[ <!ENTITY % Inventory.xmlns.attrib "%NS.decl.attrib;" > ]]> <!ENTITY % Inventory.xmlns.attrib "xmlns %URI.datatype; #FIXED '%Inventory.xmlns;'" >
<!-- Определяет обычный набор атрибутов для всех элементов модуля --> <!ENTITY % Inventory.Common.attrib "%Inventory.xmlns.attrib; id ID #IMPLIED >
<!-- Определяет элементы и атрибуты модуля --> <!ELEMENT %Inventory.shelf.qname; ( %Inventory.item.qname; )* > <!ATTLIST %Inventory.shelf.qname; location CDATA #IMPLIED %Inventory.Common.attrib; > <!ELEMENT %Inventory.item.qname; ( %Inventory.desc.qname;, %Inventory.sku.qname;, %Inventory.price.qname;) > <!ATTLIST %Inventory.item.qname; location CDATA #IMPLIED %Inventory.Common.attrib; >
<!ELEMENT %Inventory.desc.qname; ( #PCDATA ) > <!ATTLIST %Inventory.desc.qname; %Inventory.Common.attrib; >
<!ELEMENT %Inventory.sku.qname; ( #PCDATA ) > <!ATTLIST %Inventory.sku.qname; %Inventory.Common.attrib; >
<!ELEMENT %Inventory.price.qname; ( #PCDATA ) > <!ATTLIST %Inventory.price.qname; %Inventory.Common.attrib; >
<!-- end of inventory-1.mod -->
Подмодуль Qualified Names/Квалифицированные Имена
Сначала Вам нужно определить подмодуль квалифицированных имён (подмодуль это обычный файловый объект, который отделён таким образом, что он может быть вставлен в результирующее ОТД в соответствующей точке). Подмодуль квалифицированных имён конструируется с прохождением следующих этапов (где строка MODULE заменена на соответствующую строку нового модуля):
Определить объект параметра MODULE с префиксом, извещающим о том, используются ли элементы модуля с именами с префиксами ПИ XML, или нет. Значение по умолчанию этого объекта параметра должно быть "%NS.prefixed;". Объект параметра NS.prefixed определён каркасом XHTML как IGNORE по умолчанию и может использоваться в объекте документа для запуска (switch on) префиксирования для всех включённых пространств имён (в том числе и ПИ модулей XHTML).
Определить объект параметра MODULE.xmlns, содержащий идентификатор ПИ для этого модуля.
Определить объект параметра MODULE.prefix, содержащий строку префикса по умолчанию для использования при запущенном префиксировании (enabled).
Определить объект параметра MODULE.pfx, являющийся "%MODULE.prefix;:", если префиксирование запущено, и "" - если не запущено.
Определить объект параметра MODULE.xmlns.extra.attrib, содержащий объявление любых атрибутов ПИ XML для ПИмён, на которые ссылается данный модуль (напр., xmlns:xlink).
Если %MODULE.prefixed установлен в INCLUDE, этот атрибут должен включать также объявление xmlns:%MODULE.prefix;.
Определить объект параметра XHTML.xmlns.extra.attrib как MODULE.xmlns.extra.attrib. Обычно это переопределяется файлом драйвера типа документа, но если это не так, то данное определение принимается как определение по умолчанию.
Для каждого элемента, определённого модулем, создать объект параметра в форме "MODULE.NAME.qname", в котором будет содержаться квалифицированное имя. Значение этого объекта параметра обязано быть "%MODULE.pfx;NAME". Таким образом, разобранное значение будет "PREFIX:NAME", если префиксирование запущено, и "NAME" - в противном случае.
Если модуль добавляет атрибуты к элементам, определённым в модуле, не разделяющем (share) ПИ данного модуля, объявите эти атрибуты так, чтобы они использовали префикс %MODULE.pfx. Например:
<ENTITY % MODULE.img.myattr.qname "%MODULE.pfx;myattr" >
Пример подмодуля qname для гипотетического Inventory Module приведён ниже:
<!-- ...................................................................... --> <!-- Inventory Qname Module ................................................... --> <!-- file: inventory-qname-1.mod
PUBLIC "-//MY COMPANY//ELEMENTS XHTML Inventory Qnames 1.0//EN" SYSTEM "http://www.example.com/DTDs/inventory-qname-1.mod"
xmlns:inventory="http://www.example.com/xmlns/inventory" ...................................................................... -->
<!-- Объявляется значение по умолчанию для префиксирования элементов этого модуля --> <!-- Заметьте, штаа NS.prefixed будет переопределён в XHTML Framework или объектом документа. --> <!ENTITY % NS.prefixed "IGNORE" > <!ENTITY % Inventory.prefixed "%NS.prefixed;" >
<!-- Объявляется действующее ПИ данного модуля --> <!ENTITY % Inventory.xmlns "http://www.example.com/xmlns/inventory" >
<!-- Объявляется префикс по умолчанию для данного модуля --> <!ENTITY % Inventory.prefix "inventory" >
<!-- Объявляется префикс для данного модуля --> <![%Inventory.prefixed;[ <!ENTITY % Inventory.pfx "%Inventory.prefix;:" > ]]> <!ENTITY % Inventory.pfx "" >
<!-- Объявляется атрибут ПИ xml для данного модуля --> <![%Inventory.prefixed;[ <!ENTITY % Inventory.xmlns.extra.attrib "xmlns:%Inventory.prefix; %URI.datatype; #FIXED '%Inventory.xmlns;'" > ]]> <!ENTITY % Inventory.xmlns.extra.attrib "" >
<!-- Объявляется дополнительное ПИ. которое должно быть включено в элементы XHTML --> <!ENTITY % XHTML.xmlns.extra.attrib %Inventory.xmlns.extra.attrib; >
<!-- Теперь определяются квалифицированные имена для всех элементов модуля --> <!ENTITY % Inventory.shelf.qname "%Inventory.pfx;shelf" > <!ENTITY % Inventory.item.qname "%Inventory.pfx;item" > <!ENTITY % Inventory.desc.qname "%Inventory.pfx;desc" > <!ENTITY % Inventory.sku.qname "%Inventory.pfx;sku" > <!ENTITY % Inventory.price.qname "%Inventory.pfx;price" >
Построение модулей Схемы
Это приложение является нормативным.
Это приложение будет содержать инструкции о том, как определять модули Схемы XML, совместимые с реализациями Модуляризации XHTML, через Схему XML после того, когда XML Schema станет Рекомендациями W3C.
[] [] []
Правила Именования
Типы Документа Основного Языка XHTML обязаны придерживаться соглашений строгого именования, чтобы программы и пользователи могли сразу определять отношение типов документов и XHTML. Имена типов документов, реализуемых как типы документов XML, определяются через Formal Public Identifiers (FPI/Формальные Публичные Идентификаторы). Внутри FPI поля разделяются двойным слэшем (//).
Различные поля обязаны быть скомпонованы следующим образом:
Ведущее поле обязано быть "-" для обозначения приватно определённого ресурса.
Второе поле обязано содержать имя организации, ответственной за поддержку именованного объекта. Для этих имён организаций не существует формальной регистрации. Каждая организация должна определять (иметь) уникальное имя. Например, имя, используемое W3C, это W3C.
Третье поле содержит три конструкции: класс public text, после которого следует описание public text. Первая лексема третьего поля это класс public text, который должен придерживаться ISO 8879 Clause 10.2.2.1 Public Text Class. Только документы, соответствующие Основному Языку XHTML, должны начинать описание public text лексемой XHTML. Описание public text должно содержать строковой XHTML, если тип документа соответствует Integration Set/Интегрированному Набору. Поле обязано также содержать определённый организацией уникальный идентификатор (например, MyML 1.0). Этот идентификатор должен быть образован из уникального имени и идентификатора версии, который может обновляться по мере развития типа документа.
Четвёртое поле определяет язык, на котором объект разработан (например, EN).
При использовании этих правил, имя типа документа, соответствующего Основному Языку XHTML, может быть таким
-//MyCompany//DTD XHTML MyML 1.0//EN.
Имя модуля, соответствующего семейству XHTML, может быть
-//MyCompany//ELEMENTS XHTML MyElements 1.0//EN.
Имя типа документа, соответствующего XHTML Integration Set/Интегрированному Набору, может быть
-//MyCompany//DTD Special Markup with XHTML//EN.
Представление
<!-- ...................................................................... --> <!-- Модуль XHTML Presentation/Представление .............................. --> <!-- файл xhtml-pres-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-pres-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Элементы Представления
Этот модуль определяет элементы и их атрибуты для простой разметки, ориентированной на представление (документа). -->
<!ENTITY % xhtml-inlpres.module "INCLUDE" > <![%xhtml-inlpres.module;[ <!ENTITY % xhtml-inlpres.mod PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN" "xhtml-inlpres-1.mod" > %xhtml-inlpres.mod;]]>
<!ENTITY % xhtml-blkpres.module "INCLUDE" > <![%xhtml-blkpres.module;[ <!ENTITY % xhtml-blkpres.mod PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN" "xhtml-blkpres-1.mod" > %xhtml-blkpres.mod;]]>
<!-- конец xhtml-pres-1.mod -->
Пример определения абстрактного модуля
Этот раздел является информативным.
В этом разделе определён образец абстрактного модуля как пример использования преимуществ синтаксических правил, определённых выше.
Поскольку в этом примере сделана попытка использовать все определённые синтаксические элементы, он весьма сложен. Типичные определения модуля намного проще этого.
Наконец, обратите внимание, что этот модуль ссылается на коллекцию атрибутов Common. Это - коллекция, определённая в спецификации Модуляризации XHTML, включающая все базовые атрибуты, необходимые для большинства элементов.
Разработка ОТД (определений типа документа) в определённых и расширенных модулях
Содержание
E.1.
E.2.
E.3.
E.3.1.
E.3.2.
E.4.
E.4.1.
E.4.2.
E.4.3.
E.4.4.
E.5.
Этот раздел является информативным.
Главной целью определения модулей XHTML и общей методологией модуляризации является облегчение разработки типов документов на базе XHTML. Эти типы документов могут расширять XHTML путём интеграции дополнительных возможностей (например, ) или могут определять поднаборы XHTML для использования в специализированных устройствах.
В этом разделе описывается техника, которую дизайнеры типов документов обязаны применять, чтобы использовать преимущества реализации ОТД XML этой архитектуры модуляризации. Это достигается применением техники Модуляризации XHTML прогрессивно усложняющимися способами и созданием в результате сложного документа из различных модулей.
Заметьте, что эти примеры ни в коем случае не требуют модификации самих предоставляемых XHTML модулями файловых объектов. Объекты файла модуля XHTML полностью параметризованы, так что можно, с помощью раздельных определений модулей и файлов драйверов, установить определение и модель содержимого каждого элемента и каждой иерархии элементов.
Вспомним, наконец, что большинство пользователей XHTML не собираются быть авторами ОТД. Авторы ОТД - это, как правило, те, кто определяют специализированную разметку, улучшающую читабельность и упрощающую отображение документа или облегчающую обработку документов машиной, либо это дизайнеры клиентских приложений, которым необходимо определить специализированное ОТД для конкретного приложения.
Рассмотрим эти варианты:
Организация предоставляет подписчикам информацию через интерфейс Web. Эта организация хранит информацию о своих подписчиках в базе данных на основе XML. Один из способов передачи этой информации из БД в Web - внедрить записи XML из БД непосредственно в документ XHTML.
Поскольку можно просто внедрить эти записи, организация могла бы определить модуль ОТД, в котором описаны записи, присоединить этот модуль к ОТД XHTML и затем создать полное ОТД для страниц.
Эта организация может затем иметь доступ к данным в новых элементах через Document Object Model , проверять документы, предоставлять определения стилей для каскадируемых элементов, используя Cascading Style Sheets , и т.д. Затратив определённое время на определение структуры данных и создание ОТД, используя процессы, определённые в этом разделе, организация сможет реализовать все преимущества XML.
Разработчики клиентов Internet создают специализированное устройство. Это устройство будет поддерживать только поднабор XHTML и всегда будет иметь доступ к Internet через прокси-сервер, проверяющий содержимое перед тем, как передать его клиенту (для уменьшения обработки на стороне клиента возможных ошибок).
Чтобы удостовериться, что содержимое верно, разработчики создают ОТД, которое является поднабором XHTML, используя процессы, определённые в этом разделе.
Затем они используют новое ОТД на прокси-сервере и в своих новых устройствах, а также делают ОТД доступным для разработчиков содержимого, так что разработчики могут проверять своё содержимое перед тем, как открыть к нему доступ.
Выполнив несколько простых шагов, разработчики клиентов могут использовать определённую в этом документе архитектуру для значительного уменьшения усилий, необходимых для разработки ОТД и иметь уверенность, что эти клиенты полностью поддерживают подключённый поднабор XHTML.
Разработка Схемы с определёнными и расширенными модулями
Это приложение является нормативным.
Это приложение будет содержать инструкции о том, как определять в целом язык разметки, используя модули XHTML, через Схему XML после того, когда XML Schema станет Рекомендациями W3C.
[] [] []
Реализации модулей
Реализация модуля состоит из набора типов элементов, набора объявлений списка атрибутов и набора объявлений моделей содержимого, где любой из этих трёх наборов может быть пустым. Объявление списка атрибутов в модуле может модифицировать тип элемента вне типов элементов, определённых в модуле, а объявление модели содержимого может модифицировать тип элемента вне набора типов элементов модуля.
Одним из механизмов реализации являются ОТД XML. ОТД XML это способ описания структуры класса документов XML, в целом известного как тип документа XML.
ОТД XML описаны в Рекомендациях XML 1.0 .
Другим механизмом реализации является Схема XML .
Реализации модулей XHTML
Этот раздел содержит формальное определение каждого Абстрактного Модуля XHTML как модуля ОТД.
Реализации Модуля ОТД XHTML
Содержание
F.1.
F.1.1.
F.1.2.
F.1.3.
F.2.
F.2.1.
F.2.2.
F.2.3.
F.2.4.
F.2.5.
F.2.6.
F.3.
F.3.1.
F.3.2.
F.3.3.
F.3.4.
F.3.5.
F.3.6.
F.3.7.
F.3.8.
F.3.9.
F.3.10.
F.3.11.
F.3.12.
F.3.13.
F.3.14.
F.3.15.
F.3.16.
F.3.17.
F.3.18.
F.3.19.
F.3.20.
F.3.21.
F.4.
F.4.1.
F.4.2.
F.4.3.
F.4.4.
F.4.5.
F.4.6.
F.4.7.
F.4.8.
Это приложение является нормативным.
В этом приложении Вы найдёте реализации модулей, определённых в , через ОТД XML. Эти реализации модулей могут использоваться Типами Документов Семейства XHTML.
Реализации Модуля XHTML Schema
Это приложение является нормативным.
Это приложение будет содержать реализации модулей, определённых в , через Схему XML Schema после того, когда XML Schema станет Рекомендациями W3C.
[] [] []
Редактирование
<!-- ...................................................................... --> <!-- Модуль XHTML Editing Elements/Элементы Редактирования ............... --> <!-- файл xhtml-edit-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-edit-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Editing Markup 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod"
ревизии: (нет) ....................................................................... -->
<!-- Элементы Редактирования
ins, del
Этот модуль объявляет типы элементов и атрибуты, используемые для обозначения вставляемого и удаляемого содержимого при редактировании документа. -->
<!-- ins: Вставляемый Текст ............................... -->
<!ENTITY % ins.element "INCLUDE" > <![%ins.element;[ <!ENTITY % ins.content "( #PCDATA | %Flow.mix; )*" > <!ENTITY % ins.qname "ins" > <!ELEMENT %ins.qname; %ins.content; > <!-- end of ins.element -->]]>
<!ENTITY % ins.attlist "INCLUDE" > <![%ins.attlist;[ <!ATTLIST %; %Common.attrib; cite #IMPLIED datetime #IMPLIED > <!-- end of ins.attlist -->]]>
<!-- del: Удаляемый Текст ................................ -->
<!ENTITY % del.element "INCLUDE" > <![%del.element;[ <!ENTITY % del.content "( #PCDATA | %Flow.mix; )*" > <!ENTITY % del.qname "del" > <!ELEMENT %del.qname; %del.content; > <!-- end of del.element -->]]>
<!ENTITY % del.attlist "INCLUDE" > <![%del.attlist;[ <!ATTLIST %; %Common.attrib; cite #IMPLIED datetime #IMPLIED > <!-- end of del.attlist -->]]>
<!-- конец xhtml-edit-1.mod -->
Рекомендации W от апреля г.
Данная версия:
Последняя версия:
Предыдущая версия:
Редакторы:
,
,
,
,
,
, (бывшая Gateway)
Переводчик русской версии
©2001 ® (, , ), Все Права Зарезервированы.
W3C соблюдает все , права на марки, и .
Эти Рекомендации специфицируют абстрактную модуляризацию
Эти Рекомендации специфицируют абстрактную модуляризацию XHTML и реализации абстракции с использованием Определения Типа Документа (ОТД) XML.
Данная модуляризация предоставляет средства для создания поднаборов и расширений XHTML - это необходимо в будущем для расширения XHTML на появляющиеся платформы.
Серверные карты изображений
<!-- ...................................................................... --> <!-- Модуль XHTML Server-side Image Map .................................. --> <!-- файл xhtml-ssismap-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-ssismap-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod"
Ревизии: #2000-10-22: добавлено объявление 'ismap' в <input> ....................................................................... -->
<!-- Серверные Карты Изображений
Добавляется атрибут 'ismap' к элементам img и input для поддержки обработки на стороне сервера выбора пользователя. -->
<!ATTLIST %; ismap ( ismap ) #IMPLIED >
<!ATTLIST %; ismap ( ismap ) #IMPLIED >
<!-- конец xhtml-ssismap-1.mod -->
Скриптинг
<!-- ...................................................................... --> <!-- Модуль XHTML Document Scripting ..................................... --> <!-- файл xhtml-script-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-script-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Скриптинг
script, noscript
Этот модуль объявляет типы элементов и атрибуты, используемые для поддержки исполняемых скриптов, а также контейнера альтернативного содержимого там, где скрипты не поддерживаются. -->
<!-- script: Оператор Скриптинга ....................... -->
<!ENTITY % script.element "INCLUDE" > <![%script.element;[ <!ENTITY % script.content "( #PCDATA )" > <!ENTITY % script.qname "script" > <!ELEMENT %script.qname; %script.content; > <!-- end of script.element -->]]>
<!ENTITY % script.attlist "INCLUDE" > <![%script.attlist;[ <!ATTLIST %; %XHTML.xmlns.attrib; charset #IMPLIED type #REQUIRED src #IMPLIED defer ( defer ) #IMPLIED xml:space ( preserve ) #FIXED 'preserve' > <!-- end of script.attlist -->]]>
<!-- noscript: Альтернативное Бесскриптовое Содержимое ............. -->
<!ENTITY % noscript.element "INCLUDE" > <![%noscript.element;[ <!ENTITY % noscript.content "( %Block.mix; )+" > <!ENTITY % noscript.qname "noscript" > <!ELEMENT %noscript.qname; %noscript.content; > <!-- end of noscript.element -->]]>
<!ENTITY % noscript.attlist "INCLUDE" > <![%noscript.attlist;[ <!ATTLIST %; %Common.attrib; > <!-- end of noscript.attlist -->]]>
<!-- конец xhtml-script-1.mod -->
Смешивание нового модуля с модулями в XHTML
В дополнение к предыдущему примеру: чтобы подключить этот модуль в любом месте, где разрешена группа моделей содержимого %Flow.mix, может потребоваться записать нечто такое:
<!ENTITY % Misc.extra "| %MyModule.myelement.qname;" >
Поскольку класс моделей содержимого %Misc.extra используется в объекте параметра %Misc.class и этот объект параметра используется повсеместно в модулях XHTML, новый модуль становится доступным в расширенном типе документа XHTML.
Сочетаемость
Требования сочетаемости, перечисленные здесь, дают возможность удостовериться, что каркас модуляризации может выражать верный набор целевых модулей, необходимых для сообщества, обслуживаемого каркасом:
[R2.1] Каркас модуля должен давать возможность конструировать абстрактные модули XHTML 1.0.
[R2.2] Каркас модуля должен давать возможность конструировать абстрактные модули, максимально близкие к HTML 4.
[R2.3] Каркас модуля должен давать возможность конструировать абстрактные модули для других Рекомендаций W3C.
[R2.4] Каркас модуля должен давать возможность конструировать абстрактные модули для других типов документов XML.
[R2.5] Каркас модуля должен давать возможность конструировать абстрактные модули для большого количества профилей платформ.
Модуляризация XHTML
1.
1.1.
1.2.
1.3.
1.3.1.
1.3.2.
1.3.3.
1.3.4.
1.3.5.
2.
3.
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
4.
4.1.
4.2.
4.3.
4.4.
4.4.1.
5.
5.1.
5.2.
5.2.1.
5.2.2.
5.2.3.
5.2.4.
5.3.
5.4.
5.4.1.
5.4.2.
5.4.3.
5.5.
5.5.1.
5.5.2.
5.6.
5.6.1.
5.6.2.
5.7.
5.8.
5.9.
5.10.
5.11.
5.12.
5.13.
5.14.
5.15.
5.16.
5.17.
5.18.
5.19.
5.20.
5.21.
5.22.
A.
B.
C.
D.
D.1.
D.2.
D.2.1.
D.2.2.
D.2.3.
D.2.4.
E.
E.1.
E.2.
E.3.
E.3.1.
E.3.2.
E.4.
E.4.1.
E.4.2.
E.4.3.
E.4.4.
E.5.
F.
F.1.
F.1.1.
F.1.2.
F.1.3.
F.2.
F.2.1.
F.2.2.
F.2.3.
F.2.4.
F.2.5.
F.2.6.
F.3.
F.3.1.
F.3.2.
F.3.3.
F.3.4.
F.3.5.
F.3.6.
F.3.7.
F.3.8.
F.3.9.
F.3.10.
F.3.11.
F.3.12.
F.3.13.
F.3.14.
F.3.15.
F.3.16.
F.3.17.
F.3.18.
F.3.19.
F.3.20.
F.3.21.
F.4.
F.4.1.
F.4.2.
F.4.3.
F.4.4.
F.4.5.
F.4.6.
F.4.7.
F.4.8.
G.
G.1.
G.2.
H.
H.1.
H.1.1.
H.1.2.
H.1.3.
H.1.4.
H.1.5.
J.
Внимание !
Официальная нормативная версия этой спецификации возможна только на английском языке и находится по адресу:
Данный перевод НЕ является официальным документом W3C.
Все Авторские Права Принадлежат W3C.Данный документ может содержать ошибки перевода и опечатки.
[] []
Соглашения по синтаксису
Абстрактные модули не определяются формальной грамматикой. Однако определения должны придерживаться следующих соглашений по синтаксису. Эти соглашения похожи на соответствующие соглашения ОТД XML и должны быть знакомы авторам ОТД XML.
Каждый отдельный синтаксический элемент может комбинироваться с другими для составления более сложных выражений, соответствующих определённой здесь алгебре.
element name/имя элемента
Если элемент включён в модель содержимого, его точное имя будет включено в список.
content set/набор содержимого
Некоторые модули определяют точные списки имён элементов, называемые наборы содержимого. Когда набор содержимого включается в модель содержимого, его имя будет включено в список.
expr ?
Разрешается 0 или 1 объект expr.
expr +
Требуется 0 или 1 объект expr.
expr *
Разрешается 0 или более объектов expr.
a , b
Необходимо выражение a, после которого следует выражение b.
a | b
Необходимо выражение a или b.
a - b
Разрешается выражение a с пропуском элементов в выражении b.
круглые скобки
Если выражение заключено в скобки, вычисление любого субвыражения в скобках выполняется до вычисления выражения вне скобок (начиная с самого глубокого уровня вложения).
расширение предопределённых элементов
В некоторых случаях модуль добавляет атрибуты к элементу. В таких объектах после имени элемента следует амперсанд (&).
определение необходимых атрибутов
Если элемент требует наличия определения атрибута, то после имени этого атрибута следует звёздочка (*).
определение типа значений атрибута
Если в модуле определяется тип значения атрибута, это выполняется путём указания типа в круглых скобках после имени атрибута.
определение допустимых значений атрибута
Если модуль определяет допустимые значения атрибута, это выполняется путём точного указания допустимых значений (заключённых в кавычки), разделённых вертикальной чертой (|), внутри скобок после имени атрибута.
Если атрибут имеет значение по умолчанию, после этого значения следует звёздочка (*).
Если атрибут имеет фиксированное значение, после имени атрибута идёт знак равенства (=) и фиксированное значение, заключённое в кавычки.
Соответствие
Эффективность каркаса будет определяться также тем, несколько легко будет тестировать поведение модулей, разработанных в соответствии с каркасом, и тестировать документы, использующий эти модули для проверки:
[R5.1] Должна иметься возможность легализовать документы, сконструированные с использованием элементов и атрибутов из абстрактных модулей.
[R5.2] Должна иметься возможность явно описывать поведение элементов и атрибутов из абстрактных модулей.
[R5.3] Должна иметься возможность проверять поведение элементов и атрибутов из абстрактных модулей.
[R5.4] Должна иметься возможность проверять гибридные типы документа, такие, как тип документа XHTML.
[R5.5] Модули, определённые в соответствии с методами данного документа, не должны будут дублировать имена элементов или объектов параметров, определённых в модулях XHTML.
[] [] []
Соответствие Документа Семейства XHTML
Соответствующий документ семейства XHTML является верным объектом Соответствия Основного Языка Типа Документ XHTML (XHTML Host Language Conforming Document Type).
Соответствие Интеграционному Набору Типа Документа XHTML
Можно также определить тип документа, базирующийся на XHTML, но не придерживаясь его структуры. Такой тип документа является "XHTML Integration Set Conforming", если соответствует следующим критериям:
Тип документа обязан быть определён с использованием одного из методов реализации, определённого W3C. В настоящий момент они ограничены ОТД (Определение Типа Документа) XML, но XML Schema также будет вскоре доступна. Остальная часть этого раздела относится к "ОТД", хотя другие реализации также возможны.
ОТД, определяющее тип документа, обязано иметь уникальный идентификатор, как определено в , и НЕ использовать строку "XHTML" в своей первой лексеме публичного текстового описания.
ОТД, определяющее тип документа, обязано включать как минимум модули Hypertext, Text и List, определённые в данной спецификации.
Для каждого определённого W3C включаемого модуля все элементы, атрибуты, типы атрибутов (в том числе и любые необходимые списки перечисляемых значений) и любые необходимые модели минимального содержимого обязаны быть включены (и, возможно, расширены) в модель типа содержимого документа.
Если модели содержимого расширены, все элементы и атрибуты (вместе с их типами или любые необходимые списки перечисляемых значений), необходимые в оригинальной модели содержимого, обязаны остаться необходимыми.
ОТД, определяющее тип документа, может определять дополнительные элементы и атрибуты. Однако это обязано происходить в его собственном пространстве имён XML .
Соответствие Модуля Семейства XHTML
Эта спецификация определяет метод определения модулей, соответствующих XHTML.
Модуль соответствует этой спецификации, если отвечает следующим критериям:
Тип документа обязан быть определён с использованием одного из методов реализации, определённого W3C. В настоящий момент они ограничены ОТД (Определение Типа Документа) XML, но XML Schema также будет вскоре доступна. Остальная часть этого раздела относится к "ОТД", хотя другие реализации также возможны.
ОТД, определяющее тип документа, обязано иметь уникальный идентификатор, как определено в .
Если модуль определён с использованием ОТД XML, то он обязан изолировать имена параметров своих объектов путём использования уникальных префиксов или других подобных методов.
Определение модуля обязано иметь текстовое определение, описывающее синтаксические и семантические требования элементов, атрибутов и/или моделей содержимого, которые он объявляет.
Определение модуля обязано не использовать имена элементов, определённые в других определённых W3C модулях, за исключением случаев, когда модели содержимого и элементов идентичны оригинальным или расширяют их, или повторно используемые имена элементов находятся в их собственном пространстве имён (см. ниже).
Элементы и атрибуты определения модуля обязаны быть частью пространства имён XML .
Если модуль определён не W3C, а другой организацией, его пространство имён обязано НЕ быть тем же пространством имён, в котором определены другие модули W3C.
Соответствие Основного Языка Типа Документа XHTML
Имеется возможность модифицировать существующие типы документов или определить совершенно новые типы документов, используя модули, определённые в данной спецификации, и другие модули. Такой тип документа является "XHTML Host Language Conforming", если соответствует следующим критериям:
Тип документа обязан быть определён с использованием одного из методов реализации, определённого W3C. В настоящий момент они ограничены ОТД (Определение Типа Документа) XML, но XML Schema также будет вскоре доступна. Остальная часть этого раздела относится к "ОТД", хотя другие реализации также возможны.
ОТД, определяющее тип документа, обязано иметь уникальный идентификатор, как определено в , и использовать строку "XHTML" в своей первой лексеме публичного текстового описания.
ОТД, определяющее тип документа, обязано включать как минимум модули Structure, Hypertext, Text и List, определённые в данной спецификации.
Для каждого определённого W3C включаемого модуля все элементы, атрибуты, типы атрибутов (в том числе и любые необходимые списки перечисляемых значений) и любые необходимые модели минимального содержимого обязаны быть включены (и, возможно, расширены) в модель типа содержимого документа.
Если модели содержимого расширены, все элементы и атрибуты (вместе с их типами или любые необходимые списки перечисляемых значений), необходимые (REQUIRED) в оригинальной модели содержимого, обязаны остаться необходимыми.
ОТД, определяющее тип документа, может определять дополнительные элементы и атрибуты. Однако это обязано происходить в его собственном пространстве имён XML .
Соответствие Пользовательского Агента (ПА) Семейства XHTML
Соответствующий ПА обязан удовлетворять следующим критериям (как определено в ):
Чтобы следовать Рекомендациям XML 1.0 , ПА обязан разбирать и выполнять документ XHTML правильно сформированным. Если ПА объявлен как проверяющий ПА, он обязан также проверять документы относительно их ОТД в соответствии с .
Если ПА объявляет о поддержке возможностей, определённых в данной спецификации или требуемых данной спецификацией через нормативные ссылки, он обязан выполнять это способами, соответствующими определениям возможностей.
Когда ПА обрабатывает документ XHTML как общий (родовой) документ , он должен лишь распознавать атрибуты типа ID (напр., атрибут id
большинства элементов XHTML) как идентификаторы фрагмента.
Если ПА обнаруживает элемент, который он не в состоянии распознать, он обязан продолжить обработку потомков этого элемента. Если содержимым является текст, то текст обязан быть представлен (выведен) пользователю.
Если ПА обнаруживает атрибут, который он не в состоянии распознать, он обязан игнорировать всю спецификацию атрибута (т.е. атрибут и его значение).
Если ПА обнаруживает значение атрибута, которое он не в состоянии распознать, он обязан использовать значение по умолчанию данного атрибута.
Если ПА обнаруживает ссылку-мнемонику (отличную от предопределённых), для которой ПА не производит объявлений (что может случиться, если объявление находится во внешнем поднаборе, который ПА не может прочесть), то ссылка-мнемоника должна быть выведена как символы (начиная с амперсанда и заканчивая точкой с запятой), представляющие мнемонику.
При выводе содержимого, ПАгенты, обнаружившие символы или мнемоники, которые ими не распознаются, но не могут быть представлены, должны отобразить документ так, чтобы пользователю было понятно, что нормальное представление невозможно.
Пробел обрабатывается в соответствии со следующими правилами. Данные символы определены в как пробельные символы:
SPACE/пробел ( )
HORIZONTAL TABULATION/горизонтальная табуляция (	)
CARRIAGE RETURN/возврат каретки (
)
LINE FEED/прогон строки (
)
Процессор XML нормализует различные системные коды конца строки в единый символ LINE FEED, который и передаётся приложению.
ПА обязан обрабатывать пробельные символы в данных, полученных от процессора XML, следующим образом:
Все пробелы, окружающие блок элементов, должны быть удалены.
Комментарии полностью удаляются и не влияют на обработку пробелов. Одиночный пробельный символ с любой стороны комментария рассматривается как два пробельных символа.
Если атрибут 'xml:space' установлен в 'preserve', пробельные символы обязаны быть сохранены и последующие символы LINE FEED внутри блока обязаны не быть конвертированы.
Если атрибут 'xml:space' установлен в 'preserve', тогда:
Ведущие и ведомые пробелы внутри элемента блока обязаны быть удалены.
Символы LINE FEED обязаны быть конвертированы в один из следующих символов: SPACE, ZERO WIDTH SPACE (​) или ни в один из символов (т.е. удалены).
Выбор результирующего символа зависит от ПА и обусловлен свойствами письма (языка) символов до и после символа LINE FEED.
Последовательность пробелов без символов LINE FEED обязана быть редуцирована до символа SPACE.
Последовательность пробельных символов с одним или более символом LINE FEED обязана быть редуцирована таким же образом до символа SPACE.
Пробелы в значениях атрибутов обрабатываются в соответствии с .
Примечание (информативное): При определении того, как конвертировать символ LINE FEED, ПА должен рассмотреть следующие случаи, когда вид письма с любой стороны от LINE FEED определяет выбор замены. Символы ОБЩЕГО письма (такие как пунктуация) рассматриваются так же, как и письмо с другой стороны:
Если символы до и после LINE FEED принадлежат письму, в котором символ SPACE используется как разделитель слов, то символ LINE FEED должен быть конвертирован в символ SPACE. Примерами такого письма могут служить латиница, греческое и кириллица.
Если символы до и после LINE FEED принадлежат идеографическому письму или системе письма, в которой нет разделителя слов, то LINE FEED должен быть конвертирован в нулевой (пустой/никакой) символ. Примеры такого письма или системы письма - китайский, японский.
Если символы до и после LINE FEED принадлежат неидеографическому письму, в котором нет разделителя слов, LINE FEED должен быть конвертирован в символ ZERO WIDTH SPACE (​) или в нулевой (пустой/никакой) символ. Примеры такого письма -тайский, кхмерский.
Если условия с (1) по (3) неприменимы, то символ LINE FEED должен быть конвертирован в символ SPACE.
Техническое сообщение Unicode TR#24 (Script Names) предоставляет назначения имён скриптов всем символам.
Совместимость
Данный документ предназначен для того, чтобы каркас модуляризации, описанный здесь, хорошо работал с XML и другими стандартами, разрабатываемыми Рабочим Группами W3C:
[R4.1] Каркас модуля должен строго соответствовать Рекомендациям XML 1.0.
[R4.2] Каркас модуля должен быть совместимым со спецификацией XML Linking Language (XLink) .
[R4.3] Каркас модуля должен быть совместимым со спецификацией Associating Style Sheets with XML documents .
[R4.4] Каркас модуля должен быть способен воспринимать новые Рекомендации W3C, если это необходимо.
[R4.5] Каркас модуля не должен зависеть от ведущейся работы W3C.
[R4.6] Каркас модуля не должен зависеть от работы, выполняемой вне W3C.
Создание Модулей ОТД
Содержание
D.1.
D.2.
D.2.1.
D.2.2.
D.2.3.
D.2.4.
Этот раздел является нормативным.
Модули XHTML реализуются как фрагменты ОТД (Определения Типа Документа). Когда эти фрагменты ассемблируются особым образом (описано в ), результирующее ОТД является представлением полного типа документа. Это представление может затем быть использовано для проверки объектов типа документа.
Ключом для комбинирования этих фрагментов в понятное ОТД являются правила, используемые для определения фрагментов.
Данный раздел определяет эти правила. Если эти правила соблюдаются, авторы ОТД могут быть уверены, что их модули будут чётко взаимодействовать с другими XHTML-совместимыми модулями.
Модули, соответствующие этим правилам, должны также удовлетворять требованиям соответствия, определённым в , чтобы называться Модулями Семейства XHTML.
Создание нового ОТД
До сих пор примеры этого раздела описывали методы расширения XHTML и модели содержимого XHTML. Поскольку это уже выполнено, следующим шагом станет объединение модулей, составляющих ОТД, в единый драйвер ОТД, включающий новые определения так, что они соответствующим образом переопределяют и дополняют базовые определения XHTML.
Создание нового ОТД
Наконец, некоторые авторы ОТД захотят начать с нуля, используя сценарий Модуляризации XHTML в качестве набора утилит для построения нового языка разметки. Этот язык обязан быть построен с минимальным необходимым количеством модулей из XHTML. Он может также содержать другие определённые в XHTML модули или любые другие модули, которые автор хочет использовать.
В данном примере мы возьмём необходимые модули XHTML, добавим некоторые определённые в XHTML модули и добавим всё это в модуль, определённый нами выше.
Сначала нужно использовать предоставляемый XHTML для нового модуля квалифицированных имён, изменив его так, чтобы определить квалифицированные имена и пространство имён для наших новых элементов:
<!-- Файл myml-qname-1.mod -->
<!-- Вводим типы данных - мы используем PE URI.datatype для объявления атрибутов xmlns. --> <!ENTITY % MyML-datatypes.mod PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod" > %MyML-datatypes.mod;
<!-- По умолчанию отключаем префиксы в этом модуле --> <!ENTITY % NS.prefixed "IGNORE" > <!ENTITY % MyML.prefixed "%NS.prefixed;" >
<!-- Объявляем действующее пространство имён этого модуля --> <!ENTITY % MyML.xmlns "http://www.example.com/xmlns/myml" >
<!-- Объявляем префикс по умолчанию для этого модуля --> <!ENTITY % MyML.prefix "myml" >
<!-- Если пространство имён этого модуля с префиксами --> <![%MyML.prefixed;[ <!ENTITY % MyML.pfx "%MyML.prefix;:" > ]]> <!ENTITY % MyML.pfx "" >
<!-- Объявляем Объект Параметра/Parameter Entity (PE), определяющий любое внешнее пространство имён, используемое этим модулем --> <!ENTITY % MyML.xmlns.extra.attrib "" >
<!-- Объявляем PE, определяющий атрибуты xmlns для использования в MyML. --> <![%MyML.prefixed;[ <!ENTITY % MyML.xmlns.attrib "xmlns:%MyML.prefix; %URI.datatype; #FIXED '%MyML.xmlns;' %MyML.xmlns.extra.attrib;" > ]]> <!ENTITY % MyML.xmlns.attrib "xmlns %URI.datatype; #FIXED '%MyML.xmlns;' %MyML.xmlns.extra.attrib;" >
<!-- Убедитесь, что атрибуты пространства имён MyML включены в набор атрибутов XHTML --> <![%NS.prefixed;[ <!ENTITY % XHTML.xmlns.extra.attrib "%MyML.xmlns.attrib;" > ]]> <!ENTITY % XHTML.xmlns.extra.attrib "" > <!-- Теперь объявим имена элементов -->
<!ENTITY % MyML.myelement.qname "%MyML.pfx;myelement" > <!ENTITY % MyML.myotherelement.qname "%MyML.pfx;myotherelement" >
Затем определим модуль, который определяет элементы и атрибуты, используя предоставляемый XHTML :
<!-- ...................................................................... --> <!-- Модуль My Elements ................................................... --> <!-- Файл myml-elements-1_0.mod
PUBLIC "-//MY COMPANY//ELEMENTS XHTML MyML Elements 1.0//EN" SYSTEM "http://example.com/DTDs/myml-elements-1_0.mod"
xmlns:myml="http://example.com/DTDs/myml-1_0.dtd" ...................................................................... -->
<!-- Модуль My Elements
myelement myotherelement
Этот модуль не делает ничего, кроме предоставления структуры для некоторого содержимого PCDATA. -->
<!ELEMENT %MyML.myelement.qname; ( #PCDATA | %MyML.myotherelement.qname; )* > <!ATTLIST %MyML.myelement.qname; myattribute CDATA #IMPLIED %MyML.xmlns.attrib; >
<!ELEMENT %MyML.myotherelement.qname; EMPTY > <!ATTLIST %MyML.myotherelement.qname; %MyML.xmlns.attrib; >
<!ENTITY % MyML.img.myattr.qname "%MyML.pfx;myattr" > <!ATTLIST %img.qname; %MyML.img.myattr.qname; CDATA #IMPLIED %MyML.xmlns.attrib; >
<!-- конец myml-elements-1_0.mod -->
Теперь построим описание модели содержимого, которое "прицепляет" новые элементы и атрибуты к другим элементам XHTML.
Следующий пример скопирован по образцу модели содержимого XHTML Basic, но является законченным самостоятельным модулем модели содержимого:
<!-- ...................................................................... --> <!-- Модуль MyML Model .................................................... --> <!-- Файл myml-model-1.mod
PUBLIC "-//MY COMPANY// ELEMENTS XHTML MyML Model 1.0//EN" SYSTEM "http://example.com/DTDs/myml-model-1_0.mod"
xmlns:myml="http://www.example.com/xmlns/myml" ...................................................................... -->
<!-- Определяем модель содержимого для Misc.extra --> <!ENTITY % Misc.class "| %MyML.myelement.qname; ">
<!-- .................... Инлайн-элементы ...................... -->
<!ENTITY % HeadOpts.mix "( %meta.qname; )*" >
<!ENTITY % I18n.class "" >
<!ENTITY % InlStruct.class "%br.qname; | %span.qname;" >
<!ENTITY % InlPhras.class "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname; | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname; | %abbr.qname; | %acronym.qname; | %q.qname;" >
<!ENTITY % InlPres.class "" >
<!ENTITY % Anchor.class "| %a.qname;" >
<!ENTITY % InlSpecial.class "| %img.qname; " >
<!ENTITY % Inline.extra "" >
<!-- %Inline.class; включает все инлайн-элементы, используемые вместе как компонент --> <!ENTITY % Inline.class "%InlStruct.class; %InlPhras.class; %InlPres.class; %Anchor.class; %InlSpecial.class;" >
<!-- %InlNoAnchor.class; включает все инлайн не-якоря, используемые вместе как компонент --> <!ENTITY % InlNoAnchor.class "%InlStruct.class; %InlPhras.class; %InlPres.class; %InlSpecial.class;" >
<!-- %InlNoAnchor.mix; включает все инлайн не-якоря --> <!ENTITY % InlNoAnchor.mix "%InlNoAnchor.class; %Misc.class;" >
<!-- %Inline.mix; включает все инлайн элементы, в том числе и %Misc.class; --> <!ENTITY % Inline.mix "%Inline.class; %Misc.class;" >
<!-- ..................... Элементы Блока ...................... -->
<!ENTITY % Heading.class "%h1.qname; | %h2.qname; | %h3.qname; | %h4.qname; | %h5.qname; | %h6.qname;" >
<!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" >
<!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" >
<!ENTITY % BlkPhras.class "| %pre.qname; | %blockquote.qname; | %address.qname;" >
<!ENTITY % BlkPres.class "" >
<!ENTITY % Block.extra "" >
<!-- %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;" >
<!-- специальная модель содержимого для элемента pre --> <!ENTITY % pre.content "( #PCDATA | %Inline.class; )*" >
<!-- конец myml-model-1.mod -->
Наконец, используем предоставляемый XHTML для нового ОТД, изменённый соответствующим образом для нашего нового языка разметки:
<!-- ....................................................................... --> <!-- ОТД MYML ............................................................. --> <!-- Файл myml-1_0.dtd -->
<!-- Это драйвер ОТД для myml 1.0.
Используйте этот FPI для его идентификации:
"-//MY COMPANY//DTD XHTML MYML 1.0//EN"
А это пространство имён для уникальных элементов myml:
xmlns:myml="http://www.example.com/xmlns/myml" --> <!ENTITY % XHTML.version "-//MY COMPANY//DTD XHTML MYML 1.0//EN" >
<!-- резервируется для использования с профилями документа --> <!ENTITY % XHTML.profile "" >
<!-- Сообщаем каркасу об использовании нашего модуля квалифицированных имён как дополнительного драйвера qname --> <!ENTITY % xhtml-qname-extra.mod SYSTEM "myml-qname-1.mod" >
<!-- Определяем Модель Содержимого для использования каркасом --> <!ENTITY % xhtml-model.mod SYSTEM "myml-model-1.mod" >
<!-- Отключаем поддержку двунаправленного текста --> <!ENTITY % XHTML.bidi "IGNORE" >
<!-- Вводим в Каркас XHTML --> <!ENTITY % xhtml-framework.mod PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod" > %xhtml-framework.mod;
<!-- Модуль Basic Text (необходим) ............................... --> <!ENTITY % xhtml-text.mod PUBLIC "-//W3C//ELEMENTS XHTML Basic Text 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod" > %xhtml-text.mod;
<!-- Модуль Hypertext (необходим) ................................. --> <!ENTITY % xhtml-hypertext.mod PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod" > %xhtml-hypertext.mod;
<!-- Модуль Lists (необходим) .................................... --> <!ENTITY % xhtml-list.mod PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod" > %xhtml-list.mod;
<!-- Модуль My Elements ........................................ --> <!ENTITY % MyML-elements.mod SYSTEM "myml-elements-1.mod" > %MyML-elements.mod;
<!-- Модуль XHTML Images ........................................ --> <!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;
<!-- Модуль Document Metainformation ............................ --> <!ENTITY % xhtml-meta.mod PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod" > %xhtml-meta.mod;
<!-- Модуль Document Structure (необходим) ....................... --> <!ENTITY % xhtml-struct.mod PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod" > %xhtml-struct.mod;
Создание ОТД путём расширения 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;
Создание ОТД путём удаления и замены модулей XHTML
Другой способ использования авторами модулей ОТД XHTML - это определение ОТД, являющегося поднабором семейства типа документа XHTML (поскольку, например, существуют утилиты или программы, поддерживающие только поднабор XHTML). Это будет лишь немного сложнее, чем в предыдущем примере. Базовые шаги таковы:
Взять ОТД семейства XHTML как базу нового типа документа (мы будем использовать XHTML 1.1).
Выбрать модули для удаления из этого ОТД.
Определить новое ОТД, которое "IGNOREs/ИГНОРИРУЕТ" модули.
Ввести некоторые новые модули.
Например, рассмотрим устройство, использующее модули XHTML, но без форм или таблиц. ОТД для такого устройства может выглядеть так:
<!-- Файл xhtml-simple.dtd --> <!ENTITY % xhtml-form.module "IGNORE" > <!ENTITY % xhtml-table.module "IGNORE" > <!ENTITY % xhtml-table.module "IGNORE" >
<!-- Вводим модуль базовых таблиц --> <!ENTITY % xhtml-basic-table.mod PUBLIC "-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-basic-table-1.mod" > %xhtml-basic-table.mod; <!ENTITY % xhtml11.mod PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" > %xhtml11.mod;
Заметьте, что это не изменяет ОТД модели содержимого XHTML 1.1. Однако, поскольку XML игнорирует элементы моделей содержимого, которые не определены, элементы форм и таблиц автоматически удаляются из этой модели.
Создание простого ОТД
Используя простой предыдущий пример, можно определить новое ОТД, которое использует и довольно легко расширяет модули 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;
<!-- Объявляем действующее пространство имён этого модуля --> <!ENTITY % SimpleML.xmlns "http://www.example.com/xmlns/simpleml1" >
<!-- По умолчанию делаем недоступным (отключаем) использование префиксов нового модуля --> <!ENTITY % NS.prefixed "IGNORE" > <!ENTITY % SimpleML.prefixed "%NS.prefixed;" >
<!-- Префикс по умолчанию для элементов и атрибутов модуля --> <!ENTITY % SimpleML.prefix "simpleml" >
<!-- Если пространство имён этого модуля с префиксами --> <![%SimpleML.prefixed;[ <!ENTITY % SimpleML.pfx "%SimpleML.prefix;:" > ]]> <!ENTITY % SimpleML.pfx "" >
<![%SimpleML.prefixed;[ <!ENTITY % SimpleML.xmlns.extra.attrib "xmlns:%SimpleML.prefix; %URI.datatype; #FIXED '%SimpleML.xmlns;'" > ]]> <!ENTITY % SimpleML.xmlns.extra.attrib "" >
<!ENTITY % XHTML.xmlns.extra.attrib "%SimpleML.xmlns.extra.attrib;" > <!-- Устанавливаем модель содержимого для нашего языка --> <!ENTITY % xhtml-model.mod SYSTEM "simpleml-model-1.mod" >
<!-- В завершение, устанавливаем базовое ОТД xhtml --> <!ENTITY % xhtml-basic.dtd PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd" > %xhtml-basic.dtd;
При использовании этого ОТД имеется возможность включить использование префиксов пространства имён XML. Для этого начало документа, использующего это новое ОТД, может выглядеть так:
<!DOCTYPE html SYSTEM "simpleml-1_0.dtd" [ <!ENTITY % SimpleML.prefixed "INCLUDE"> ]> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:simpleml="http://www.example.com/xmlns/simpleml1" > <head> <title>Пример, использующий значения по умолчанию.</title> </head> <body> <p>Это содержимое в пространстве имён XHTML.</p> <simpleml:element> Это содержимое в пространстве имён SimpleML. <simpleml:otherelement /> </simpleml:element> <p><img src="missing" alt="Missing image" simpleml:myattr="value"/></p> </body> </html>
Специальные символы XHTML
<!-- ...................................................................... --> <!-- Совместимый с XML ISO Special Character Entity Set для XHTML ......... --> <!-- файл xhtml-special.ent
Типичный вызов:
<!ENTITY % xhtml-special PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "xhtml-special.ent" > %xhtml-special;
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-special.ent"
Ревизия: $Id: xhtml-special.ent,v 4.1 2001/04/10 09:34:14 altheim Exp $ SMI
Portions (C) International Organization for Standardization 1986: Разрешение на копирование в любой форме даётся для использования с соответствующими системами SGML и приложениями, как определено в ISO 8879, с учётом того, что это объявление будет включено во все копии.
Ревизия: 2000-10-28: добавлен ' и изменён XML Predefined Entities для совместимости -->
<!-- Даётся соответствующий набор мнемоник ISO, если это не вновь введённые имена. Новые имена (т.е. не из списка ISO 8879 [SGML]) не конфликтуют с любыми существующими мнемониками ISO 8879. Цифровые мнемоники ISO 10646 [ISO10646] даются для каждого символа в 16-ричном представлении. Значения мнемоник являются 10-ричными конверсиями значений ISO 10646 и относятся к набору символов документа. Имена являются именами Unicode [UNICODE]. -->
<!-- C0 Controls and Basic Latin --> <!ENTITY lt "&<" ><!-- меньше чем, U+003C ISOnum --> <!ENTITY gt ">" ><!-- больше чем, U+003E ISOnum --> <!ENTITY amp "&" ><!-- амперсанд, U+0026 ISOnum --> <!ENTITY apos "'" ><!-- апостроф, U+0027 ISOnum --> <!ENTITY quot """ ><!-- кавычка, U+0022 ISOnum -->
<!-- Latin Extended-A --> <!ENTITY OElig "Œ" ><!-- латинская заглавная лигатура OE, U+0152 ISOlat2 --> <!ENTITY oelig "œ" ><!-- латинская лигатура oe, U+0153 ISOlat2 -->
<!-- лигатура это неверное название, в некоторых языках это отдельный символ --> <!ENTITY Scaron "Š" ><!-- латинская заглавная S с крючком, U+0160 ISOlat2 --> <!ENTITY scaron "š" ><!-- латинская s с крючком, U+0161 ISOlat2 --> <!ENTITY Yuml "Ÿ" ><!-- латинская заглавная Y с двоеточием, U+0178 ISOlat2 -->
<!-- Модификаторы букв --> <!ENTITY circ "ˆ" ><!-- акцент "птичка", U+02C6 ISOpub --> <!ENTITY tilde "˜" ><!-- малая тильда, U+02DC ISOdia -->
<!-- General Punctuation --> <!ENTITY ensp " " ><!-- en space, U+2002 ISOpub --> <!ENTITY emsp " " ><!-- em space, U+2003 ISOpub --> <!ENTITY thinsp " " ><!-- thin space, U+2009 ISOpub --> <!ENTITY zwnj "‌" ><!-- zero width non-joiner, U+200C NEW RFC 2070 --> <!ENTITY zwj "‍" ><!-- zero width joiner, U+200D NEW RFC 2070 --> <!ENTITY lrm "‎" ><!-- слева-направо, U+200E NEW RFC 2070 --> <!ENTITY rlm "‏" ><!-- справа-налево, U+200F NEW RFC 2070 --> <!ENTITY ndash "–" ><!-- en тире, U+2013 ISOpub --> <!ENTITY mdash "—" ><!-- em тире, U+2014 ISOpub --> <!ENTITY lsquo "‘" ><!-- левая одиночная угловая кавычка, U+2018 ISOnum --> <!ENTITY rsquo "’" ><!-- правая одиночная угловая кавычка, U+2019 ISOnum --> <!ENTITY sbquo "‚" ><!-- одиночная low-9 кавычка, U+201A NEW --> <!ENTITY ldquo "“" ><!-- левая двойная кавычка, U+201C ISOnum --> <!ENTITY rdquo "”" ><!-- правая двойная кавычка, U+201D ISOnum --> <!ENTITY bdquo "„" ><!-- двойная low-9 кавычка, U+201E NEW --> <!ENTITY dagger "†" ><!-- кинжал, U+2020 ISOpub --> <!ENTITY Dagger "‡" ><!-- двойной кинжал, U+2021 ISOpub --> <!ENTITY permil "‰" ><!-- промилле, U+2030 ISOtech -->
<!-- lsaquo предложен, но ещё не стандартизован ISO --> <!ENTITY lsaquo "‹" ><!-- одиночная левая угл. кавычка, U+2039 предложен ISO --> <!-- rsaquo предложен, но ещё не стандартизован ISO --> <!ENTITY rsaquo "›" ><!-- одиночная правая угл. кавычка, U+203A предложен ISO --> <!ENTITY euro "€" ><!-- евро, U+20AC НОВЫЙ -->
<!-- конец xhtml-special.ent -->
Ссылки
Содержание
G.1.
G.2.
Это приложение является нормативным.
Статус этого документа
Этот раздел описывает статус документа на момент публикации. Другие документы могут заменять этот документ.
Статус самых последних документов отслеживается наW3C.
Этот документ просмотрен Членами W3C и другими заинтересованными сторонами и утверждён Директором как Рекомендации W3C. Это постоянный документ, и он может использоваться как справочный материал или для цитирования из других документов как нормативный справочник. Роль W3C в составлении Рекомендаций заключается в том, чтобы привлечь внимание к данной спецификации и способствовать её широкому распространению. Это увеличит функциональность и возможности Web.
Этот документ создан как часть и (). Цели и задачи HTML Working Group обсуждаются в . Основной контактёр W3C по работе над HTML - .
Список текущих Рекомендаций W3C и другая техническая документация находятся по адресу
.
Публичная дискуссия о возможностях HTML проходит в списках рассылки
().
Чтобы подписаться, вышлите email на со словом subscribe в строке subject.
Пожалуйста, сообщайте об ошибках, обнаруженных в этом документе, по адресам:
()
и (переводчик русской версии).
Структура
<!-- ...................................................................... --> <!-- XHTML Structure/Модуль Структуры XHTML .............................. --> <!-- файл xhtml-struct-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-struct-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Document Structure/Структура Документа
title, head, body, html
Модуль Structure определяет главные структурные элементы и их атрибуты.
Заметьте, что модель содержимого типа элемента head переобъявлена, когда Base Module включён в ОТД.
Объект параметра, содержащий значение URI пространства имён XML, используемого для XHTML, это '%XHTML.xmlns;', определённый в модуле Qualified Names/Квалифицированные Имена. -->
<!-- title: Заголовок Документа ............................. -->
<!-- Элемент title не рассматривается как часть текущего текста. Он должен отображаться, например, как шапка документа или заголовок окна. В документе может быть только один title. -->
<!ENTITY % title.element "INCLUDE" > <![%title.element;[ <!ENTITY % title.content "( #PCDATA )" > <!ENTITY % title.qname "title" > <!ELEMENT %title.qname; %title.content; > <!-- end of title.element -->]]>
<!ENTITY % title.attlist "INCLUDE" > <![%title.attlist;[ <!ATTLIST %; %XHTML.xmlns.attrib; %I18n.attrib; > <!-- end of title.attlist -->]]>
<!-- head: "Шапка" Документа ............................... -->
<!ENTITY % head.element "INCLUDE" > <![%head.element;[ <!ENTITY % head.content "( %HeadOpts.mix;, %title.qname;, %HeadOpts.mix; )" > <!ENTITY % head.qname "head" > <!ELEMENT %head.qname; %head.content; > <!-- end of head.element -->]]>
<!ENTITY % head.attlist "INCLUDE" > <![%head.attlist;[ <!-- зарезервирован для будущего использования с профилями документов --> <!ENTITY % profile.attrib "profile '%XHTML.profile;'" >
<!ATTLIST %; %XHTML.xmlns.attrib; %I18n.attrib; %profile.attrib; > <!-- end of head.attlist -->]]>
<!-- body: Тело Документа ............................... -->
<!ENTITY % body.element "INCLUDE" > <![%body.element;[ <!ENTITY % body.content "( %Block.mix; )+" > <!ENTITY % body.qname "body" > <!ELEMENT %body.qname; %body.content; > <!-- end of body.element -->]]>
<!ENTITY % body.attlist "INCLUDE" > <![%body.attlist;[ <!ATTLIST %; %Common.attrib; > <!-- end of body.attlist -->]]>
<!-- html: Элемент "Документ" XHTML ...................... -->
<!ENTITY % html.element "INCLUDE" > <![%html.element;[ <!ENTITY % html.content "( %head.qname;, %body.qname; )" > <!ENTITY % html.qname "html" > <!ELEMENT %html.qname; %html.content; > <!-- end of html.element -->]]>
<!ENTITY % html.attlist "INCLUDE" > <![%html.attlist;[ <!-- значение атрибута версии, определённое в драйвере --> <!ENTITY % XHTML.version.attrib "version #FIXED '%XHTML.version;'" >
<!-- см. в модуле Qualified Names информацию о том, как расширить XHTML, используя пространства имён XML --> <!ATTLIST %; %XHTML.xmlns.attrib; %XHTML.version.attrib; %I18n.attrib; > <!-- end of html.attlist -->]]>
<!-- конец xhtml-struct-1.mod -->
Таблица стилей
<!-- ...................................................................... --> <!-- Модуль XHTML Document Style Sheet ................................... --> <!-- файл xhtml-style-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-style-1.mod,v 4.1 2001/04/05 06:57:40 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//DTD XHTML Style Sheets 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Таблица Стилей
style
Этот модуль объявляет тип элемента style element type и его атрибуты, используемы для внедрения информации таблицы стилей в элемент head документа. -->
<!-- style: Информация Таблицы Стилей .................... -->
<!ENTITY % style.element "INCLUDE" > <![%style.element;[ <!ENTITY % style.content "( #PCDATA )" > <!ENTITY % style.qname "style" > <!ELEMENT %style.qname; %style.content; > <!-- end of style.element -->]]>
<!ENTITY % style.attlist "INCLUDE" > <![%style.attlist;[ <!ATTLIST %; %XHTML.xmlns.attrib; %title.attrib; %I18n.attrib; type #REQUIRED media #IMPLIED xml:space ( preserve ) #FIXED 'preserve' > <!-- end of style.attlist -->]]>
<!-- конец xhtml-style-1.mod -->
Таблицы
<!-- ...................................................................... --> <!-- Модуль XHTML Table .................................................. --> <!-- файл xhtml-table-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-table-1.mod,v 4.1 2001/04/10 09:42:30 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Таблицы
table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td
Этот модуль определяет типы элементов и атрибуты для разметки таблиц, сходной с HTML 4, включая улучшенную доступность для невизуальных пользовательских агентов. -->
<!-- объявляет квалифицированные имена типов элементов: --> <!ENTITY % table.qname "table" > <!ENTITY % caption.qname "caption" > <!ENTITY % thead.qname "thead" > <!ENTITY % tfoot.qname "tfoot" > <!ENTITY % tbody.qname "tbody" > <!ENTITY % colgroup.qname "colgroup" > <!ENTITY % col.qname "col" > <!ENTITY % tr.qname "tr" > <!ENTITY % th.qname "th" > <!ENTITY % td.qname "td" >
<!-- Атрибут frame специфицирует, какая часть фрэйма таблицы должна отображаться. Значения - не те же, что в CALS, для исключения конфликтов имён с атрибутом valign. --> <!ENTITY % frame.attrib "frame ( void | above | below | hsides | lhs | rhs | vsides | box | border ) #IMPLIED" >
<!-- Атрибут rules определяет, какие линии прорисовать между ячейками:
Если rules отсутствует, тогда принимается:
"none", если border отсутствует или border="0", иначе - "all" --> <!ENTITY % rules.attrib "rules ( none | groups | rows | cols | all ) #IMPLIED" >
<!-- атрибуты горизонтального выравнивания для содержимого ячеек --> <!ENTITY % CellHAlign.attrib "align ( left | center | right | justify | char ) #IMPLIED char #IMPLIED charoff #IMPLIED" >
<!-- атрибуты вертикального выравнивания для содержимого ячеек --> <!ENTITY % CellVAlign.attrib "valign ( top | middle | bottom | baseline ) #IMPLIED" >
<!-- scope проще, чем атрибут axes для обычных таблиц --> <!ENTITY % scope.attrib "scope ( row | col | rowgroup | colgroup ) #IMPLIED" >
<!-- table: Элемент "Таблица" .............................. -->
<!ENTITY % table.element "INCLUDE" > <![%table.element;[ <!ENTITY % table.content "( %caption.qname;?, ( %col.qname;* | %colgroup.qname;* ), (( %thead.qname;?, %tfoot.qname;?, %tbody.qname;+ ) | ( %tr.qname;+ )))" > <!ELEMENT %table.qname; %table.content; > <!-- end of table.element -->]]>
<!ENTITY % table.attlist "INCLUDE" > <![%table.attlist;[ <!ATTLIST %; %Common.attrib; summary #IMPLIED width #IMPLIED border #IMPLIED %frame.attrib; %rules.attrib; cellspacing #IMPLIED cellpadding #IMPLIED > <!-- end of table.attlist -->]]>
<!-- caption: Заголовок Таблицы ............................ -->
<!ENTITY % caption.element "INCLUDE" > <![%caption.element;[ <!ENTITY % caption.content "( #PCDATA | %Inline.mix; )*" > <!ELEMENT %caption.qname; %caption.content; > <!-- end of caption.element -->]]>
<!ENTITY % caption.attlist "INCLUDE" > <![%caption.attlist;[ <!ATTLIST %; %Common.attrib; > <!-- end of caption.attlist -->]]>
<!-- thead: "Шапка" Таблицы ............................... -->
<!-- Используйте thead для дублирования шапок при разрыве таблицы по границам страниц или для статических шапок, если разделы tbody выводятся в прокручиваемой панели. -->
<!ENTITY % thead.element "INCLUDE" > <![%thead.element;[ <!ENTITY % thead.content "( %tr.qname; )+" > <!ELEMENT %thead.qname; %thead.content; > <!-- end of thead.element -->]]>
<!ENTITY % thead.attlist "INCLUDE" > <![%thead.attlist;[ <!ATTLIST %; %Common.attrib; %CellHAlign.attrib; %CellVAlign.attrib; > <!-- end of thead.attlist -->]]>
<!-- tfoot: Футер Таблицы ............................... -->
<!-- Используйте tfoot для дублирования футеров при разрыве таблицы по границам страниц или для статических футеров, если разделы tbody выводятся в прокручиваемой панели. -->
<!ENTITY % tfoot.element "INCLUDE" > <![%tfoot.element;[ <!ENTITY % tfoot.content "( %tr.qname; )+" > <!ELEMENT %tfoot.qname; %tfoot.content; > <!-- end of tfoot.element -->]]>
<!ENTITY % tfoot.attlist "INCLUDE" > <![%tfoot.attlist;[ <!ATTLIST %; %Common.attrib; %CellHAlign.attrib; %CellVAlign.attrib; > <!-- end of tfoot.attlist -->]]>
<!-- tbody: "Тело" Таблицы ................................. -->
<!-- Используйте несколько разделов tbody, если необходимы линии между группами рядов таблицы. -->
<!ENTITY % tbody.element "INCLUDE" > <![%tbody.element;[ <!ENTITY % tbody.content "( %tr.qname; )+" > <!ELEMENT %tbody.qname; %tbody.content; > <!-- end of tbody.element -->]]>
<!ENTITY % tbody.attlist "INCLUDE" > <![%tbody.attlist;[ <!ATTLIST %; %Common.attrib; %CellHAlign.attrib; %CellVAlign.attrib; > <!-- end of tbody.attlist -->]]>
<!-- colgroup: Группа Столбцов Таблицы ...................... -->
<!-- colgroup группирует набор элементов col. Позволяет группировать несколько семантически связанных столбцов. -->
<!ENTITY % colgroup.element "INCLUDE" > <![%colgroup.element;[ <!ENTITY % colgroup.content "( %col.qname; )*" > <!ELEMENT %colgroup.qname; %colgroup.content; > <!-- end of colgroup.element -->]]>
<!ENTITY % colgroup.attlist "INCLUDE" > <![%colgroup.attlist;[ <!ATTLIST %; %Common.attrib; span '1' width #IMPLIED %CellHAlign.attrib; %CellVAlign.attrib; > <!-- end of colgroup.attlist -->]]>
<!-- col: Столбец Таблицы ................................. -->
<!-- элементы col определяют свойства выравнивания для ячеек одного или более столбцов.
Атрибут width специфицирует ширину столбцов, например:
width="64" ширина в пикселах экрана width="0.5*" относительная ширина 0.5
Атрибут span вызывает применение атрибутов одного элемента col к более чем одному столбцу. -->
<!ENTITY % col.element "INCLUDE" > <![%col.element;[ <!ENTITY % col.content "EMPTY" > <!ELEMENT %col.qname; %col.content; > <!-- end of col.element -->]]>
<!ENTITY % col.attlist "INCLUDE" > <![%col.attlist;[ <!ATTLIST %; %Common.attrib; span '1' width #IMPLIED %CellHAlign.attrib; %CellVAlign.attrib; > <!-- end of col.attlist -->]]>
<!-- tr: Table Row ..................................... -->
<!ENTITY % tr.element "INCLUDE" > <![%tr.element;[ <!ENTITY % tr.content "( %th.qname; | %td.qname; )+" > <!ELEMENT %tr.qname; %tr.content; > <!-- end of tr.element -->]]>
<!ENTITY % tr.attlist "INCLUDE" > <![%tr.attlist;[ <!ATTLIST %; %Common.attrib; %CellHAlign.attrib; %CellVAlign.attrib; > <!-- end of tr.attlist -->]]>
<!-- th: Заголовочная Ячейка Таблицы ............................. -->
<!-- th - для заголовочных ячеек, td - для данных, а для ячеек, работающих и так, и так, использовать td -->
<!ENTITY % th.element "INCLUDE" > <![%th.element;[ <!ENTITY % th.content "( #PCDATA | %Flow.mix; )*" > <!ELEMENT %th.qname; %th.content; > <!-- end of th.element -->]]>
<!ENTITY % th.attlist "INCLUDE" > <![%th.attlist;[ <!ATTLIST %; %Common.attrib; abbr #IMPLIED axis CDATA #IMPLIED headers IDREFS #IMPLIED %scope.attrib; rowspan '1' colspan '1' %CellHAlign.attrib; %CellVAlign.attrib; > <!-- end of th.attlist -->]]>
<!-- td: Ячейка Данных ............................... -->
<!ENTITY % td.element "INCLUDE" > <![%td.element;[ <!ENTITY % td.content "( #PCDATA | %Flow.mix; )*" > <!ELEMENT %td.qname; %td.content; > <!-- end of td.element -->]]>
<!ENTITY % td.attlist "INCLUDE" > <![%td.attlist;[ <!ATTLIST %; %Common.attrib; abbr #IMPLIED axis CDATA #IMPLIED headers IDREFS #IMPLIED %scope.attrib; rowspan '1' colspan '1' %CellHAlign.attrib; %CellVAlign.attrib; > <!-- end of td.attlist -->]]>
<!-- конец xhtml-table-1.mod -->
Target/Целевой
<!-- ...................................................................... --> <!-- Модуль XHTML Target ................................................. --> <!-- файл xhtml-target-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-target-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Target 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-target-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Target
target
Этот модуль определяет атрибут 'target', используемый при открытии окна -->
<!-- выводить в данном фрэйме --> <!ENTITY % FrameTarget.datatype "CDATA" >
<!-- добавить атрибут 'target' к элементу 'a' --> <!ATTLIST %; target #IMPLIED >
<!-- добавить атрибут 'target' к элементу 'area' --> <!ATTLIST %; target #IMPLIED >
<!-- добавить атрибут 'target' к элементу 'link' --> <!ATTLIST %; target #IMPLIED >
<!-- добавить атрибут 'target' к элементу 'form' --> <!ATTLIST %; target #IMPLIED >
<!-- добавить атрибут 'target' к элементу 'base' --> <!ATTLIST %; target #IMPLIED >
<!-- конец xhtml-target-1.mod -->
Текст
<!-- ...................................................................... --> <!-- Модуль XHTML Text/Текст ................................................... --> <!-- файл xhtml-text-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. ревизия: $Id: xhtml-text-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Текстовое Содержимое
Модуль Text включает объявления для всех элементов ядра - контейнеров текста - и их атрибутов. -->
<!ENTITY % xhtml-inlstruct.module "INCLUDE" > <![%xhtml-inlstruct.module;[ <!ENTITY % xhtml-inlstruct.mod PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN" "xhtml-inlstruct-1.mod" > %xhtml-inlstruct.mod;]]>
<!ENTITY % xhtml-inlphras.module "INCLUDE" > <![%xhtml-inlphras.module;[ <!ENTITY % xhtml-inlphras.mod PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN" "xhtml-inlphras-1.mod" > %xhtml-inlphras.mod;]]>
<!ENTITY % xhtml-blkstruct.module "INCLUDE" > <![%xhtml-blkstruct.module;[ <!ENTITY % xhtml-blkstruct.mod PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN" "xhtml-blkstruct-1.mod" > %xhtml-blkstruct.mod;]]>
<!ENTITY % xhtml-blkphras.module "INCLUDE" > <![%xhtml-blkphras.module;[ <!ENTITY % xhtml-blkphras.mod PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN" "xhtml-blkphras-1.mod" > %xhtml-blkphras.mod;]]>
<!-- конец xhtml-text-1.mod -->
Термины и Определения
Этот раздел является информативным.
В то время как многие термины определены в месте использования, следующие определения используются по всей спецификации. Настоятельно советуем хорошо ознакомиться с Рекомендациями W3C XML 1.0 .
abstract module/абстрактный модуль
объединение спецификаций типов документов, относящихся к отдельному типу содержимого, которое (объединение) относится к конструкции разметки, отражающей этот отдельный тип.
content model/модель содержимого
объявленная структура разметки, допустимая в объектах данного типа элемента. XML 1.0 различает два типа: элементы, содержащие только содержимое элемента (не символьные данные), и элементы смешанного содержимого (элементы, которые могут содержать символьные данные, иногда перемежаемые необязательными дочерними элементами). Последние характеризуются спецификацией содержимого, начинающейся строкой "#PCDATA" (обозначающей символьные данные).
document model/модель документа
эффективная структура и ограничения данного типа документа. Модель документа образует абстрактное представление физических или семантических структур класса документов.
document type/тип документа
класс документов, разделяющих общие абстрактные структуры. Определение ISO 8879 таково: "класс документов, имеющих сходные характеристики; например, газета, статья, технический справочник или памятная записка. (4.102)"
document type definition (DTD)/определение типа документа (ОТД)
формальное, читаемое машиной выражение правил структуры и синтаксиса XML, которым объект документа специфического типа документа обязан соответствовать; тип схемы документа в XML 1.0 для легализации соответствия объекта документа его заявленному типу документа. Одна и та же модель разметки может быть выражена различными ОТД.
driver/драйвер
обычно небольшой файл, используемый для объявления и установки модулей ОТД. Хорошим тоном считается, если драйвер ОТД не содержит объявлений разметки, составляющих любую часть модели документа.
element/элемент
объект (данного) типа элемента.
element type/тип элемента
определение элемента, то есть контейнер для отдельного семантического класса содержимого документа.
entity/объект
объект это логическая или физическая единица хранения содержимого документа. Объекты могут состоять из разбираемой разметки XML или символьных данных или неразбираемого (т.е. не-XML, возможно - нетекстового) содержимого. Содержимое объекта может быть определено полностью в объекте документа ("внутренние объекты") или вне объекта документа ("внешние объекты"). В разобранных объектах замещающий текст может содержать ссылки на другие объекты.
entity reference/ссылка на объект
строка-мнемоника, используемая в качестве ссылки на содержимое объявленного объекта (напр., "&" для "&", "<" для "<", "©" для "©".)
generic identifier/общий идентификатор
имя, идентифицирующее тип элемента. Также имя типа элемента.
hybrid document/гибридный документ
документ, использующий более одного пространства имён XML. Гибридные документы могут быть определены как документы, содержащие элементы или атрибуты из типов гибридных документов.
instantiate/установить
заместить ссылку на объект на объект с объявленным содержимым.
markup declaration/объявление разметки
синтаксическая конструкция в ОТД, объявляющая объект или определяющая структуру разметки.
В ОТД XML есть 4 специфических типа: объявление объекта определяет связи между мнемоническим символом и его замещающим содержимым; объявление элемента указывает, какой тип элемента может появляться как потомок элемента (см. также модель содержимого); объявление списка определений атрибута определяет набор атрибутов для данного типа элемента и может также устанавливать ограничения типа и значения по умолчанию; объявление нотации определяет связи между именем нотации и внешним идентификатором, ссылающимся на формат неразобранного объекта.
markup model/модель разметки
словарь разметки (т.е. гамма имён элементов и атрибутов , нотаций и т.д.) и грамматика (т.е. описание использования словаря), как определено в определении типа документа (т.е. схема). Модель разметки это конкретное представление модели документа в синтаксисе разметки, и она может быть определена различными уровнями строгого соответствия. Одна и та же модель документа может быть выражена различными моделями разметки.
module/модуль
абстрактная единица модели документа, выраженная как фрагмент ОТД, используемая для объединения объявлений разметки для увеличения гибкости, изменяемости, возможности повторного использования и разборчивости специфических логических или семантических структур.
modularization/модуляризация
реализация модели модуляризации; процесс составления или деления ОТД путём разделения объявлений разметки на модули или группы для поддержки специфических целей. Модули не могут или могут существовать как отдельные файловые объекты (т.е. физические и логические структуры ОТД могут зеркально отражать друг друга, но такого требования не существует).
modularization model/модель модуляризации
абстрактный дизайн определения типа документа (ОТД) для поддержки целей модуляризации, таких как возможность повторного использования, расширяемость, экспрессивность, лёгкость документирования, уменьшение размера кода, целостность и интуитивность использования.
Важно отметить, что модель модуляризации диаметрально противоположна модели документа, которую описывает, поэтому эти две совершенно различные модели модуляризации могут описывать один и тот же документ.
parameter entity/объект параметра
объект, область использования которого - пролог документа (т.е. внешний поднабор/ОТД или внутренний поднабор). Объекты параметров не допускаются в объекте документа.
parent document type/родительский тип документа
тип родительского документа в гибридном документе является типом документа корневого элемента.
tag/тэг
конструкция разметки, ограничивающая начало и конец (включая общий идентификатор и другие атрибуты) элемента.
[] [] []
Типы атрибутов
В некоторых случаях необходимо определять типы значений атрибутов или точный набор допустимых значений атрибутов. Следующие типы атрибутов (определённые в Рекомендациях XML 1.0) используются в определениях абстрактных модулей:
CDATA | Символьные данные. |
ID | Идентификатор, уникальный в пределах документа. |
IDREF | Ссылка на идентификатор, уникальный в пределах документа. |
IDREFS | Список разделённых пробелами ссылок на идентификаторы, уникальные в пределах документа. |
NAME | Имя с теми же ограничениями на вводимые символы, что и предыдущий ID. |
NMTOKEN | Имя, составленное исключительно из лексем имён, как определено в XML 1.0 . |
NMTOKENS | Одно или более разделённых пробелами значений NMTOKEN. |
PCDATA | Обрабатываемые символьные данные. |
В дополнение к этим предопределённым типам данных, Модуляризация XHTML определяет следующие типы данных и их семантику:
Character | Одиночный символ из . | |
Charset | Набор символов, как в . | |
Charsets | Список разделённых пробелами наборов символов (кодировок), как в . | |
Color | Значение атрибута типа "Color" относится к определению цвета, как специфицировано в [SRGB]. Значение цвета может быть 16-ричным числом (с префиксом из знака #) или одним из следующих 16 названий цвета. Названия цвета чувствительны к регистру. |
Black = "#000000" | Green = "#008000" | |||
Silver = "#C0C0C0" | Lime = "#00FF00" | |||
Gray = "#808080" | Olive = "#808000" | |||
White = "#FFFFFF" | Yellow = "#FFFF00" | |||
Maroon = "#800000" | Navy = "#000080" | |||
Red = "#FF0000" | Blue = "#0000FF" | |||
Purple = "#800080" | Teal = "#008080" | |||
Fuchsia = "#FF00FF" | Aqua = "#00FFFF" |
Таким образом, значения цвета "#800080" и "Purple" оба относятся к пурпурному цвету.
Тип содержимого, как в . | |
ContentTypes | Список разделённых запятыми типов содержимого, как в . |
Coords | Список разделённых запятыми координат, используемых при определении областей. |
Datetime | Информация о дате и времени. |
FPI | Символьная строка, представляющая SGML Formal Public Identifier (формальный публичный идентификатор). |
FrameTarget | Имя фрэйма, используемого в качестве целевого для результата определённых действий. |
LanguageCode | Код языка, как в . |
Length | Размер. Значение может быть в пикселах или в процентах от доступного вертикального или горизонтального пространства. Таким образом, значение "50%" означает половину доступного пространства. |
LinkTypes |
Значение LinkTypes ссылается на список разделённых пробелами типов ссылок. Пробелы внутри типов ссылок не допускаются.
Эти типы ссылок чувствительны к регистру, т.е. "Alternate" - это то же самое, что и "alternate".
Пользовательские агенты (ПА), поисковые машины и т.п. могут интерпретировать эти типы ссылок по-разному. Например, ПА могут предоставлять доступ к связанным документам через навигационную панель.
Alternate/Альтернативный
Означает замещающие версии документа, в котором находится ссылка. При использовании вместе с атрибутом hreflang
подразумевает переведённую версию документа. При использовании вместе с атрибутом media подразумевает версию, разработанную для другого носителя.
Stylesheet/Таблица стилей
Ссылается на внешнюю таблицу стилей. См. детали в . Используется вместе с типом ссылки "Alternate" в переключаемых пользователем альтернативных таблицах стилей.
Start/Старт
Ссылается на первый документ в коллекции документов. Этот тип ссылки сообщает поисковым машинам, какой документ рассматривается автором в качестве стартового документа коллекции.
Next/Следующий
Ссылается на следующий документ в линеарной последовательности документов. ПА могут выбрать предзагрузку документа "next", чтобы уменьшить время предполагаемой загрузки.
Prev/Пред(ыдущий) Ссылается на предыдущий документ в упорядоченной серии документов. Некоторые ПА также поддерживают синоним "Previous". Contents/Содержание Ссылается на документ, служащий в качестве оглавления. Некоторые ПА также поддерживают синоним ToC (от "Table of Contents"). Index/Индекс Ссылается на документ - индекс текущего документа. Glossary/Словарь Ссылается на документ - справочник терминов, относящихся к текущему документу. Copyright/Авторские права Ссылается на запись об авторских правах на текущий документ. Chapter/Глава Ссылается на документ, служащий в качестве главы в коллекции документов. Section/Раздел Ссылается на документ, служащий в качестве раздела в коллекции документов. Subsection/Подраздел Ссылается на документ, служащий в качестве подраздела в коллекции документов. Appendix/Приложение Ссылается на документ, служащий в качестве приложения в коллекции документов. Help/Помощь Ссылается на документ, предлагающий помощь (более подробную информацию, ссылки на другие информационные ресурсы и т.д.) Bookmark/Закладка Ссылается на закладку. Закладка это ссылка на определённую точку в расширенном документе. Атрибут title может использоваться, например, для пометки закладки. Заметьте, что в документе может быть определено несколько закладок.
screen
Подразумевается нестраничный экран компьютера.
tty
Предназначен для носителей, использующих фиксированную символьную решётку, таких как телетайпы, терминалы или портативные устройства с ограниченными возможностями экрана.
tv
Предназначен для устройств типа телевизора (низкое разрешение, цвет, ограниченные возможности прокрутки изображения).
projection
Предназначен для проекторов.
handheld
Предназначен для миниатюрных ручных устройств (маленький экран, монохромный, растровая графика, ограниченные частотные характеристики).
Предназначен для страничных непрозрачных материалов и документов, просматриваемых на экране в режиме предварительного просмотра для печати.
braille
Предназначен для осязательных брайль-устройств.
aural
Предназначен для речевых синтезаторов.
all
Подходит для всех устройств.
В будущих версиях XHTML могут быть введены новые значения и могут быть разрешены параметризованные значения. Для облегчения процесса введения этих расширений соответствующие ПА обязаны быть способны разбирать значения атрибута media следующим образом:
Значением является список разделённых запятыми вхождений. Например,
media="screen, 3d-glasses, print and resolution > 90dpi"
отображается в:
"screen" "3d-glasses" "print and resolution > 90dpi"
Каждое вхождение усекается сразу перед первым символом, не являющимся буквой US ASCII [a-zA-Z] (ISO 10646 hex 41-5a, 61-7a), цифрой [0-9] (hex 30-39) или дефисом-минусом (hex 2d). В примере это даёт:
"screen" "3d-glasses" "print"
Нечувствительный к регистру подбор выполняется затем с набором типов носителя, определённым выше. ПА могут игнорировать несовпадающие вхождения. В примере останутся screen и print.
Примечание. Таблицы стилей могут включать медиа-зависимые вариации (например, конструкция CSS @media). В таких случаях лучше будет использовать "media =all".
MultiLengths | Список разделённых запятыми элементов типа . |
Number | Одна или более цифр. |
Pixels | Значение - целое число, представляющее количество пикселов канвы (экрана, листа). Таким образом, значение "50" это 50 пикселов. См. нормативную информацию об определении пиксела в . |
Script | Данные скрипта могут быть содержимым элемента "script" и значением атрибутов внутренних событий. ПА обязаны не разбирать данные скрипта как разметку HTML, а обязаны, вместо этого, передавать их как данные машине скриптов. Чувствительность к регистру данных скрипта зависит от языка скриптов. Обратите внимание, что данные скрипта, являющиеся содержимым элемента, не могут содержать символьных ссылок, а данные скрипта, являющиеся значением атрибута - могут содержать их. |
Shape | Очертания (форма) области. |
Text | Произвольные текстовые данные, как правило - на человеческом языке. |
URI | Uniform Resource Identifier (Универсальный Идентификатор Ресурса), как в . |
URIs | Список разделённых пробелами Uniform Resource Identifiers, как в . |
Типы данных XHTML
<!-- ...................................................................... --> <!-- Модуль XHTML Datatypes ............................................... --> <!-- Файл xhtml-datatypes-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-datatypes-1.mod,v 4.1 2001/04/06 19:23:32 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Datatypes
определяет контейнеры для следующих типов данных, многие из которых импортированы из других спецификаций и стандартов. -->
<!-- Размер определён для полей/заполнения ячеек -->
<!-- nn для пикселов или nn% для процентных значений --> <!ENTITY % Length.datatype "CDATA" >
<!-- список разделённых пробелами типов ссылок --> <!ENTITY % LinkTypes.datatype "NMTOKENS" >
<!-- одиночный или список разделённых запятыми дескрипторов носителя --> <!ENTITY % MediaDesc.datatype "CDATA" >
<!-- пикселы, проценты или относительные --> <!ENTITY % MultiLength.datatype "CDATA" >
<!-- одна или более цифр (NUMBER) --> <!ENTITY % Number.datatype "CDATA" >
<!-- целое число, представляющее размер в пикселах --> <!ENTITY % Pixels.datatype "CDATA" >
<!-- выражение скрипта --> <!ENTITY % Script.datatype "CDATA" >
<!-- текстовое содержимое --> <!ENTITY % Text.datatype "CDATA" >
<!-- Импортированные Типы Данных ................................ -->
<!-- одиночный символ из [ISO10646] --> <!ENTITY % Character.datatype "CDATA" >
<!-- кодировка символов, как в [RFC2045] --> <!ENTITY % Charset.datatype "CDATA" >
<!-- список разделённых пробелами кодировок символов, как в [RFC2045] --> <!ENTITY % Charsets.datatype "CDATA" >
<!-- Спецификация цвета с использованием имени цвета или значений sRGB (#RRGGBB) --> <!ENTITY % Color.datatype "CDATA" >
<!-- тип носителя, как в [RFC2045] --> <!ENTITY % ContentType.datatype "CDATA" >
<!-- список разделённых запятыми типов носителя, как в [RFC2045] --> <!ENTITY % ContentTypes.datatype "CDATA" >
<!-- информация о дате и времени, формат даты ISO --> <!ENTITY % Datetime.datatype "CDATA" >
<!-- формальный публичный идентификатор, как в [ISO8879] --> <!ENTITY % FPI.datatype "CDATA" >
<!-- код языка, как в [RFC3066] --> <!ENTITY % LanguageCode.datatype "NMTOKEN" >
<!-- Uniform Resource Identifier, см.[URI] --> <!ENTITY % URI.datatype "CDATA" >
<!-- список разделённых пробелами Uniform Resource Identifiers, см. [URI] --> <!ENTITY % URIs.datatype "CDATA" >
<!-- конец xhtml-datatypes-1.mod -->
Типы содержимого
Определения абстрактных модулей определяют минимальные, атомарные модели содержимого для каждого модуля. Эти минимальные модели содержимого ссылаются на элементы в самом модуле.
Они могут также ссылаться на элементы в других модулях, от которых абстрактный модуль зависит.
Наконец, модель содержимого во многих случаях требует, чтобы текст допускался как содержимое для одного или более элементов. В этих случаях символ, используемый в тексте, является PCDATA. Это - термин, определённый в Рекомендациях XML 1.0, который относится к обработке символьных данных. Тип содержимого может также быть определён как EMPTY, что означает: элемент не имеет содержимого в своей модели минимального содержимого.
Требования
Цели дизайна из предыдущего раздела ведут к появлению большого количества требований к каркасу модуляризации. Эти требования, обобщённые в данном разделе, могут в дальнейшем быть классифицированы в соответствии с основными описанными возможностями каркаса.
Внутренние события
<!-- ...................................................................... --> <!-- Модуль XHTML Intrinsic Events ....................................... --> <!-- файл xhtml-events-1.mod
Это XHTML, переформулирование HTML как модульного приложения XML. Авторские Права 1998-2001 W3C (MIT, INRIA, Keio), Все Права Зарезервированы. Ревизия: $Id: xhtml-events-1.mod,v 4.1 2001/04/10 09:42:30 altheim Exp $ SMI
Этот модуль ОТД идентифицируется идентификаторами PUBLIC и SYSTEM:
PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN" SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-events-1.mod"
Ревизии: (нет) ....................................................................... -->
<!-- Атрибуты Внутренних Событий
Это атрибуты событий, определённые в HTML 4, Section 18.2.3 "Intrinsic Events". Этот модуль обязан быть установлен перед модулем Attributes, но после модуля Datatype в модуле Modular Framework.
"Примечание: Советуем авторам документов HTML, чтобы изменения происходили в сфере действия внутренних событий (напр., связывать скрипты с событиями). Исследования в этой области выполняются членами W3C Document Object Model Working Group (см. Web-сайт W3C http://www.w3.org/)." --> <!-- ПРИМЕЧАНИЕ: Поскольку объявления ATTLIST в этом модуле появляются перед их соответствующими объявлениями ELEMENT в других модулях, может существовать зависимость от этого модуля, что должно учитываться, если какой-либо объект параметра используется для переобъявленных имён типов элементов (напр., %a.qname;). -->
<!ENTITY % Events.attrib "onclick #IMPLIED ondblclick #IMPLIED onmousedown #IMPLIED onmouseup #IMPLIED onmouseover #IMPLIED onmousemove #IMPLIED onmouseout #IMPLIED onkeypress #IMPLIED onkeydown #IMPLIED onkeyup #IMPLIED" >
<!-- дополнительные атрибуты элемента anchor --> <!ATTLIST %; onfocus #IMPLIED onblur #IMPLIED >
<!-- дополнительные атрибуты элемента form --> <!ATTLIST %; onsubmit #IMPLIED onreset #IMPLIED >
<!-- дополнительные атрибуты элемента label --> <!ATTLIST %; onfocus #IMPLIED onblur #IMPLIED >
<!-- дополнительные атрибуты элемента input --> <!ATTLIST %; onfocus #IMPLIED onblur #IMPLIED onselect #IMPLIED onchange #IMPLIED >
<!-- дополнительные атрибуты элемента select --> <!ATTLIST %; onfocus #IMPLIED onblur #IMPLIED onchange #IMPLIED >
<!-- дополнительные атрибуты элемента textarea --> <!ATTLIST %; onfocus #IMPLIED onblur #IMPLIED onselect #IMPLIED onchange #IMPLIED >
<!-- дополнительные атрибуты элемента button --> <!ATTLIST %; onfocus #IMPLIED onblur #IMPLIED >
<!-- дополнительные атрибуты элемента body --> <!ATTLIST %; onload #IMPLIED onunload #IMPLIED >
<!-- дополнительные атрибуты элемента area --> <!ATTLIST %; onfocus #IMPLIED onblur #IMPLIED >
<!-- конец xhtml-events-1.mod -->
Введение
Содержание
1.1.
1.2.
1.3.
1.3.1.
1.3.2.
1.3.3.
1.3.4.
1.3.5.
Этот раздел является информативным.