Распечатать статью

HTML » XHTML » XML

Основное различие между HTML и XHTML состоит в том, что в XHTML применяется синтаксис XML, который предназначен для помощи в разработке синтаксически корректных и правильных документов XML. XHTML представляет собой словарь XML, в то время как HTML — это лишь предшествующий XHTML язык разметки.

В связи с тем, что XHTML является приложением XML, некоторые действия. которые совершенно правильны в HTML4 на базе SGML, должны быть изменены. Перечислим правила, которые необходимо соблюдать при переходе от HTML к XHTML:

1. Документы должны быть правильно сформированы.

Это означает, что все элементы обязаны иметь закрывающий тег(например, ) или быть написаны в специальной форме(например,
), а также должна соблюдаться корректная вложенность элементов.

Хотя перекрывание элементов не допускалось и в SGML, некоторые браузеры лояльно к этому относились и в большинстве случаев отображали именно то, что хотел показать автор документа.

ПРАВИЛЬНО: вложенные элементы

выделяем это слово.

НЕПРАВИЛЬНО: элементы перекрываются

выделяем это слово.

2. Имена элементов и атрибутов должны быть в нижнем регистре.

Документы XHTML должны использовать нижний регистр для всех имен элементов и атрибутов HTML. Это необходимо, поскольку XML чувствителен к регистру, например, <ul>
и <UL>
это различные теги.

3. Правила написания значений атрибутов.

Все значения атрибутов, даже цифровые должны быть заключены в двойные(«») или одинарные(») кавычки.

ПРАВИЛЬНО: атрибут в кавычках

<td colspan="8">

НЕПРАВИЛЬНО: атрибут не в кавычках

<td colspan=8>

Если значение атрибута содержит амперсанд, он должен выражаться мнемоникой («&amp;»). Например, если атрибут href элемента <a> ссылается на скрипт CGI, который принимает параметры, он (атрибут) должен быть выражен так:

http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user, а не так:
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

Предопределенные значения атрибутов (например атрибут type элемента input) регистрозависимы и должны быть написаны в нижнем регистре. Однако, это не касается значений атрибутов определяемых авторами документов (например значения для атрибутов id, name или class), которые также регистрозависимы, но допускают использование символов в верхнем регистре.

Следует учесть, что ведущие и ведомые пробелы в значениях атрибутов удаляются браузерами, а один или несколько последовательных пробелов между словами (а также переводы строк) преобразуются в одиночный межсловный пробел (символ пробела ASCII в западных языках).

XML не поддерживает минимизацию атрибутов. Пары атрибут/значение обязательно должны быть выписаны полностью. Имена атрибутов, такие как compact и checked, не могут появляться в элементах без определенных значений.

ПРАВИЛЬНО: атрибут написан полностью

<dl compact="compact">

НЕПРАВИЛЬНО: атрибут минимизирован

<dl compact>

 

4. Для непустых элементов необходимы конечные теги.

В HTML4 на базе SGML, некоторые элементы допускали отсутствие конечного тега при наличии других последующих элементов с закрывающими тегами. Такое отсутствие конечных тегов не допускается в XHTML на базе XML. Все элементы, за исключением тех, которые объявлены в определении типа документа как EMPTY, должны иметь конечный тег.

ПРАВИЛЬНО: закрытые элементы

<p>Здесь какой-то текст.</p><p>Еще параграф с текстом.</p>

НЕПРАВИЛЬНО: незакрытые элементы

<p>Здесь какой-то текст.<p>Еще параграф с текстом.

 

5. Пустые элементы

Пустые элементы обязаны иметь конечный тег, или стартовый тег обязан заканчиваться />. Например, <br /> или <br></br>.

Для совместимости с устаревшими браузерами следует писать пробел перед /> в одиночном пустом элементе.

Следует использовать минимизированный синтаксис для тегов пустых элементов, например, <br /> так как альтернативный синтаксис <br></br>, допускаемый XML, дает непредсказуемые результаты во многих существующих браузерах.

