Краткий экскурс: от HTML к XHTML

Язык XHTML и его связь с WordPress

Система WordPress основана на документах, написанных на языке сценариев XHTML. Язык XHTML 1.0 (самая распространенная версия на данный момент; расшифровывается как eXtensible Hyper Text Markup Language) получил рекомендации W3C еще в 2000 году. Основной миссией нового языка являлось закрытие существующей бреши в веб-технологиях, т.е. этот язык рассматривался как промежуточный шаг на пути к версии XHTML 2.0. Прошло уже довольно долгое время, а разработка языка XHTML 2.0 до сих пор не завершена.

XHTML во многом похож на HTML, что довольно логично: оба языка являются потомками SGML. Но в отличие от HTML, XHTML также вобрал в себя дисциплину языка XML. Это отразилось на грамматике XHTML: она является более строгой по сравнению с грамматикой HTML. Основное же отличие XHTML от HTML состоит в том, что в XHTML появился новый MIME-тип и были добавлены новые правила синтаксиса, которые будут нами ниже рассмотрены.

Почему разработчики WordPress рекомендуют использовать именно XHTML?

В WordPress все внутренние функции возвращают результат в XHTML-виде. Более того, все темы и абсолютное большинство плагинов построены на XHTML. Если вы хотите использовать WordPress, то вам обязательно нужно знать этот язык сценариев, в противном случае вы не сможете полноценно работать с сайтом.

В чем состоят различия между XHTML и HTML?

Если вы знакомы с HTML, то язык XHTML не вызовет у вас никаких проблем. Большинство того, что было реализовано в HTML, работает и в XHTML. Основное отличие между языками состоит в том, что XHTML принуждает авторов быть более последовательными и четкими в плане написания инструкций. Имеются, конечно же, и некоторые синтаксические и грамматические отличия; достаточно сказать, что из XHTML были исключены некоторые HTML-теги. Если вы знаете HTML, то вы с легкостью сможете переключиться на XHTML.

Различия в языках на примерах

Самое время взглянуть на отличия XHTML от HTML. Помните: это руководство нельзя считать полноценным и всесторонним описанием языка XHTML. За более подробными сведениями вам понадобится перейти на сайт XHTML W3C.

Все теги, атрибуты и значения должны быть записаны в нижнем регистре:

Верно:

<a href="www.example.com" >

Неверно:

<A HREF="www.example.com" >

Все значения атрибутов должны находиться в кавычках:

Верно:

<a href="www.example.com">

Неверно:

<a href=www.example.com>

Все теги должны быть правильно вложены:

Верно:

<em>this emphasis just keeps getting <strong>stronger and stronger</strong></em>

Неверно:

<em>this emphasis just keeps getting <strong>stronger and stronger</em></strong>

Все документы должны придерживаться определения DOCTYPE:

Определение DOCTYPE должно стоять в начале любого XHTML документа. Оно используется браузером для того, чтобы определить, как представить страницу.

Правила для тега DOCTYPE:

— Он должен являться первым тегом в документе;
— Определение DOCTYPE не является фактической частью XHTML-документа, поэтому оно не должно содержать закрывающей черты (слэша);
— Определение должно указывать на существующий файл DTD, который сообщает браузеру, как именно нужно представить документ;
— Определение должно быть записано верно.

Всего существует три типа допустимых схем для XHTML 1.0 документов: Strict, Transitional и Frameset. Вы можете придерживаться любой выбранной схемы.

Примечание: система WordPress, начиная с версии 2.6.2, не соответствует строгой (Strict) схеме, поскольку некоторые из внутренне сгенерированных элементов форм до сих пор используют атрибут «name», который запрещен в Strict DTD.

Также примите к сведению, что при использовании Transitional DTD браузеры обычно выходят за пределы стандартных режимов. Это влечет за собой неоднородность представления веб-страниц в разных веб-браузерах. За одну минуту раскрыть все «подводные камни» такого сложного понятия, как тег DOCTYPE, невозможно, да и не обязательно. Знайте лишь, что для получения наилучших результатов вы должны использовать любое из следующих определений (предпочтительнее первое, Strict):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Тег HTML должен содержать атрибут XMLNS

