Смекни!
smekni.com

Расширенный язык разметки гипертекста (XHTML) (стр. 3 из 5)

Структура XHTML-документа.

Любой XHTML-файл состоит из трех разделов - тега <! DOCTYPE>, заголовка (<HEAD>) и тела документа (<BODY>). Последние два элемента перекочевали из HTML и ничем не отличаются от своего родоначальника (пример 1).

Пример 1. Простейший XHTML документ.

<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <! - Этот раздел предназначен для заголовка страницы и технической информации. - -> </head> <body> <! - А здесь надо размещать все, что хочется увидеть на странице. - -> </body> </html>

Тег <! DOCTYPE> сообщает браузеру о типе текущего документа и как его интерпретировать. Различают несколько версий и типов XHTML-документов, они приведены в табл.1.

Табл.1. Версии XHTML и допустимые типы документа

Версия XHTML Тип документа Описание
XHTML 1.0 Strict "Строгое" описание документа, включающее все правила.
XHTML 1.0 Transitional "Переходный" тип, более лояльно относящийся к коду документа.
XHTML 1.0 Frameset Устанавливается при использовании на странице фреймов.
XHTML 1.1 XHTML 1.1 Эта версия основана на XHTML 1.0 Strict, но понимается браузерами как XML-приложение. В первую очередь предназначено для работы с различными медиа-данными.

XHTML 1.0 Strict

Используется в том случае, если в документе идет четкое разделение оформления и содержания. При этом код веб-страницы содержит только теги разметки, а сам вид элементов задается через стили (пример 2).

Пример 2. Документ со строгой разметкой

<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>... </head> <body>... </body> </html>

XHTML 1.0 Transitional

Обычно применяется, когда правило разделения оформления и содержания выполняется не в полной мере. В этом случае допускается в коде документа использовать теги физического проектирования (например, тег <TT>) и лишь частично стили. В примере 3 показан вид тега <! DOCTYPE> для подобных документов.

Пример 2.3 "Переходный" документ

<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>... </head> <body>... </body> </html>

XHTML 1.0 Frameset

Применяется, когда окно браузера делится на два или более фрейма (пример 4).

Пример 4. Документ с фреймами

<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Frameset // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>... </head> <frameset>... </frameset> </html>

Тег <! DOCTYPE> хотя и обязателен, но не является непосредственной частью XHTML-документа, поэтому для него закрывающего тега не требуется.

XHTML 1.1

Является старшей версией "строгого" XHTML (пример 5).

Пример 5. XHTML 1.1

<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.1 // EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>... </head> <body>... </body> </html>

Шаблон документа XHTML Strict

Тег <HTML> является корневым для остальных элементов веб-страницы и располагается сразу после определения типа документа <! DOCTYPE>. Поскольку тип документа может быть любым, а не только тем, что приведен в табл.1, то необходимо дать понять браузеру, что он имеет дело со спецификой XHTML. Для чего в тег <HTML> добавляется параметр xmlns.

Замечание:

Хотя параметр xmlns в теге <HTML> и считается обязательным, но валидатор не выдает ошибки, если xmlns отсутствует.

Также в контейнере <HEAD> требуется наличие заголовка <TITLE>. Таким образом, минимальный XHTML-документ с метатегом, устанавливающим кодировку веб-страницы, показан в примере 2.6

Пример 6. Шаблон XHTML-документа

<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict. dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Новый документ</title> </head> <body> </body> </html>

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 есть ответ на этот вопрос благодаря новым элементам <section> и <h> (заголовок):

<section>

<h>Level 1 heading</h>

...

<section>

<h>Level 1 heading</h>

...

</section>

</section>

Это более логичное структурирование, чем в 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 устраняет это ограничение. Единственное, чего нельзя делать - это помещать один абзац в другой.

Изображения.

Тэг <img> в HTML на самом деле имеет довольно ограниченную гибкость. Как отмечает Пембертон, он не предоставляет никакого механизма нейтрализации ошибки, за исключением альтернативного текста alt (что препятствует утверждению новых форматов изображения), текст в тэгах alt нельзя разметить, а атрибут longdesc никогда не войдет в моду из-за своей неуклюжести. (longdesc используется для того, чтобы указать URI более полного описания изображения, чем то, что приводится в атрибуте alt)

В XHTML 2.0 появляется элегантное решение этой проблемы: возможность любому элементу иметь атрибут src. Браузер впоследствии заменяет содержимое элемента содержимым, которое находится по указанному URI. В самом простом случае это изображение. Но нигде не сказано, что это не может быть SVG, XHTML или любой другой тип содержимого, которое способен интерпретировать браузер.

Тэг <img> как таковой остается, но теперь он может включать содержимое. Новое действие атрибута src означает, что текст alt теперь представляет собой содержимое элемента, как в этом примере разметки:

<p><imgsrc="http://example.com/water. png">H<sub>2</sub>O</img></p>

Это особенно приятная новость для таких языков, как японский для которого комментарии Ruby требуют строчной разметки, которая до этого была невозможна в значении атрибута.

XHTML 2.0 предлагает более общую форму включения изображения в элемент <object>, который можно применять для включения любого вида объектов - от изображений и клипов до исполняемого кода наподобие технологий Flash или Java. Это дает возможность использовать изящную технику для обработки постепенного уменьшения возможностей в зависимости от свойств браузера; можно внедрять несколько элементов <object> один в другой. Например, flash-ролик можно поместить на самый внешний уровень, видеофайл AVI внутрь flash-ролика, фотоизображение внутрь avi-файла и, наконец, фрагмент текста в центре группы вложенных объектов. Смотрите Модуль объектов XHTML, где приведена дополнительная информация по этой теме.

Расширяемая семантика.

HTML всегда имел некоторые элементы с семантическими ассоциациями, например, <address> и <title>. Проблема заключается в том, что таких элементов мало, и они не являются расширяемыми. Между тем, предпринимались попытки использовать атрибут class для того, чтобы привнести семантику в элементы HTML. Это расширение задач атрибута class по сравнению с тем, для чего он был создан; такое применение атрибута затрудняется тем, что он преимущественно используется для применения стилей CSS. (Некоторых людей раздражает такое утверждение задачи атрибута class, но со вторым применением трудно спорить).