Помилки в XHTML та відмінності XHTML від HTML. Що таке XHTML? Усі значення атрибутів мають бути у лапках

Розвиток HTML у певному сенсі зайшов у глухий кут - нові теги вже не потрібні, оскільки вистачає існуючих, до того ж акцент розробки веб-сторінок змістився на стилі, які розширюють можливості оформлення документів. Природно, CSS ніяк не підміняє HTML, але дозволяє використовувати обмежений набір тегів, а вид елементів, їх положення і різні параметри, задавати через стилі.

Певним обмеженням HTML є і те, що він відноситься до формальних мов, у тому сенсі, що теги та їхня ієрархічна структура жорстко описані в специфікації. Тому популярність набирає XML, за допомогою якого можна створювати власні теги та формувати їхню структуру. Різниця між HTML та XML полягає не тільки в тегах, а й правилах написання коду. Браузер під час роботи з HTML «закриває очі» різні дрібні огріхи і недоліки у структурі чи тому, що не коректно зазначений атрибут. З XML такі фокуси не проходять, тому браузер видасть помилку, що документ неправильно сформований.

Щоб навчити розробників «правильного» мислення, змінити їх стиль написання коду, а також скоротити розрив між HTML і XML, і був розроблений XHTML як проміжний етап між ними.

XHTML (Extensible HyperText Markup Language, мова розмітки гіпертексту, що розширюється) призначений для заміни HTML і вважається його суворішою версією. Взагалі W3C визначає XHTML як останню версію HTML, яка поступово його витіснить. Чи так це буде насправді, покаже лише час.

Якщо міркувати про певний ідеальний код веб-сторінки, то його можна порівняти з програмою, яка не буде скомпільована, поки всі помилки не виправлені. Браузер виступає як компілятор і не відображає документ, якщо він не відповідає специфікації. XHTML, зберігаючи всі особливості HTML, вносить суворіші правила створення сторінок, щоб наблизитися до «ідеального» коду. Це дозволяє робити сайти незалежними від пристрою відображення та браузера. Іншими словами, сайт коректно показуватиметься у всіх сучасних браузерах і платформах на кшталт комп'ютерів, смартфонів, КПК, нетбуках та ін.

Насправді все більш приземлено. Розробники браузерів не можуть дозволити собі, щоб їхнє дітище працювало тільки з «правильним» кодом. А все через те, що більшість сайтів у світі просто не буде відображатися в такому браузері. Винні у такому стані речей і розробники та користувачі. Перші не забезпечили належну підтримку специфікації у своїх браузерах, а другі не намагалися її слідувати.

З цих причин XHTML 1.x є лише подобою HTML, але з суворішим синтаксисом, а не тією перспективною мовою розмітки, якою обов'язково варто переходити через його унікальні можливості.

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

Сувора відповідність документів

Документи, повністю сумісні з XHTML 1.1, повинні відповідати наступним критеріям:

  1. Кореневим елементом документа має бути елемент .
  2. Кореневий елемент документа ( ) повинен вказувати на простір імен XHTML за допомогою атрибуту xmlns. Вказівником простору імен для XHTML є "http://www.w3.org/1999/xhtml", тобто відкриваючим тегом html має бути конструкція виду: .
  3. Кореневий елемент може також містити атрибут schemaLocation. Атрибут schemaLocation для XHTML визначено у вигляді: "http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" .
  4. Повинне бути оголошення типу документа 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 Модуль об'єктів об'єкта, 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. Найбільш значущим є усунення застарілих елементів. Взагалі існує стратегія визначати мову розмітки зі структурно-функціональної сторони, незалежно від таблиць стилів, що застосовуються для дизайну документів.

Відмінності можуть бути сформульовані таким чином:

  1. Атрибут lang замінений на атрибут xml:lang .
  2. В елементах a і map атрибут name замінений атрибутом id .
  3. Колекція елементів "Ruby" розширена.

Таким чином, тип XHTML 1.1 не дуже відрізняється від XHTML 1.0 Strict, проте, ці відмінності досить суттєві і їх необхідно враховувати.

XHTML Розшифровується як ExtensibleHypertext Markup Language і російською - Розширювана мова розмітки гіпертексту. Зверніть увагу не розширений, а той, що розширюється. Це означає, що ця мова

Поповнюється (розширюється) досі. Так що таке XHTML? Основною відмінністю XHTML від цього HTML є спосіб обробки документа (інтернет-сторінки). Варто запровадити ще одне визначення. Парсер – програма або частина програми, яка виконує синтаксичний аналіз. Також його ще називають синтаксичним аналізатором. Якщо ще простіше, то дана програма виконує аналіз усієї будови сторінки, всього коду сторінки. У HTML під час перебування помилки, під час аналізу вона виправлялася, що потребувало додаткового часу - браузеру треба було зрозуміти, що автор (розробник) хотів написати. Наприклад, при помилці у якомусь тезі, він просто виводився з рештою тексту.

