XHTML5 мертвий чи це просто синонім HTML5?


87

Отже, що сталося з XHTML5?

http://www.w3.org/TR/html5/

Ця сторінка є чернеткою для xhtml5 та html5? Так що різниці між цими вченнями немає?


1
Здається, що з 2014-12-08 року W3C все ще працює над стандартом. w3.org/TR/html5 та w3.org/TR/html5/the-xhtml-syntax.html було оновлено 2014-10-28.
Russel Winder

6
На сьогодні, 2015 рік, XHTML є стандартом W3C! ... Дивіться оновлену дискусію
Пітер Краус

2
Ви прийняли неправильну відповідь. Відповідь vaxquis - правильна відповідь.
ЖакB

Відповіді:


77

У 2012 році на момент написання було зрозуміло, що W3C вирішив відмовитися від XHTML для HTML 5. Це рішення мотивовано кількома причинами:

  • Лише небагатьох людей насправді цікавив XHTML. Більшість веб-сайтів були написані простою HTML-формою.

  • Ще менше людей зрозуміли, що таке XHTML і як ним користуватися. Забагато веб-сайтів, які претендували на обслуговування XHTML, використовували замість них неправильні заголовки Content-Type: application/xhtml+xml.

  • Навіть коли ви повністю розумієте, що таке XHTML, і якими повинні бути заголовки, річ справді хитра, коли деякі хитрі браузери не приймають / підтримують application/xhtml+xmlтип вмісту. Це означало, що вам довелося змінити заголовок відповідно до браузера.

  • Частина XML XHTML також спричинила деякі дивні ситуації, які розробникам довелося вирішувати. Одне - INVALID_STATE_ERR: DOM Exception 11повідомлення, яке з’являється, коли ви присвоюєте текст, що містить символи HTML (як é), елементу на сторінці XHTML. Коли ви зіткнулися з цією помилкою з її дуже корисним повідомленням у великому веб-додатку після того, як зробили запит AJAX, ви насправді не маєте уявлення, чи це винна JQuery, AJAX чи щось інше.

  • Написання коду HTML 5 не означає змішування тегів навколо. Якщо ви захоплені XML та XHTML, ви все одно можете написати код HTML 5, який буде дуже близький до XML.

  • У перші дні мобільних телефонів XHTML був цікавим для мобільних пристроїв, які були не дуже потужними. Розбирати XML набагато простіше, ніж HTML. Тепер із двоядерними мобільними пристроями насправді не має значення, чи потрібно їм розбирати чистий правильний XML або брудний HTML, повний хаків та змішаних тегів.

Специфікація жовтня 2014 року згадує синтаксис XHTML . На даний момент незрозуміло, чи існує така річ, як нова мова XHTML (не синтаксис ), і якщо є, яка буде позиція XHTML, ні прийняття нового стандарту XHTML основними браузерами.


11
Я думаю, що у вашій відповіді бракує посилання на розмітку поліглоту
yannis

2
Однак ви можете обслуговувати HTML5 як XML і отримувати переваги суворішого синтаксису.
Erik Reppen

3
@ErikReppen, але ви втратите вигоду від посилань на суб’єкти на зразок 
пан Лістер

4
Страшне рішення. Ми викинули інструмент XSL, який був би доступний у XML.
Mihai Danila

5
Це твердження хибне. W3C не відмовився від XHTML у HTML5 Синтаксис, словниковий запас і API XHTML
Роб

32

XHTML5 - синонім для "HTML5, серіалізованого як XML".

Існують різні конкретні синтаксиси, які можна використовувати для передачі ресурсів, які використовують цю абстрактну мову, два з яких визначені в цій специфікації.

...

Другий конкретний синтаксис - це синтаксис XHTML, що є додатком XML. Коли документ передається з типом XML MIME, наприклад, application / xhtml + xml, він обробляється веб-браузерами як XML-документ, який повинен аналізуватись процесором XML. Автори нагадують, що обробка для XML та HTML відрізняється; зокрема, навіть незначні синтаксичні помилки запобігають повному виведенню документа, позначеного як XML, тоді як вони будуть ігноровані в синтаксисі HTML. Ця специфікація визначає версію 5.0 синтаксису XHTML, відомого як "XHTML 5".

