WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Советы » (X)HTML

(X)HTML


Дата публикации: 21-02-2008

При написании кросс-браузерного сайта мы рекомендуем использовать новый стандарт XHTML (1.0 и выше). XHTML — это основанный на XML язык разметки гипертекста, максимально приближенный к текущим стандартам HTML. XHTML отличается от HTML строгостью написания кода. Если HTML позволял писать практически любые конструкции и браузер их корректно распознавал, то теперь, с появлением XHTML , это стало невозможным. Последний требует строгого соблюдения всех правил, предъявляемых W 3 C . Строгие требования к оформлению XHTML -кода позволяют избежать многих ошибок ещё на стадии написания и отладки.

Для ярых приверженцев HTML хотелось бы отметить, что XHTML — это новый язык, который пришёл на смену старому HTML . Новых версий HTML больше не будет. В итоге все браузеры, как предполагается, перейдут на XHTML (очевидно, что при этом сохранится совместимость со старым HTML , но не более того). Так же хотим привести цитату из русского перевода спецификации XHTML от W3C : «Семейство XHTML создавалось с учетом общей совместимости пользовательских агентов. С помощью нового механизма профилирования пользовательских агентов и документов серверы, прокси и пользовательские агенты смогут преобразовывать содержимое наилучшим образом. В конечном счете, станет возможной разработка соответствующего XHTML содержимого, пригодного для любого соответствующего XHTML пользовательского агента».

XHTML совместим с HTML . Это означает, что даже самые старые браузеры, которые понимают HTML , будут работать и с XHTML . Для проверки правильности написания XHTML-кода существуют программы-валидаторы (например, он-лайн от W3C). Кроме того, пользовательские агенты, которые поддерживают XHTML , сами будут вам сообщать об ошибках в синтаксисе, если таковые возникнут.

XHTML ( eXtensible HyperText Markup Language ) — расширяемый язык разметки гипертекста.

XML (eXtensible Markup Language) — расширяемый язык разметки.

Чем же XHTML 1.0 отличается от HTML ? Существует несколько требований , которые разработчик обязан выполнять:

•  в начале документа должен указываться один из возможных DTD ( Document Type Definition ):

• <!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">

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

•  в теле XHTML -документа должны обязательно присутствовать следующие тэги: «< html >», «< head >», «< title >» и «< body >»;

•  имена тегов и атрибутов должны записываться в нижнем регистре;

•  все значения атрибутов должны заключаться в "кавычки";

•  все тэги должны закрываться; если у элемента нет закрывающего тэга, следует добавлять в его конец слеш («< br />» или «< br />» — пробел для совместимости со старыми браузерами);

•  необходимо соблюдать корректную вложенность тэгов («< b >< i >текст</ b ></ i >» — неверно; следует писать «< b >< i >текст</ i ></ b >»);

•  запрещается использовать минимизированные атрибуты (« nowrap » следует заменить на « nowrap = " nowrap "» ); полный список таких атрибутов: checked , compact , declare , defer , disabled , ismap , noresize , noshade , nowrap , multiple , readonly , selected .

•  на следующие элементы налагаются ограничения по включению в них других элементов:

•  a не может содержать другие элементы a ;

•  form не может содержать другие элементы form;

•  label не может содержать другие элементы label;

•  pre не может содержать img , object , big , small , sub или sup ;

•  button не может содержать элементы input, select, textarea, label, button, form, fieldset, iframe или isindex;

•  специальные символы в истинном значении должны заменяться на свои эквиваленты:

•  « &» на «&amp ; » ;

•  «<» на «&lt;» ;

•  «>» на «&gt ;».

Кроме того, существует ряд необязательных рекомендаций , которые разработчик не обязан выполнять в версии XHTML 1.0, но в последующих версиях этого языка возможно рекомендации перерастут в требования. А именно:

•  декларация XML -документа в самом начале кода перед DTD («<? xml version ="1.0" encoding =" windows -1251"?>»);

•  наличие атрибута xmlns в элементе html ;