Ще одна відмінність полягає в тому, що всі елементи повинні бути закриті, а поодинокі теги повинні після символів мати знак, наприклад:
. Про теги я напишу окрему велику статтю, а також напишу про кожен тег окремо. Кодування в XHTML - UTF-8 (найпоширеніша зараз), в HTML використовувалася ISO 8859-1.

Що таке Модуляризація XHTML?

Модуляризація XHTML – це поділ XHTML 1.0 щодо HTML 4 на колекцію абстрактних модулів, які надають специфічні типи функціональності. Ці абстрактні модулі реалізовані в даній специфікації з використанням мови XML Document Type Definition/Визначення Типу Документу, але очікується поява реалізації з використанням Схеми XML.
Правила визначення абстрактних модулів та їх реалізації з використанням ОТД також визначено у цьому документі.


xhtml

Ці модулі можуть комбінуватися один з одним та з іншими модулями для створення піднабору та розширення типів документа XHTML, які можна кваліфікувати як членів сімейства типів документів XHTML.

Навіщо потрібна Модуляризація XHTML?

Модель форматування

Попередні версії HTML намагалися визначити частини такої моделі, які вимагалися від користувача агента (ПА) для використання при форматуванні документа. З появою W3C почав процес відокремлення уявлення від структури. XHTML 1.0 підтримує цей поділ, і цей документ продовжує рух від HTML та його нащадків у цьому напрямі. Відповідно, цей документ не висуває жодних вимог до моделі форматування, асоційованої з поданням документів, які розмічені за допомогою типів документів Сімейства XHTML.


xhtml

Навпаки, цей документ рекомендує, щоб автори вмісту покладалися на механізми визначення стилів, такі як CSS, для визначення моделі форматування для свого вмісту.
Якщо ПА підтримують механізми стилів, документи будуть сформатовані так, як очікується.
Якщо ПА не підтримують механізми стилів, документи будуть сформатовані так, як визначає сам ПА. Це дозволяє ПАгентам Сімейства XHTML підтримувати складні (так і проситься — наворочені; А.Р.) моделі форматування на тих пристроях, де це можливо, та змінювати моделі форматування на тих пристроях, де це допустимо

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

Версії XHTML

XHTML 1.0схвалена консорціумом Всесвітньої павутини ще 26 січня 2000 року. Вже 1 серпня 2002 року було опубліковано другу змінену редакцію специфікації.

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

  1. XHTML-1.0-Strict- дозволяє виключити повне використання елементів та атрибутів, які задають графічне відображення у вигляді елементів fontабо атрибуту bgcolor. Належить до найкращого типу документів.
  2. XHTML-1.0-Transitional- дозволяє використовувати будь-які елементи та атрибути з графічним відображенням, але зазначені елементи рекомендовані до використання лише у разі крайньої необхідності. Як варіант - для максимального полегшення міграції документів з HTML 3.2на XHTML.
  3. 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-формат.

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

Головна відмінність між HTML та XHTMLу тому, що XHTMLзаснований на синтаксисі XML. А, отже, він суворіший, і в ньому не можна допускати тих вольностей, які можна допустити в HTML.

А тепер за пунктами розберемо особливості синтаксису XHTML:

1. Кожен тег має закриватися

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

Однак, у XHTMLвсі теги повинні закриватися, навіть одиночні, причому вони закриваються таким чином:

Різниця тільки у сліші перед другою кутовою дужкою.

2. Усі спецсимволи мають бути замінені на сутності

Тобто не можна писати так: " & ", потрібно писати цей символ лише сутністю, тобто " & ". HTMLподібного правила немає.

3. Усі значення атрибутів мають бути у лапках.

Всі ми з Вами знаємо, що в HTMLможна написати ось так:

Тобто в нас значення атрибуту widthзнаходиться без лапок. XHTMLце неприпустимо, і там треба писати ось так:

4. Усі теги та атрибути повинні писатись у нижньому регістрі.

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

Як бачите, різниця лише у синтаксисі. Є також інші дрібні відмінності, але ми про них говорити не будемо. Іншими словами, єдина перевага XHTML- це легший парсинг документа. А також XHTMLдуже підходить любителям "чистого" коду. Більше жодних переваг немає. Усі браузери коректно відображають та HTML, і XHTML. Причому часто браузери XHTMLобробляють як HTMLтому для зовнішнього вигляду серйозних відмінностей у HTML та XHTMLточно не буде.

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