--PAGE_BREAK--
xmlns: isbn='urn: ISBN: 0-395-36341-6' xml: lang=«ru» lang=«ru»>
На десятку дешевле
1568491379
Можно также найти в сети.
2.3 Конформность пользовательских агентов Конформный пользовательский агент должен соответствовать всем следующим критериям:
Для соответствия рекомендации XML 1.0 [XML] пользовательский агент должен разбирать документ XHTML и оценивать его правильность. Если пользовательский агент выполняет проверку на правильность, он должен также проверять документы на соответствие с DTD, на которые они ссылаются, в соответствии с [XML] .
Если пользовательский агент поддерживает возможности, определенные в настоящей спецификации или обязательные согласно нормативной ссылке, он должен это делать в соответствии со способами, описанными в определении этой возможности.
Если пользовательский агент обрабатывает документ XHTML как общий документ XML, он должен распознавать только атрибуты типа ID (например, атрибут id большинства элементов XHTML) в качестве идентификаторов фрагментов.
Если пользовательский агент встречает элемент, который он не распознает, он должен сгенерировать содержимое элемента.
Если пользовательский агент встречает атрибут, который он не распознает, он должен проигнорировать всю спецификацию атрибута (т.е. атрибут и его значение).
Если пользовательский агент встречает значение атрибута, которое он не распознает, он должен использовать значение атрибута по умолчанию.
Если пользовательский агент встречает ссылку на объект (отличный от заранее определенных объектов), для которой он не обрабатывал объявления (что могло произойти, если объявление расположено во внешнем подмножестве, которое пользовательский агент не прочел), ссылка на объект должна генерироваться в виде символов (начиная с амперсанда и заканчивая точкой с запятой), составляющий ее.
Во время генерации содержимого пользовательские агенты, если они встречают распознаваемые, но негенерируемые символы или ссылки на символьные объекты, должны представлять документ таким образом, чтобы пользователю было понятно, что корректная генерация была невозможна.
Следующие символы определены в [XML] как пробельные:
пробел ( )
табуляция ( )
возврат каретки (
)
перевод строки (
)
Процессор XML приводит коды конца строки, различные в различных в системах, в одному символу перевода строки, который передается в приложение. Пользовательский агент XHTML, кроме того, должен обрабатывать как пробельные следующие символы:
перевод страницы ()
пробел нулевой ширины ()
В элементах, в которых для атрибута 'xml: space' установлено значение 'divserve', пользовательский агент должен сохранять все пробельные символы (за исключением начальных и конечных пробельных символов, которые должны удаляться). В противном случае пробелы должны обрабатываться по следующим правилам:
Все пробельные символы, окружающие элементы блока, должны удаляться.
Комментарии удаляются полностью и не влияют на обработку пробелов. Один пробельный символ в начале и в конце комментария обрабатывается как два пробела.
Начальные и конечные пробельные символы внутри элемента блока должны быть удалены.
Символы перевода строки в элементе блока должны быть преобразованы в пробел (если для атрибута 'xml: space' не установлено значение 'divserve').
Последовательность пробельных символов должна сокращаться до одного пробела (если для атрибута 'xml: space' не установлено значение 'divserve').
Относительно воспроизведения, пользовательский агент должен генерировать содержимое подходящим для языка, на котором оно написано, способом. В языках, основным написанием которых является латиница, символ пробела набора ASCII обычно используется для кодирования грамматических границ слов и типографских пробелов; в языках, основное написание которых связано с алфавитом нагари (например, в санскрите, тайском и т.д.), грамматические границы между словами могут кодироваться с помощью символа пробела набора ZW, но в генерируемом выводе они обычно не представляются типографскими пробелами; в языках с арабским написанием типографские пробелы могут кодироваться с помощью символа пробела, а также с помощью символа пробела набора ZW для отделения 'внутренних' грамматических границ (то, что для русского человека выглядит в арабском языке, как одно слово, часто может быть несколькими словами, например, 'kitAbuhum' = 'kitAbu-hum' = 'книга их' == их книга); а в языках с китайским написанием традиционно не кодируются ни пробелы между словами, ни типографские пробелы.
Структура XHTML-документа.
Любой XHTML-файл состоит из трех разделов — тега , заголовка () и тела документа (). Последние два элемента перекочевали из HTML и ничем не отличаются от своего родоначальника (пример 1).
Пример 1. Простейший XHTML документ.
! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" «www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd»>
Тег сообщает браузеру о типе текущего документа и как его интерпретировать. Различают несколько версий и типов XHTML-документов, они приведены в табл.1.
Табл.1. Версии XHTML и допустимые типы документа
XHTML 1.0 Strict
Используется в том случае, если в документе идет четкое разделение оформления и содержания. При этом код веб-страницы содержит только теги разметки, а сам вид элементов задается через стили (пример 2).
Пример 2. Документ со строгой разметкой
… …
XHTML 1.0 Transitional
Обычно применяется, когда правило разделения оформления и содержания выполняется не в полной мере. В этом случае допускается в коде документа использовать теги физического проектирования (например, тег ) и лишь частично стили. В примере 3 показан вид тега для подобных документов.
Пример 2.3 «Переходный» документ
! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" «www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd»> … …
XHTML 1.0 Frameset
Применяется, когда окно браузера делится на два или более фрейма (пример 4).
Пример 4. Документ с фреймами
… …
Тег хотя и обязателен, но не является непосредственной частью XHTML-документа, поэтому для него закрывающего тега не требуется.
XHTML 1.1
Является старшей версией «строгого» XHTML (пример 5).
Пример 5. XHTML 1.1
… …
Шаблон документа XHTML Strict
Тег является корневым для остальных элементов веб-страницы и располагается сразу после определения типа документа . Поскольку тип документа может быть любым, а не только тем, что приведен в табл.1, то необходимо дать понять браузеру, что он имеет дело со спецификой XHTML. Для чего в тег добавляется параметр xmlns.
Замечание:
Хотя параметр xmlns в теге и считается обязательным, но валидатор не выдает ошибки, если xmlns отсутствует.
Также в контейнере требуется наличие заголовка . Таким образом, минимальный XHTML-документ с метатегом, устанавливающим кодировку веб-страницы, показан в примере 2.6
Пример 6. Шаблон XHTML-документа
Новый документ
3. Будущее HTML Задачей XHTML 1.0 был переход HTML на свойственный XML словарь. Эта спецификация ввела ограничения синтаксиса XML в HTML: регистрозависимость, принудительное заключение в двойные кавычки значений атрибутов и симметричные тэги. Таким образом XHTML 2.0 пытается решить проблемы HTML как языка для разметки web-страниц.
В своей презентации на конференции XTech 2005 в Амстердаме, сотрудник W3C Стивен Пембертон (Steven Pemberton) выразил цели проекта XHTML 2.0:
Использовать XML везде, где это возможно: Если функция языка уже существует в XML, она не дублируется и не проектируется повторно;
Сначала структура, затем представление: Благодаря таблицам стилей CSS больше нет необходимости в явно презентационных тэгах в HTML;
Сделать HTML проще в написании: Устранить некоторые бесполезные идиосинкразии HTML;
Больше доступности, аппаратной независимости: Сделать столько предположений, сколько возможно, о способе, которым документ будет прочитан;
Улучшенная интернационализация;
Улучшенные формы: Необходимые давно назревшие усовершенствования!
Снизить необходимость использования сценариев: Включить типичные применения сценариев в синтаксис самого HTML;
Улучшенная семантика: Упростить интеграцию HTML с семантическими web-приложениями.
Разделы и параграфы.
Я испытываю некоторое удивление по поводу текстовых структурных элементов этого языка. Зачем нужны шесть уровней заголовков, и в какой ситуации можно было бы применить их все? Итак, почему бы заголовкам каким-либо образом не включать разделы, которые они озаглавливают? У XHTML 2.0 есть ответ на этот вопрос благодаря новым элементам и (заголовок):
Level 1 heading
…
Level 1 heading
...
Это более логичное структурирование, чем в XHTML 1.0, и оно будет ближе пользователям многих других словарей. Одно из существенных преимуществ для программистов заключается в том, что они смогут включать разделы материалов прямо в документ, при этом не нужно переделывать номера уровней заголовков.
После этого для заголовков можно использовать стили CSS. Хотя ожидается, что реализация XHTML 2.0 в браузерах по умолчанию будет включать кое-что из описанного здесь как предварительно заданные параметры, но если написать их явным образом, они могут выглядеть примерно так (если абстрагироваться от спецификации XHTML 2.0):
h {font-family: sans-serif; font-weight: bold; font-size: 200%}
section h {font-size: 150%} /* Заголовок второго уровня */
section section h {font-size: 120%} /* Заголовок третьего уровня */
Еще одно логическое несоответствие в XHTML 1.0 заключается в том, что необходимо закрыть абзац, чтобы использовать список. По сути, абзацы следует закрывать для использования любых блочных элементов (блоков цитат, преформатированных разделов, таблиц и т.д.). Поступать так не всегда логично, если материал может вполне правомерно использоваться как часть одного абзаца. XHTML 2.0 устраняет это ограничение. Единственное, чего нельзя делать — это помещать один абзац в другой.
Изображения.
Тэг в HTML на самом деле имеет довольно ограниченную гибкость. Как отмечает Пембертон, он не предоставляет никакого механизма нейтрализации ошибки, за исключением альтернативного текста alt (что препятствует утверждению новых форматов изображения), текст в тэгах alt нельзя разметить, а атрибут longdesc никогда не войдет в моду из-за своей неуклюжести. (longdesc используется для того, чтобы указать URI более полного описания изображения, чем то, что приводится в атрибуте alt)
В XHTML 2.0 появляется элегантное решение этой проблемы: возможность любому элементу иметь атрибут src. Браузер впоследствии заменяет содержимое элемента содержимым, которое находится по указанному URI. В самом простом случае это изображение. Но нигде не сказано, что это не может быть SVG, XHTML или любой другой тип содержимого, которое способен интерпретировать браузер.
Тэг как таковой остается, но теперь он может включать содержимое. Новое действие атрибута src означает, что текст alt теперь представляет собой содержимое элемента, как в этом примере разметки:
H2O
Это особенно приятная новость для таких языков, как японский для которого комментарии Ruby требуют строчной разметки, которая до этого была невозможна в значении атрибута.
XHTML 2.0 предлагает более общую форму включения изображения в элемент , который можно применять для включения любого вида объектов — от изображений и клипов до исполняемого кода наподобие технологий Flash или Java. Это дает возможность использовать изящную технику для обработки постепенного уменьшения возможностей в зависимости от свойств браузера; можно внедрять несколько элементов один в другой. Например, flash-ролик можно поместить на самый внешний уровень, видеофайл AVI внутрь flash-ролика, фотоизображение внутрь avi-файла и, наконец, фрагмент текста в центре группы вложенных объектов. Смотрите Модуль объектов XHTML, где приведена дополнительная информация по этой теме.
Расширяемая семантика.
HTML всегда имел некоторые элементы с семантическими ассоциациями, например, и . Проблема заключается в том, что таких элементов мало, и они не являются расширяемыми. Между тем, предпринимались попытки использовать атрибут class для того, чтобы привнести семантику в элементы HTML. Это расширение задач атрибута class по сравнению с тем, для чего он был создан; такое применение атрибута затрудняется тем, что он преимущественно используется для применения стилей CSS. (Некоторых людей раздражает такое утверждение задачи атрибута class, но со вторым применением трудно спорить).
Идя еще дальше этих особых методов, XHTML 2.0 вводит метод для описания метаданных типа RDF в документе. Выражения RDF составляются из троек (субъект, свойство, объект). Например, может существовать тройка: «мой автомобиль», " изображен", «красным цветом».
Атрибут about действует как rdf: about, определяя subject тройки RDF — он может быть опущен, в этом случае сам документ будет субъектом. Атрибут property — это URI, на который ссылается свойство (он может использовать сокращенное наименование, предоставляя соответствующее объявление префикса; подробности можно найти в XHTML 2.0 раздел Модуль атрибутов метаинформации (Metainformation Attributes Module), см. Ресурсы).
И, наконец, третье значение в тройке является содержимым элемента, к которому применяются атрибуты about и property, а если эти атрибуты пусты, то значением атрибута content. Вот пример применения, которое близко к существующему использованию тэга HTML tag, определяет создателя в заголовке страницы:
продолжение
--PAGE_BREAK--