Язык xhtml. Что такое расширение файла 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):
  • в теле XHTML-документа должны обязательно присутствовать следующие тэги: html , head , title и body ;
  • обязательно наличие атрибута xmlns в элементе html ;
  • имена тегов и атрибутов должны записываться в нижнем регистре;
  • все значения атрибутов должны заключаться в "кавычки";
  • все тэги должны закрываться; если у элемента нет закрывающего тэга, следует добавлять в его конец слеш (
    или
    — пробел для совместимости со старыми браузерами);
  • необходимо соблюдать корректную вложенность тэгов (текст — неверно; следует писать текст );
  • запрещается использовать минимизированные атрибуты (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 ;
  • специальные символы в истинном значении должны заменяться на свои эквиваленты:
    • & на & ;
    • < на < ;
    • > на > .

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

  • декларация XML-документа в самом начале кода перед DTD ( );
  • следование элемента title сразу после открытия тега head ;
  • использование атрибута id вместо name (name считается устаревшим атрибутом);
  • наличие атрибута type в элементах подключаемых файлов (таблиц стилей и скриптов);
  • отказ от использования атрибута target .

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

Заголовок Содержимое документа

Если вставить этот код в файл, сохранить его как "file.html " и открыть через веб-сервер, то вся информация будет получена клиентом как >text/html*/-->

Такой синтаксис универсален. Этот код будет корректно работать и при и при .

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

При выборе DOCTYPE необходимо чётко определиться, какой из двух стандартов выбрать: HTML или XHTML . И для облегчения Вашего выбора я решил разобрать разницу между HTML и XHTML .

Главное отличие между HTML и XHTML в том, что XHTML основан на синтаксисе XML . А, следовательно, он более строгий, и в нём нельзя допускать тех вольностей, которые можно допустить в HTML .

А теперь по пунктам разберём особенности синтаксиса XHTML :

1. Каждый тег должен закрываться

Парные теги должны закрываться и в HTML тоже, но все мы знаем, что в HTML существует множество одиночных тегов (например, ), и мы смело могли написать таким образом:

Однако, в XHTML все теги должны закрываться, даже одиночные, причём закрываются они следующим образом:

Разница только в слеше перед второй угловой скобкой.

2. Все спецсимволы должны быть заменены на сущности

То есть нельзя писать вот так: "& ", нужно писать этот символ только сущностью, то есть "& ". В HTML подобного правила не существует.

3. Все значения атрибутов должны быть в кавычках.

Все мы с Вами знаем, что в HTML можно написать вот так:

То есть у нас значение атрибута "width " находится без кавычек. В XHTML это недопустимо, и там надо писать вот так:

4. Все теги и атрибуты должны писаться в нижнем регистре.

Скажу честно, я никогда не понимал, зачем люди пишут теги в верхнем регистре. На мой взгляд, это уродует код, и возникает ощущение, что его писали не отжимая "CAPSLOCK ". Но если в HTML - это дело вкуса, то в XHTML - это правило: писать только в нижнем регистре.

Как видите, разница только в синтаксисе. Есть также и другие мелкие различия, но мы о них говорить не будем. Другими словами, единственное преимущество XHTML - это более лёгкий парсинг документа . А также XHTML очень подходит любителям "чистого" кода. Больше никаких преимуществ нет. Все браузеры корректно отображают и HTML , и XHTML . Причём зачастую браузеры XHTML обрабатывают как HTML , поэтому для внешнего вида серьёзных различий в HTML и XHTML точно не будет.

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

XHTML (от англ. Extensible Hypertext Markup Language - модульный язык разметки гипертекста) - расширяемое семейство всех языков и модулей разметки страниц на основе XML , только с расширением и повторением возможностей HTML 4 .

Версии XHTML

XHTML 1.0 одобрена консорциумом Всемирной паутины еще 26 января 2000 года. Уже 1 августа 2002 года была опубликована вторая измененная редакция спецификации.

XHTML 1.0 (аналогично HTML 4 ) состоит из трех типов документов:

  • XHTML-1.0-Strict - позволяет исключить полное использование элементов и атрибутов, которые задают графическое отображение в виде элементов font или атрибута bgcolor . Относится к самому предпочтительному типу документов.
  • XHTML-1.0-Transitional - допускает использование любых элементов и атрибутов с графическим отображением, но указанные элементы рекомендованы к использованию только в случае крайней необходимости. Как вариант - для максимального облегчения миграции документов из HTML 3.2 на XHTML.
  • XHTML-1.0-Frameset - добавляет к возможностям второго типа документа (XHTML-1.0-Transitional ) еще использование фреймов.
  • XHTML 1.1 - версия, содержащая XHTML 1.1 Модульный, в котором авторам разрешено импортировать любые дополнительные свойства в разметку.

    Для XHTML Basic и XHTML MP характерны:

    • XHTML Основной , в котором из-за специальной облегченной версии XHTML не могут использоваться полные наборы элементов XHTML. Как правило, применяется для миниатюрных устройств, таких как, к примеру, мобильные телефоны.
    • XHTML мобильного профиля , основанному на XHTML Основной , но с добавлением специфических элементов.
    XHTML 2.0

    Последняя версия XHTML, которая так и не достигла полноценного статуса рекомендации. Деятельность разработчиков этой версии была остановлена в конце 2010 года, при этом все ресурсы скомбинировали в общую рабочую группу HTML 5 . Результаты наработок в декабре 2010 года напечатаны в виде отчета работающей группы.

    Недостатки XHTML

    Обзор всех источников и опыта работы профессионалов дает возможность собрать все причины, по которым использование XHTML можно назвать нецелесообразным. Основной толчок к определению этих причин дал обзор XTML 5 . Он позволил выделить 12 причин, из-за которых не рекомендуется пользоваться XHTML. 4. HTML - более оптимизированная разметка под любые поисковые системы, по сравнению с XHTML, ведь в нем пишется меньше кода. 5. Заинтересованным в актуальной защите авторских прав людям HTML намного тяжелее парсить - автоматически копировать, так как XHTML как раз и предназначен для максимальной простоты парсинга. 6. Гарантия надежности при автоматическом копировании XML-документа. Этому свидетельствует факт завершения работы в случае нахождения ошибки. 7. Internet Explorer версий 6 и 7 не поддерживают application/xhtml+xml . 8. Большинство HTML документов не индексируются многими поисковыми системами так, как XML . 9. Верстать HTML намного удобнее, легче, и проще. 10. Скрипты XHTML Document.write не работают, только простая переписка, использующая DOM-функции. 11. Используя DOM-функции, нужно опускать все названия элементов в нижний регистр. Такой же процедуры нужно придерживаться в отношении селекторов в стилях. 12. XHTML-формат не поддерживает функциональные программы document.body , document.images и document.forms . 13. Невозможность содержания всех элементов в прежнем виде, так как любой значок “>” может нарушить готовую структуру. А если его экранировать с помощью “>” или путем заключения в блоки CDATA, можно сломать HTML браузеры. 14. Не реальность автоматического распространения фоновых цветов body в XHTML на все окно. 15. Ожидание нового усовершенствованного и более популярного стандарта HTML 5 , с помощью которого заменится изученный HTML 4 -формат.

    Расширяемый язык разметки гипертекста (XHTML) — это быстрый способ ссылаться на несколько рекомендаций по языку, которые широко используются на устройствах с поддержкой Интернета для просмотра веб-страниц. Хотя он назван в честь своего предшественника, языка гипертекстовой разметки (), он фактически основан на расширяемом языке разметки (XML), который является очень избирательной частью стандартного обобщенного языка разметки (SGML).
    По сути, все они являются потомками SGML. Хотя HTML является прямым приложением SGML, XHTML — это то, что называется пространством имен, или набор определений для XML-документа, который помогает избавиться от двусмысленности, когда в любой заданной ситуации используется более чем один словарь XML.

    Язык возник из-за нескольких ограничений HTML и разнообразных способов реализации HTML. Примерно в то время, когда HTML обновился до версии 4, он начал ослабевать, при правильном использовании многими интерпретаторами HTML, компьютерными программами, которые анализируют HTML-документы на отформатированной, просматриваемой веб-странице. Поскольку появились мобильные устройства и другие платформы для просмотра веб-страниц, было необходимо лучшее решение. XML — это гораздо более строгая реализация SGML чем HTML, и в одном экземпляре могут использоваться различные пространства имён XML. Поэтому около 2000 года консорциум World Wide Web (W3C) разработал и сделал XHTML одной из своих рекомендаций для решения некоторых из этих возникающих проблем.

    Во всех смыслах и целях в большинстве случаев XHTML имитирует HTML, но поскольку первый использует пространство имён XML, его можно проанализировать любым интерпретатором XML, а HTML ограничивается только интерпретаторами HTML. XHTML в действительности воссозданный HTML под более ограничительным подмножеством XML SGML. Таким образом, более свежий язык сразу мог быть интерпретирован существующими веб-браузерами, а также стал доступен и для других платформ. Также важно помнить о том, что он должен соответствовать расширяемому аспекту прошивки XHTML. Он не только даёт возможность читать больше программ и платформ, но также он расширяется, позволяя использовать в своих документах другие пространства имён XML.

    Благодаря возможности XHTML включать другие пространства имён XML в документ, его можно расширить несколькими способами, чтобы представить больше, чем просто форматирование страницы. Например, математический язык разметки (MathML) может быть включен в эти документы для отображения математических формул и обозначений. Изображения также могут быть встроены с использованием пространства имён масштабируемой векторной графики (SVG) в документе этого типа. Таким образом, XHTML также может быть включен в другой XML-документ.

    Поскольку XHTML на самом деле просто HTML, уточнённый в соответствии с правилами XML, он предлагает три определения типа документа (DTD), которые дублируют те, что указаны в версии HTML версии 4. DTD — это подробное описание элементов языка разметки, включая, когда, где и как его можно использовать, а также любые связанные атрибуты. Но в более поздних версиях XHTML были установлены XML-схемы, ещё один, более надёжный способ описания XML-документа, который ещё больше расширил XHTML. В свою очередь были разработаны различные урезанные версии XHTML, которые затем могут быть использованы для конкретных целей, многие из которых вращаются вокруг мобильных вычислительных платформ.

    Статья основана на оригинальном документе W3C — XHTML™ 1.1 — Module-based XHTML — Second Edition: W3C Working Draft 16 February 2007 . Он может быть изменен, но скорее всего станет заменой для существующей рекомендации — XHTML™ 1.1 — Module-based XHTML.

    Строгое соответствие документов

    Документы, полностью совместимые с XHTML 1.1 — должны соответствовать следующим критериям:

  • Корневым элементом документа должен быть элемент .
  • Корневой элемент документа () должен указывать на пространство имен XHTML с помощью атрибута xmlns . Указателем пространства имен для XHTML является "http://www.w3.org/1999/xhtml", то есть открывающим тегом html должна быть конструкция вида: .
  • Корневой элемент может также содержать атрибут schemaLocation . Атрибут schemaLocation для XHTML определен в виде: "http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" .
  • Должно присутствовать объявление типа документа DOCTYPE , предшествующее корневому элементу. Идентификатор, включенный в объявление DOCTYPE , должен указывать на соответствующий DTD. Этот идентификатор может выглядеть следующим образом:
  • Приведем пример документа, соответствующего XHTML 1.1:

    Virtual Library

    Moved to example.org.

    Отметим, что в этом примере, включено объявление XML. Объявление XML, подобное вышеуказанному требуется не во всех XML документах. Авторам XHTML документов крайне рекомендуется использовать объявление XML во всех своих документах. Такое объявление требуется, когда кодировка XML-документа отличается от UTF-8 или UTF-16.

    У документов XHTML 1.1 следует указывать тип содержимого документа — либо как text/html , либо application/xhtml+xml .

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

    Тип документов XHTML 1.1

    XHTML 1.1 — это полнофункциональный тип документов с развитой семантикой. Однако, он не так разнообразен в функциональном отношении как типы XHTML 1.0 Transitional или XHTML 1.0 Frameset. Начиная с версии XHTML 1.1, тип документа не содержит устаревших элементов, содержащихся в типах XHTML 1.0 или HTML 4. Несмотря на эти исключения, или возможно благодаря им, тип XHTML 1.1 является надежной базой для создания новых типов документов в будущем с полной поддержкой различными агентами пользователей.

    Тип XHTML 1.1 составлен из следующих XHTML модулей.

    Структурный модуль body, head, html, title Модуль для работы с текстом abbr, acronym, address, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, var Гипертекстовый модуль a Модуль списков dl, dt, dd, ol, ul, li Модуль объектов object, param Модуль различных способов представления b, big, hr, i, small, sub, sup, tt Модуль редактирования del, ins Модуль поддержки двунаправленного текста bdo Модуль форм button, fieldset, form, input, label, legend, select, optgroup, option, textarea Табличный модуль caption, col, colgroup, table, tbody, td, tfoot, th, thead, tr Модуль изображений img Модуль карт изображений клиентской стороны area, map Модуль карт изображений стороны сервера Атрибут ismap, включенный в img Модуль внутренних событий Атрибуты событий Модуль метаинформации meta Модуль сценариев noscript, script Модуль таблиц стилей style Модуль атрибутов стилей (Устаревший) Атрибут style Модуль ссылок link Модуль базы base

    XHTML также использует модуль Ruby Annotation:

    Модуль Ruby Annotation ruby, rbc, rtc, rb, rt, rp

    Названия модулей в списке приведены согласно своим определениям в текущей версии «XHTML Modularization». Более подробная информация о модулях содержится в документе «XHTML Modularization».

    Отличия от XHTML 1.0 Strict

    XHTML 1.1 отличается от обеих технологий HTML 4 и XHTML 1.0. Наиболее значимым является устранение устаревших элементов. Вообще, существует стратегия определять язык разметки со структурно-функциональной стороны, вне зависимости от таблиц стилей, применяемых для дизайна документов.

    Отличия могут быть сформулированы следующим образом:

  • Атрибут lang заменен атрибутом xml:lang .
  • В элементах a и map , атрибут name заменен атрибутом id .
  • Коллекция элементов « Ruby » расширена.
  • Таким образом, тип XHTML 1.1 несильно отличается от XHTML 1.0 Strict, однако, эти отличия достаточно существенны и их необходимо учитывать.