HTML » XHTML » XML
Основное различие между HTML и XHTML состоит в том, что в XHTML применяется синтаксис XML, который предназначен для помощи в разработке синтаксически корректных и правильных документов XML. XHTML представляет собой словарь XML, в то время как HTML — это лишь предшествующий XHTML язык разметки.
В связи с тем, что XHTML является приложением XML, некоторые действия. которые совершенно правильны в HTML4 на базе SGML, должны быть изменены. Перечислим правила, которые необходимо соблюдать при переходе от HTML к XHTML:
1. Документы должны быть правильно сформированы.
Это означает, что все элементы обязаны иметь закрывающий тег(например, ) или быть написаны в специальной форме(например,
), а также должна соблюдаться корректная вложенность элементов.
Хотя перекрывание элементов не допускалось и в SGML, некоторые браузеры лояльно к этому относились и в большинстве случаев отображали именно то, что хотел показать автор документа.
ПРАВ?ЛЬНО: вложенные элементы
выделяем это
слово
.
НЕПРАВ?ЛЬНО: элементы перекрываются
выделяем это
слово.
2. ?мена элементов и атрибутов должны быть в нижнем регистре.
Документы XHTML должны использовать нижний регистр для всех имен элементов и атрибутов HTML. Это необходимо, поскольку XML чувствителен к регистру, например,
и
это различные теги.
3. Правила написания значений атрибутов.
Все значения атрибутов, даже цифровые должны быть заключены в двойные("") или одинарные('') кавычки.
ПРАВ?ЛЬНО: атрибут в кавычках НЕПРАВ?ЛЬНО: атрибут не в кавычках Если значение атрибута содержит амперсанд, он должен выражаться мнемоникой (" Предопределенные значения атрибутов (например атрибут Следует учесть, что ведущие и ведомые пробелы в значениях атрибутов удаляются браузерами, а один или несколько последовательных пробелов между словами (а также переводы строк) преобразуются в одиночный межсловный пробел (символ пробела ASCII в западных языках). XML не поддерживает минимизацию атрибутов. Пары атрибут/значение обязательно должны быть выписаны полностью. ?мена атрибутов, такие как ПРАВ?ЛЬНО: атрибут написан полностью НЕПРАВ?ЛЬНО: атрибут минимизирован В HTML4 на базе SGML, некоторые элементы допускали отсутствие конечного тега при наличии других последующих элементов с закрывающими тегами. Такое отсутствие конечных тегов не допускается в XHTML на базе XML. Все элементы, за исключением тех, которые объявлены в определении типа документа как ПРАВ?ЛЬНО: закрытые элементы Еще параграф с текстом. НЕПРАВ?ЛЬНО: незакрытые элементы Пустые элементы обязаны иметь конечный тег, или стартовый тег обязан заканчиваться Для совместимости с устаревшими браузерами следует писать пробел перед Следует использовать минимизированный синтаксис для тегов пустых элементов, например, При создании пустого объекта элемента, чья модель содержимого не ПРАВ?ЛЬНО: пустые теги закрыты НЕПРАВ?ЛЬНО: пустые теги не закрыты В XHTML элементы Разделы Альтернативой может быть использование внешних документов скриптов и стилей. SGML предоставлял создателям определений типа документа возможность исключать некоторые элементы как содержимое элемента. Такие запрещения (называемые "исключения") невозможны в XML. Например, Строгое определение типа документа HTML4(Strict DTD) запрещает вложение элемента В XHTML: HTML 4 определил атрибут В XML идентификаторы фрагмента имеют тип Также следует помнить, что значение атрибута В XHTML 1.1 для элементов В комментариях двойные тире "--" могут обозначать только начало и конец комментария. НЕПРАВ?ЛЬНО: ПРАВ?ЛЬНО: Таким образом, двойные тире "--" не обозначающие начало и конец комментария в его тексте должны быть чем-либо заменены или разделены пробелом, например "- -". Символы
Нет необходимости, но желательно заменять также и > на >. Корневым элементом документа должен (обязан) быть Корневой элемент документа обязан обозначить пространство имён XHTML путём использования атрибута В документе обязано присутствовать объявление
&
"). Например, если атрибут href
элемента ссылается на скрипт CGI, который принимает параметры, он (атрибут) должен быть выражен так:
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user
, а не так:
.
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=usertype
элемента input
) регистрозависимы и должны быть написаны в нижнем регистре. Однако, это не касается значений атрибутов определяемых авторами документов (например значения для атрибутов id
, name
или class
), которые также регистрозависимы, но допускают использование символов в верхнем регистре.compact
и checked
, не могут появляться в элементах без определенных значений.
4. Для непустых элементов необходимы конечные теги.
EMPTY
, должны иметь конечный тег.
Здесь какой-то текст.
Здесь какой-то текст.
Еще параграф с текстом.
5. Пустые элементы
/>
. Например,
или
./>
в одиночном пустом элементе.
так как альтернативный синтаксис
, допускаемый XML, дает непредсказуемые результаты во многих существующих браузерах.EMPTY
(например, пустой заголовок или параграф), не следует использовать минимизированную форму(т.е. нужно использовать
, а не ).
6. Элементы
и
.
и
объявлены как имеющие содержимое
#PCDATA
. Как результат этого, и
&
будут рассматриваться как начало разметки, а мнемоники, такие как и
&
, будут считаться процессором XML мнемониками символов и
&
соответственно. Перенос содержимого элементов или
в раздел, помеченный
CDATA
, позволит избежать расшифровки этих мнемоник.
CDATA
распознаются процессором XML и являются узлами в объектной модели документа(Document Object Model)7. ?сключения SGML.
в другой элемент
на любую глубину. Хотя эти запрещения и могут отсутствовать в определении типа документа, определенные элементы не могут вкладываться.
не может содержать другие элементы
.
не может содержать элементы
,
,
,
,
или
.
не может содержать элементы
,
,
,
,
,
,
,
или
.
не может содержать другие элементы
.
не может содержать другие элементы
.
8. Элементы с атрибутами "id" и "name"
name
для элементов a
, applet
, form
, frame
, iframe
, img
и map
, а также ввёл атрибут id
. Оба эти атрибута созданы для использования в качестве идентификаторов фрагмента.ID
, и в элементе может быть только один атрибут типа ID
. Таким образом, в XHTML 1.0 атрибут id
определён как атрибут типа ID
. Чтобы быть уверенным, что документы XHTML 1.0 являются правильно структурированными документами XML, документы XHTML 1.0 обязаны использовать атрибут id
для определения идентификаторов фрагмента, и даже в тех элементах, которые исторически имели атрибут name
.id
в пределах документа должно быть уникальным.a
и map
атрибут name
удален, вместо него следует использовать атрибут id
.9. Двойные тире в комментариях
10. Символы
11. Вот образец минимального документа XHTML:
XHTML
Подробности о разметке на сайте W3C:
http://w3c.org/MarkUp/
.
.
xmlns
[XMLNAMES]. Пространство имён XHTML определено в http://w3.org/1999/xhtml.DOCTYPE
, предшествующее корневому элементу().
Публичный идентификатор, включённый в объявление DOCTYPE
, обязан быть ссылкой на одно из определений типа документа. O различных определениях DOCTYPE
и их влиянии на отображение (X)HTML документа в браузерах можно прочитать в статье "Различное отображение HTML документов в браузере зависит от объявленного Doctype".
Много комментариев (18) к “HTML » XHTML » XML”
Ну блин, меня бесит вот это:
>В XHTML 1.1 для элементов a и map атрибут name удален, вместо него следует использовать атрибут id.
Почему все тупо переписывают этот пункт, но никто не вспоминает про input type=radio? Если id уникален, а name устарел, то как же теперь объединять радио-переключатели? Ведь обычно они идентифицируются одним именем!
2006-04-12 at 5:13 pm
Larisa,
“В XHTML 1.1 для элементов a и map атрибут name удален, вместо него следует использовать атрибут id.”
Здесь про input не сказано ни слова.
2006-04-12 at 6:06 pm
Всё конечно здорово, но при создании страниц большим количеством табличной информации, для строк и ячеек таблиц очень часто объявляются кастомные атрибуты, для того чтобы потом можно было быстро позиционироваться на различного рода инфомации, а при новом подходе придётся писать горы скрипта.
Например:
и т.д.
Очень удобно задавать такие вещи именно в виде атрибутов при генерации страницы на сервере, а теперь что же после каждого объявления tr и td еще и кучу скрипта генеить чтобы он эти атрибуты создавал и устанавливал?
2006-04-20 at 12:57 pm
Я всегда придерживался и придерживаюсь строгих правил, но иногда бывают ошибки, на которые браузеры “закрывают глаза”, например:
ПараграфА вот другой
или
…
XHTML в этом плане только радует. Но я не уверен насчёт объявления типа документа и метатега . Если писать мегатег, то браузер документ воспринимает как xml-документ, а не как XHTML-документ. А в этом случае браузер не проверяет наличие закрывающих тегов.
+ Я хотел бы дополнить пункт 3. По-моему допускается написание compact=”1″.
2006-05-09 at 4:07 pm
xhtml подходит для больших порталов со сложной стуктурой, на малых и средних сайтах
лучше использовать старый добрый html3.2
С пустыми альтами вообще гемор, похоже гаспода из W3C не понимают что ничто не определяет пустоту лучше, чем сама пустота.
Ну янки они и есть янки.
? вообще куму нужна эта валидность?!
Люди смотрят сайты в браузере а не в валидаторе. ? когда валидатор говорит, что table width=100% это ошибка, я вспоминаю крепким словом W3C
Кто хочет поспорить пишите
alex_vollmond[пёс]mail.ru
или заходите в гости на мой сайт.
2006-08-13 at 2:09 pm
Прямым путем на webstandards.org.
Зачем, почему и для чего это сделано.
XHTML – язык структуры. ?ли Вы хотите сказать, что ваш /документ/ HTML – это не структура? Стиль – отдельно, структура – отдельно – это дао дизайнера, который заботится о пользователе, а не о себе.
Засчет этого вам же самим не надо создавать еще один вариант для отображения на тех же Palm’ах и Pocket PC – они покажут только структуру – но она будет /доступна/.
? ваш table width – извините, никуда не катит. Для этого есть CSS – это стиль.
? это все, к счастью, не только мое имхо, а мнение многих дизайнеров, осознавших проблему верно.
2006-09-11 at 2:07 pm
А можно ли бьявлять свои теги, как в XML? Потому, что его я знаю и HTML я тоже знаю. А вот XHTML – прозевал… напишите более подробню статью у ньом, а то информация этоц статьи есть на многи сайтах.
Но всеравно спасибо.
С уважением Николай.
2006-10-08 at 2:23 pm
Николас, вообще – можно, только при этом нужно написать свой DTD, где будут описаны новые элементы. Например, скопировать готовый, хоть HTML4 и добавить новые правила.
Вот только W3C не рекомендуют это делать.
2006-10-09 at 9:58 pm
Сразу говорю – идут претензии не к автору, а к W3C
Знаете…некоторые правила XHTML откровенно бесят.
а)Все теги в нижнем регистре
Позвольте, пожалуйста, мне решать – в каком регистре писать. Тем более в верхнем регистре хоть и сложнее писать, но код становиться читабельным. ?МХО
б) Для непустых элементов необходимы конечные теги.
Бредовее придумать не могли, когда для перевода строки тоже нужен закрывающийся тег :D
Бесят также необходимость альтов. Цитирую одного отпостившегося: “С пустыми альтами вообще гемор, похоже гаспода из W3C не понимают что ничто не определяет пустоту лучше, чем сама пустота.”
От себя добавлю: на сайте есть сопроводительные иконки, которые просто облагараживают вид страницы и несут смысловую нагрузку на данную страницу. Но альты там абсолютно не нужны. Озадачивать пользователей альтом “*” не собираюсь :)
Да и много там тупостей…
ЗЫ сторонникам XHTML: разделить разметку и стиль можно и в HTML4 :) Что я с радостью и делаю, ибо не собираюсь подстраиваться под вышеперечисленные тупости.
2006-10-23 at 6:41 pm
чертовщина с кодом комментирующих, невозможно уловить мысль, т.к. вместо кода в комментариях пустота! неужели не работает этот тег? проверяю:
2006-12-30 at 1:00 am
тег-то работает, но вот ещё бы все внутри него заменяли треугольные скобки на < >
2006-12-30 at 1:11 am
Господа! Хватит нервничать! Время все расставит по своим местам.
Если бы все зависело, например, от меня то я бы утвердил закон, который бы принуждал разработчиков браузеров поддерживать только последний W3C стандарт, а тот, кто будет идти против этого закона сажать в тюрьму как террористов.
Если честно я и сам против некоторых нововведений.
Но – миру нужен порядок!!!
2007-01-10 at 1:15 pm
+1 ^_^
2007-04-02 at 12:55 am
Да однозначно надо соблюдать все правила и переходить на xml, это один из первых правильных шагов в истории веба. ?ли кому-то хочется на несколько лет назад, поверстать для двух-трех браузеров каждый сайт и в итоге получить ? Потом через некоторое время сам открываешь такое чудо и начинаешь разбираться заново :).
Alex Vollmond советую пересмотреть подход к работе. html 3.2 это прошлый день.
А w3c не трогайте :), все они правильно делают. Кстати функция альта не только в отображении текста там, где отключены картинки, голосовые браузеры произносят этот текст и люди с ограниченными физическими возможностями могут понять, о чем речь. Ну и не только для этого.
2007-04-10 at 9:03 pm
DimonZi:
Позвольте, пожалуйста, мне решать – в каком регистре писать. Тем более в верхнем регистре хоть и сложнее писать, но код становиться читабельным. ?МХО.
Ваше право решать в каком регистре писать свои XML-документы, но если Вы решили использовать XHTML (приложение XML), то код должен соответствовать DTD.
2007-06-27 at 11:42 am
По поводу пустых альтов – AFAIK, их надо указывать для того, чтобы текстовые браузеры (и какие-то породы обычных при отключенной графике) не выводили на месте картинок их адрес (что, естественно, выглядит очень неаккуратно).
Еще, имхо, надо бы отметить, что от одних лишь указания XHTML-doctype и валидности документа браузер не станет парсить XHTML-страницу по-особому. Чтобы “ощутить вкус настоящего XHTML”, нужно отдавать страницу с соответствующим заголовком Content-type (эх, если бы еще все браузеры его понимали…). BTW, эта страница, с точки зрения W3C, с объявленным Doctype не должна отдаваться с HTML-ным Content-type, как это происходит на деле;).
2007-09-28 at 4:57 am
Я правильно понял, при использовании XHTML, любой броузер ОБЯЗАН показать всё так как свёрстано? ? больше не надо писать хаки под всякие ие???
2007-12-12 at 3:42 pm
badman, да.
Спасибо, статья познавательная.
2008-01-05 at 1:31 am