HTML - статьи

         

HTML


При написании кросс-браузерного сайта мы рекомендуем использовать новый стандарт (1.0 и выше). XHTML — это основанный на язык разметки гипертекста, максимально приближенный к текущим стандартам 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-кода существуют программы-валидаторы (например, он-лайн валидатор http://validator.w3.org/

от W3C). Кроме того, пользовательские агенты, которые поддерживают XHTML , сами будут вам сообщать об ошибках в синтаксисе, если таковые возникнут. Пример показан на рис. 2

( eXtensible HyperText Markup Language ; http://www.w3.org/TR/xhtml1/) — расширяемый язык разметки гипертекста.

(eXtensible Markup Language; http://w3.org/XML/) — расширяемый язык разметки.

Рис. 2. Сообщение об ошибке в XHTML -коде браузером Mozilla 1.7.2.


Чем же 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 , , 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 >


Содержание раздела