Також тут є чудовий документ про написання поліглотів HTML5 (сторінки, які можна серіалізувати як звичайні HTML5, так і XML) тут:

http://dev.w3.org/html5/html-polyglot/html-polyglot.html#bib-HTML5

І навіть валідатор!

http://html5.validator.nu/

В даний час його рідко називають XHTML5 (і, мабуть, ще рідше використовується), оскільки це в основному HTML5, але він все ще є.

Простіше кажучи: кожна зміна специфікації HTML5 - це також неявна відповідна зміна XHTML5.


10

HTML5 - це фактичний і де-юре стандарт! XHTML також є, як стандарт.

HTML5 - словник і пов'язані API для HTML та XHTML

Рекомендація W3C від 28 жовтня 2014 року

Заголовок стандарту містить рядок "і XHTML" , тому ми говоримо про остаточне рішення W3C об'єднати HTML і XHTML в один єдиний стандарт ; і цей стандарт показує, як серіалізувати HTML-файл у XHTML-файл і навпаки.

XHTML частини та важливі примітки:


Розуміння та використання

Як підсумував Л.Ф. Сікос

XHTML5 - це серіалізація XML HTML5. Синтаксис описується специфікацією HTML5. Однак не слід плутати, оскільки XHTML5 є додатком XML. Іншими словами, HTML5 та XHTML5 мають однаковий словник, але різні правила розбору.

Документи HTML5 також можуть бути дійсними документами XML. Ця розмітка часто називається мовою "поліглот". Це мова, що перекривається, це документи HTML5 та XML одночасно. Серіалізації HTML5 та XHTML5 є взаємозалежними. Однак XHTML5 має суворіший синтаксис. Крім того, деякі частини XHTML5 не дійсні в HTML5, наприклад, інструкції з обробки.

Отже, строго кажучи (і наголошуючи @vaxquis), "XHTML - це лише синтаксис для серіалізації XML", немає DTD або іншого виду XML-схеми .

Деякі люди не люблять говорити "XHTML5 - це XHTML". Питання має розділитися на міні-FAQ про те, "коли я можу використовувати його як XHTML". Це WIKI, будь ласка, виправте, якщо є якісь "непорозуміння" ...


FAQ

Чи можу я використовувати XHTML5 як "версію стандарту XHTML 2014 року"?

У "ідеальній і загальній конверсіях HTML5-XHTML5 / XHTML5-в-HTML5" є деякі проблеми ", ви повинні робити" особистий вибір "і втрачену інформацію. Як контекст будуть різні відповіді:

  • Вільно кажучи : ТАК. Існує маса (простих) прикладів, коли відображення карти є ідеальним та оборотним.

  • Строго кажучи : НІ. Дивіться також коментар @vaxquis нижче та старі відповіді на цій сторінці. Деякі типові проблеми:

Чи можу я використовувати (безстрашно!) XHTML5 серіалізацію за допомогою XSLT, XPath тощо?

Так, ти можеш. Навіть серіалізуючи фрагменти.

Чи можна перевірити XHTML5?

Так, але не так швидко і просто, ніж старі DTD ... Дивіться складні валідатори, як validator.nu

Чи можу я використовувати XHTML5 як нетермінальний вихід у ланцюзі XSLT?

Так, ти можеш. Пояснимо, що ти можеш.

Деякі рамки, як Cocoon , використовують " XSLT ланцюги ". Виходи HTML5 та XHTML5 можна використовувати як "останній вихід у ланцюжку" ... Звичайно, на посередницьких етапах HTML5 не можна використовувати, оскільки це не XML, але XHTML5 можна використовувати.

Вищезазначена проблема валідації знову виникає тут: немає чіткої умовності, тому іноді виявляється менша чіткість "стандартної структури XHTML". У цій ситуації ви повинні звертати увагу на "самі конвенції" та бути послідовними.

Чи можна використовувати saveXML()метод DOMDocument на сторінці HTML5 ?