•  следование элемента title после тега head ;

•  использование атрибута id вместо name ( name считается устаревшим атрибутом);

•  наличие атрибута type в элементах подключаемых файлов (таблиц стилей и скриптов);

•  отказ от использования атрибута target .

Приведём минимальный код правильной XHTML -страницы:

<?xml version="1.0" encoding="windows-1251"?>
<!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" xml:lang="ru" lang="ru">
<head>
  <title> Заголовок </title>
  <meta http-equiv="Content-Type" 
  content="text/html; charset=windows-1251" />
</ head >
<body>
  Содержимое документа
</body>
</html>

Если вставить этот код в файл, сохранить его как « file . html » и открыть через веб-сервер, то вся информация будет получена клиентом как «text/htm l ». То есть, как и обычная HTML -страница. Фактически для браузера это будет не XHTML , а HTML -документ. У XHTML есть свой собственный MIME -тип: «application/xhtml+xml».

MIME — это специальный набор расширений, который указывает программам, как обрабатывать входящую информацию. Изначально MIME -типы были разработаны для почтовых программ, откуда и получили своё название.

Итак, XHTML -данные правильно отдавать клиенту именно в формате «application/xhtml+xml», так как все преимущества, помимо кросс-браузерности (увеличение скорости анализа кода процессором XML , сообщение об ошибках самим браузером и пр.), могут достигаться только в случае, если пользовательский агент поддерживает XHTML и ему сообщается о том, что входящие данные — XHTML -код. Единственное, что надо помнить при отправке XHTML -кода: если браузер понимает XHTML , то только тогда информацию можно отправить как «application/xhtml+xml»; если же нет, то только как «text/htm l ». Список современных клиентов, поддерживающих XHTML : MZ , Opera , NN . IE , к сожалению, пока не понимает «application/xhtml+xml». Проверять, поддерживает ли пользовательский агент нужный MIME -тип можно по исходящему от браузера заголовку «Accept», где содержатся все MIME -типы, известные клиенту. Приведём пример, как это можно сделать с помощью Perl -скрипта:

MIME (Multipurpose Internet Mail Extension) — многоцелевые расширения электронной почты .

#!/usr/bin/perl -w
# Выясняем, поддерживает ли браузер XHTML.
my $html = "text/html";
my $xhtml = "application/xhtml+xml";
my $type = $ENV{HTTP_ACCEPT} =~ m/\Q$xhtml\E/ ? $xhtml : $html;
# Вывод соответствующего заголовка.
print "Content-Type: $type\n\n";
# Вывод (X)HTML-документа.
print "...";

При отправке данных как «application/xhtml+xml», надо учитывать ещё несколько моментов, без которых возможно появление ошибок. Так как синтаксически XHTML — это XML , элементы «script» и «style» в XHTML — это #PCDATA-блоки (а не #CDATA). Содержимое таких блоков необходимо помещать в специальную секцию CDATA , иначе процессор XML преобразует специальные символы в их эквиваленты ещё до обработки браузером таблицы стилей или сценария. Следующий пример показывает, как можно это сделать:

<script type="text/javascript"><!--//--><![CDATA[//><!--
  ...
  //--><!]]></script>
...
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
...
/*]]>*/--></style>

Такой синтаксис универсален. Этот код будет корректно работать и при «text/htm l » и при «application/xhtml+xml».

Хорошим и самым простым решением будет подключение внешних файлов таблиц стилей и скриптов. В XHTML это делается так же как и в HTML :

<!-- Подключение CSS -файла (не забудьте о закрывающем слеше). -->
< link rel = "stylesheet" type = "text/css" href = "file.css" title
= "" media = "screen" / >
<!-- Подключение JS -файла. -->
< script type = "text/javascript" src = "file.js" ></
script >
Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Неизвестный автор:

"Долг платежом красен, а сайт контентом прекрасен."

Опрос

Какой антивирус Вы используете?

Kaspersky Antivirus
NOD32
Norton Antivirus
Dr.Web
Panda
Аvast!
ClamWin
Другой...