Единственное, что вам нужно знать относительно атрибута xmlns (пространство имен XML, xml namespace) – это то, что он должен присутствовать во всех XHTML документах. Ниже приведен пример его написания:

<html xmlns="http://www.w3.org/1999/xhtml">

Документы должны быть должным образом сформированы с помощью тегов HTML, HEAD, TITLE и BODY

В HTML можно создать страницу, которая не будет содержать ни одного из вышеупомянутых тегов; в XHTML такое недопустимо. Все указанные теги должны быть включены в документ, правильно упорядочены и вложены.

	
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title></title>
 </head>
 
 <body>
  <p>
    See how the TITLE must be placed in the document HEAD – the TITLE is considered
to be a "required child" element of the HEAD.
 Notice that the HEAD must also appear before the document BODY.
Notice also how both the HEAD and the BODY must be contained
 within the HTML tag. Again, HEAD and BODY are "required child"
 elements of the HTML tag. Finally, notice that this text is
written within a <p>paragraph</p> tag; in XHTML you may
not write text directly in the BODY tag without using a suitable
container tag, such as <p> or <div>.
  </p>
 </body>
</html>

Все теги должны быть закрыты, включая одиночные теги

	
<p>Mary had a little lamb
<p>It's fleece was white as snow

Этот код не является корректным с точки зрения XHTML, так как в нем отсутствуют закрывающие теги

. Верный вариант написания:

<p>Mary had a little lamb</p>
<p>It's fleece was white as snow</p>

В XHTML даже одиночные теги должны быть закрыты. Ни один тег нельзя оставлять открытым.

<p>
 Mary had a little lamb <br>
 It's fleece was white as snow
</p>

Представленный выше пример является неправильным, потому что тег
не закрыт. Для того чтобы закрыть одиночный тег, необходимо добавить наклонную черту (слэш) перед символом > (до и после слэша можно размещать пробелы). Исправленный вариант написания:

	
<p>
 Mary had a little lamb <br />
 It's fleece was white as snow
</p>

Этот XHTML-код является корректным.

Минимизация атрибутов не поддерживается

В HTML атрибуты могут быть представлены в виде строки, словно ключевые слова. Пример:

. Такое представление называется минимизацией атрибутов. В XHTML задание атрибутов и значений должно быть явным, то есть:
<dl compact="compact">

Атрибуты ID и NAME

В HTML атрибуты ID и NAME являлись равноценными. В XHTML атрибут NAME формально осужден, и поэтому не может использоваться. Все вхождения атрибута NAME должны быть заменены на ID. Пример:

корректная HTML-версия:

<input type="submit" name="s" value=" Search " >

корректная XHTML-версия:

<input type="submit" id="s" value=" Search " />

Элементы STYLE должны находиться в разделе HEAD документа

XHTML не позволяет объявлять STYLE в пределах тела документа. Все стили должны находиться в разделе HEAD.

Описание символьных объектов

Все вхождения символа & (амперсанд) будут считаться частью символьного объекта. Поэтому, если вы хотите использовать этот символ в какой-либо строке, вы должны записать его в виде &.

Проблемы с XHTML

Многие пользователи не знают, что для представления XHTML документа они должны использовать новый MIME-тип «application/xhtml+xml». MYME-тип – это обычное описание, которое веб-сервер отправляет браузеру для указания типа документа. К примеру, изображения в формате JPG отправляются с MYME-типом «image/jpeg», HTML-документы – с MYME-типом «text/html». Отправка XHTML документа с MIME-типом «text/html» приведет к тому, что документ будет интерпретирован как HTML, а не как XHTML. Если вы хотите использовать именно XHTML, вам нужно будет применить корректный MIME-тип, иначе браузер решит, что вы просто написали нестандартный HTML.