Так. Це типова ситуація, коли застосовуються рекомендації щодо серіалізації. XML буде дійсним, код XHTML5 відображається з початкового стану HTML5 та DOM ... Але в деяких структурах деяка інформація може бути втрачена, як це було сказано вище.


ніпе. XHTML - це лише синтаксис XML-серіалізації HTML5, який я вже висвітлював у своїй відповіді рік тому. Немає "злиття", оскільки воно вже було "об'єднане" ранніми чернетками W3C / WHATWG HTML5 після зберігання XHTML 2.0; Ви тут нерозумієте контекст. Крім того, XPath & XSLT пов'язані лише з питанням; також, як відомий тип MIME "XHTML-частина та / або примітка"? Крім того, ви в основному не можете серіалізувати HTML в XHTML - пропоноване рішення полягає в тому, щоб записати поліглоти, серіалізуючи як обоє, а не "повторно серіалізувати" його.
vaxquis

гул ... @ vaxquis, добре, я відредагував, будь ласка, допоможіть. І тут, у коментарях, давайте говоримо тією ж мовою: ви вживаєте "строго кажучи", а я використовував "ширше говоріння" у вступі ... Тепер ми можемо вказати в тексті відповіді, що ви хочете виправити.
Пітер Краус

9

Так, на жаль, XHTML пішов.

Додавання ще 1 причини до чудової відповіді MainMa:

Коли XHTML був створений, WebApps мав на меті використовувати для подачі структурованого контенту, який зрозумів би програмне забезпечення, що не переглядає браузер, який не матиме HTML-парсери з теговими супами. Для ScreenReaders XHTML як і раніше чудово, але для будь-якого іншого програмного забезпечення WebServices підходять, що потребують, і вони в основному використовують XML або JSON. Сам SOAP має власну XML-схему, простішу, ніж XHTML та орієнтовану на роботу.

Наскільки я знаю, у світі не існує навіть 1 WebApp, який обслуговує те саме повідомлення HTTP як для браузерів, так і для інших клієнтів. Навіть архітектура REST, яка мала на меті обслуговувати одне і те ж представлення вмісту в декількох типах вмісту, виходячи з уподобань клієнта, не використовується для обслуговування браузерів XHTML / feed.

Наприклад, в Java EE, використовуючи Eclipse, ми можемо розгорнути унікальний файл війни, що містить сервлети + JSP для обслуговування HTML, а також Axis2 для обслуговування WebService. Розробити окремі програмні засоби, призначені для браузерів та WebService, просто простіше, ніж мати унікальне, складне програмне забезпечення, яке обслуговує їх усіх.

Основною причиною відхилення REST є саме складність (і малося на увазі просто!) Розробити сервер, який обслуговує той самий контент для будь-якого типу клієнтів, нічого про це не знаючи. І також важко впоратися з необхідністю швидко розвиватися в Інтернеті, а також зберігати стабільне визначення, яке не змусить клієнтів, які не переглядають браузер, оновлюватись кожного разу, коли XHTML змінюється, скажімо, щоб він зберігав XHTML дійсним, коли він побудований багатьма різними модулями.

Таким же чином, дуже важко розробити клієнт, який не переглядає браузер, який аналізує документ XHTML, навіть якщо він є дійсним, через всі ті елементи XML, які призначені для структурування макетів, що надаються браузером, а не призначені для вмісту вмісту.

Якщо прихильники REST вже скаржаться на складність XML SOAP, яка є НАЙКРАЩО простішою, ніж XHTML, призначена для браузера, уявіть, як важко обробляти XHTML для декількох типів клієнтів, сервера та клієнта.

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

Але я також думаю, що XHTML5 потрібно створити. XHTML 1.1 (нормально, 1,0, 1,1 є непридатним) застаріє за допомогою HTML5, і нам ще потрібен валідатор, який приймає елементи HTML5 і підтверджує правильність XML.


1
Можливо, я трохи запізнююся, але чим XHTML 1.1 непридатний у порівнянні з 1.0? Якщо що-небудь, його DTD містить більше елементів. Якщо ви не говорите про набори кадрів та подібні речі?
Містер Лістер

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.