Статья "Где лучше арендовать выделенный сервер?" https://www.06274.com.ua/list/86811

XHTML

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

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

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

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

Отличия 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;
  • обязательно наличие атрибута xmlns в элементе html;
  • имена тегов и атрибутов должны записываться в нижнем регистре;
  • все значения атрибутов должны заключаться в "кавычки";
  • все тэги должны закрываться; если у элемента нет закрывающего тэга, следует добавлять в его конец слеш (<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"?>);
  • следование элемента 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>
</head>
<body>
  Содержимое документа
</body>
</html>

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

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

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

#!/usr/bin/perl -w
# Выясняем, поддерживает ли браузер XHTML.
my $html  = "text/html";
my $xhtml = "application/xhtml+xml";
my $type  = $ENV{HTTP_ACCEPT} =~ m/\Q$xhtml\E(?!\s*;\s*q=0)/ ? $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/html> и при <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>


Читать дальше: Примеры HTML
.

Популярное:


Содержание:


Новое за неделю



Сейчас на сайте: 3930

Rambler's Top100