При создании пустого объекта элемента, чья модель содержимого не EMPTY(например, пустой заголовок или параграф), не следует использовать минимизированную форму(т.е. нужно использовать <p> </p>, а не <p />).

ПРАВИЛЬНО: пустые теги закрыты

<br /><hr />

НЕПРАВИЛЬНО: пустые теги не закрыты

<br><hr>

 

6. Элементы и .

В XHTML элементы <script> и <style> объявлены как имеющие содержимое #PCDATA. Как результат этого, < и & будут рассматриваться как начало разметки, а мнемоники, такие как &lt; и &amp;, будут считаться процессором XML мнемониками символов < и & соответственно. Перенос содержимого элементов <script> или <style> в раздел, помеченный CDATA, позволит избежать расшифровки этих мнемоник.

<script type="text/javascript">//<![CDATA[ ... unescaped script content ... //]]></script>

Разделы CDATA распознаются процессором XML и являются узлами в объектной модели документа(Document Object Model)

Альтернативой может быть использование внешних документов скриптов и стилей.

7. Исключения SGML.

SGML предоставлял создателям определений типа документа возможность исключать некоторые элементы как содержимое элемента. Такие запрещения (называемые «исключения») невозможны в XML.

Например, Строгое определение типа документа HTML4(Strict DTD) запрещает вложение элемента <a> в другой элемент <a> на любую глубину. Хотя эти запрещения и могут отсутствовать в определении типа документа, определенные элементы не могут вкладываться.

В XHTML:
<a> не может содержать другие элементы <a>.
<pre> не может содержать элементы <img>, <object>, <big>, <small>, <sub> или <sup>.
<button> не может содержать элементы <input>, <select>, <textarea>, <label>, <button>, <form>, <fieldset>, <iframe> или <isindex>.
<label> не может содержать другие элементы <label>.
<form> не может содержать другие элементы <form>.

8. Элементы с атрибутами «id» и «name»

HTML 4 определил атрибут name для элементов a, applet, form, frame, iframe, img и map, а также ввёл атрибут id. Оба эти атрибута созданы для использования в качестве идентификаторов фрагмента.

В XML идентификаторы фрагмента имеют тип ID, и в элементе может быть только один атрибут типа ID. Таким образом, в XHTML 1.0 атрибут id определён как атрибут типа ID. Чтобы быть уверенным, что документы XHTML 1.0 являются правильно структурированными документами XML, документы XHTML 1.0 обязаны использовать атрибут id для определения идентификаторов фрагмента, и даже в тех элементах, которые исторически имели атрибут name.

Также следует помнить, что значение атрибута id в пределах документа должно быть уникальным.

В XHTML 1.1 для элементов a и map атрибут name удален, вместо него следует использовать атрибут id.

9. Двойные тире в комментариях

В комментариях двойные тире «—» могут обозначать только начало и конец комментария.

НЕПРАВИЛЬНО:

<!-- использовать разделитель, написанный ниже -- нельзя и этот комментарий -- неверен --> <!--------------------------------->

ПРАВИЛЬНО:

<!-- использовать разделитель, написанный ниже - - можно и этот комментарий - - верен --> <!--==== - - - - ====-->

Таким образом, двойные тире «—» не обозначающие начало и конец комментария в его тексте должны быть чем-либо заменены или разделены пробелом, например «- -«.

10. Символы < и & в тексте документа

Символы < и & в тексте документа должны быть заменены соответствующими последовательностями &lt; и &amp;.

Нет необходимости, но желательно заменять также и > на &gt;.

11. Вот образец минимального документа XHTML:

 

<?xml version="1.0" encoding="windows-1251"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"> <head> <title>XHTML</title> </head> <body> <p>Подробности о разметке на сайте W3C: <a href="http://w3c.org/MarkUp/"> http://w3c.org/MarkUp/ </a>.</p> </body> </html>

Корневым элементом документа должен (обязан) быть <html>.

Корневой элемент документа обязан обозначить пространство имён XHTML путём использования атрибута xmlns[XMLNAMES]. Пространство имён XHTML определено в http://www.w3.org/1999/xhtml.

Источник: internet-technologies.ru 
Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи