Чтобы преобразовать Web-сайт с языка HTML на XHTML, необходимо знать правила синтаксиса XHTML, которые были рассмотрены выше. Затем необходимо выполнить следующие действия (в указанном порядке):
В качестве первой строки каждой страницы добавляют следующее объявление DOCTYPE:
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Лучше использовать сначала переходное определение DTD (Transitional). Можно выбрать и строгое определение DTD (Strict), но оно немного слишком "строгое" на начальном этапе, и ему труднее соответствовать.
Web-cтраницы должны иметь объявление DOCTYPE, если желательно, чтобы они были определены как правильные согласно XHTML.
Надо помнить, однако, что более новые браузеры (такие как Internet Explorer 6) могут обрабатывать документ по-разному, в зависимости от объявления <!DOCTYPE>. Если браузер читает документ с DOCTYPE, то он может интерпретировать документ как "правильный". Плохо сформированный XHTML может выводиться иначе, чем при отсутствии DOCTYPE.
Так как XHTML различает регистр символов, и поскольку XHTML допускает имена тегов и атрибутов HTML только в нижнем регистре, то необходимо выполнить глобальный поиск и замену всех тегов в верхнем регистре тегами, записанными в нижнем регистре. Аналогичную процедуру необходимо выполнить также для имен атрибутов.
Так как рекомендация W3C для XTML 1.0 говорит, что значения всех атрибутов должны быть заключены в кавычки, то необходимо проверить все Web-страницы, чтобы значения всех атрибутов были правильно заключены в кавычки. Это трудоемкая работа, поэтому рекомендуется в будущем никогда не забывать использовать кавычки для значений атрибутов.
В XHTML пустые теги не разрешены. Теги <hr> и <br> должны быть заменены соответственно на <hr /> и <br />.
Это создает проблему с браузером Netscape, который неправильно интерпретирует тег <br/>. Но к счастью, по неизвестной причине, замена его на <br /> прекрасно работает. В этом случае также необходимо выполнить глобальный поиск и замену соответствующих тегов.
Некоторые другие теги (такие как тег <img>) страдают от такой же проблемы. В данном случае можно не использовать тег замыкания </img>, а добавить /> в конце тега.
После выполнения всех преобразований все имеющиеся страницы проверяются согласно официальному DTD W3C с помощью следующей ссылки на XHTML Validator (http://validator.w3.org/check/referer). Возможные не выявленные на начальном этапе ошибки надо будет отредактировать вручную. Наиболее распространенной ошибкой бывает отсутствие в списках тегов замыкающего </li>.
Имеются ли какие-либо специальные инструментальные средства для преобразования? Да, можно использовать утилиту TIDY.
Бесплатная утилита Дейва Рагетта HTML TIDY (http://www.w3.org/People/Raggett/tidy/) предназначена для проверки кода HTML. Она также отлично справляется с трудночитаемыми разметками документов, созданными специальными редакторами HTML и инструментальными средствами конвертации, и может помочь определить места кода, требующие дополнительного внимания, чтобы сделать Web-страницы более доступными для людей с физическими недостатками.
Документ XHTML проверяется согласно Определению типа документа.
Документ XHTML проверяют на соответствие определению типа документа (DTD). Прежде чем можно будет проверить файл XHTML, необходимо добавить в качестве первой строки правильный DTD.
Strict DTD содержит элементы и атрибуты, которые не были исключены и не связаны с фреймами:
!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
Transitional DTD содержит все из Strict DTD плюс исключенные элементы и атрибуты:
!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
Frameset DTD содержит все из Transitional DTD плюс фреймы:
!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
Простой документ XHTML имеет следующий вид:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>простой документ </title>
</head>
<body>
<p>простой параграф </p>
</body>
</html>
Модель модуляризации XHTML определяет модули XHTML.
XHTML является простым, но большим языком. XHTML содержит большинство функций, которые могут понадобиться Web-разработчику.
Для некоторых целей XHTML является слишком большим и сложным, а для других целей он слишком прост.
Разделяя XHTML на модули, консорциум W3C создал небольшие и строго определенные множества элементов XHTML, которые можно использовать отдельно для простых устройств, а также в соединении с другими стандартами XML в больших и более сложных приложениях.
Используя модульность XHTML, разработчики приложений могут:
[x]. Выбирать элементы, которые будут поддерживаться устройством, используя стандартные строительные блоки XHTML.
[x]. Добавлять в XHTML расширения, используя XML, и не нарушая стандарт XHTML.
[x]. Упрощать XHTML для таких устройств, как карманные компьютеры-коммуникаторы, мобильные телефоны, ТВ устройства, и устройства бытовой техники.
[x]. Расширять XHTML для сложных приложений, добавляя новые функции XML (такие как MathML, SVG, Voice and Multimedia).
[x]. Определять профили XHTML, такие как XHTML Basic (подмножество XHTML для мобильных устройств).
Консорциум W3C разделил определение XHTML на 28 модулей:
Имя модуля | Описание |
---|---|
модуль Applet | Определяет исключенный элемент applet |
модуль Base | Определяет элемент base |
модуль Basic Forms | Определяет базовые элементы форм |
модуль Basic Tables | Определяет базовые элементы таблиц |
модуль Bi-directional Text | Определяет элемент bdo |
модуль Client Image Map | Определяет элементы карт-изображений на стороне браузера |
модуль Edit | Определяет элементы редактирования del и ins |
модуль Forms | Определяет все элементы, используемые в формах |
модуль Frames | Определяет элементы, связанные с фреймами |
модуль Hypertext | Определяет элемент a |
модуль Iframe | Определяет элемент iframe |
модуль Image | Определяет элемент img |
модуль Intrinsic Events | Определяет атрибуты событий, такие как onblur и onchange |
модуль Legacy | Определяет исключенные элементы и атрибуты |
модуль Link | Определяет элемент link |
модуль List | Определяет элементы списка li, ul, dd, dt, и dl |
модуль Metainformation | Определяет элемент meta |
модуль Name Identification | Определяет исключенный атрибут name |
модуль Object | Определяет элементы object и param |
модуль Presentation | Определяет элементы представления, такие как b и i |
модуль Scripting | Определяет элементы script и noscript |
модуль Server Image Map | Определяет элементы карт-изображений на сервере |
модуль Structure | Определяет элементы html, head, title и body |
модуль Style Attribute | Определяет атрибут style |
модуль Style Sheet | Определяет элемент style |
модуль Tables | Определяет элементы, используемые в таблицах |
модуль Target | Определяет атрибут target |
модуль Text | Определяет элементы контейнера текста, такие как p и h1 |