Зрештою, чому вибрати XHTML замість HTML? [зачинено]


77

Цікаво, чому я повинен використовувати XHTML замість HTML.

Передбачається, що XHTML має бути "модулізованим", але я не бачив, щоб жодна мова на стороні сервера використовувала будь-що з цього.

XHTML також є більш суворим, і я не бачу переваги. Що пропонує XHTML, що мені так потрібно? Як це робить мій код "кращим"?

EDIT: ще одне запитання, яке я знайшов у коментарях: Чи аналізує XHTML швидше, ніж HTML?

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

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


12
+1 Мені цікаво дізнатись, чи можуть сучасні браузери швидше проаналізувати його, оскільки в звичайному HTML менше безладу, і вони можуть просто використовувати звичайні аналізатори XML.
Домінік Роджер

Гарне питання; Я не вважаю, що моя думка варта відповіді, але я вважаю, що це більша частина часу - марне витрачання часу. Робіть сумісний HTML і називайте його на день.
Паоло Бергантіно

4
Кожного разу, коли я беру участь у XHTML, я бажаю, щоб HTML5 трохи
натягнув

1
Про це просили кілька разів, див., Наприклад, (поточне) верхнє посилання у стовпці "Пов’язані" ...
PhiLho

2
@WebDevHobo: Будь ласка, перегляньте зміну прийнятої відповіді, оскільки вона не підкріплена жодними надійними джерелами, і є джерела, які її спростовують: webdevout.net/articles/beware-of-xhtml#myths
Kornel

Відповіді:


47

Вам слід прочитати Обережно XHTML , це інформативна стаття, яка попереджає про деякі підводні камені XHTML перед HTML.

Я був досить симпатичним щодо XHTML, поки не прочитав його, але він робить кілька вагомих моментів. Включаючи наступний біт;

XHTML 1.x не є “сумісним із майбутнім”. XHTML 2, який зараз знаходиться на стадії складання, не сумісний із XHTML 1.x. XHTML 2 матиме багато основних змін у способі написання та структурування документів, і навіть якщо ви вже маєте свій сайт, написаний у XHTML 1.1, як правило, буде потрібно повне перезапис сайту, щоб перетворити його у належний XHTML 2. Простий Перетворення XSL в більшості випадків буде недостатнім, оскільки деякі семантики не перекладаються належним чином.

HTML 4.01 насправді є більш сумісним із майбутнім. Дійсний документ HTML 4.01, написаний на сучасних рівнях підтримки, буде дійсним HTML 5, а HTML 5 - там більшість уваги розробників браузерів та W3C.

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

Не приймайте статтю за висловлювання проти XHTML, автор дійсно говорить про хороші сторони XHTML, але добре знати про недоліки, перш ніж зануритися.


3
Приємна стаття та реквізит для того, що ви показали його нам.
KdgDev

9
XHTML 1.x "сумісний з майбутнім". Термін дії статуту робочої групи XHTML 2 закінчився. - Зараз його замінив XHTML5
Casebash

3
html5 - це не xhtml. xhtml помре, а xhtml2 ніколи не вийде
Ніл Макгіган,

1
@MrLister Ви маєте на увазі той факт, що XHTML насправді ловить синтаксичні помилки та сигналізує про них, замість того, щоб мовчки їх виправляти та залишати приховані помилки у вашому коді?
Наюкі

1
@Nayuki Той факт, що XHTML5 (на відміну від HTML5 або попередніх версій XHTML) не розпізнає імена сутностей, такі як  і é. З цієї причини я залишив усі свої файли XHTML на XHTML 1.1.
Містер Лістер,

38

Я збирався додати це як коментар до одного з інших дописів, але воно стало занадто великим.

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

Відокремлення мета-розмітки та презентації є життєво важливою частиною розробки для "програмованого Інтернету", і це не тільки покращить SEO та доступ для читачів з екрана / текстових браузерів, але також призведе до того, що ваш веб-сайт стане легшим для аналізу тими, хто бажає отримати доступ до нього програмно (у багатьох простих випадках це може заперечити потребу у розробці певного API або навіть просто дозволити сценаріям на стороні клієнта робити щось на зразок, легко визначати телефонні номери). Якщо ваша веб-сторінка відповідає специфікації XHTML, її легко пройти за допомогою інструментів, пов’язаних з XML, і таких речей, як XPath ..., що є фантастичною новиною для тих, хто хоче отримати певну інформацію з вашого веб-сайту.

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

Нехай вас не вводить в оману натовп, який вважає, що XHTML є незначним, а є надмірно обмежувальним і безглуздим ... він був створений з метою, яку 95% країн світу, здається, ігнорують / не знають про неї.

Безумовно, використовуйте HTML, але використовуйте його для того, для чого він корисний, і використовуйте той самий підхід, дивлячись на XHTML.


Що стосується швидкості синтаксичного аналізу , то, я думаю, було б дуже мало різниці в синтаксичному аналізі фактичних документів між XHTML та HTML. Компроміс відбуватиметься виключно в тому, як ви описуєте документ, використовуючи наявну розмітку. Теги XHTML, як правило, довші через необхідні атрибути, належне закриття тощо, але відмовляються від необхідності будь-якої розмітки презентації в самому документі. Зважаючи на це, я думаю, ви говорите про порівняння одного типу яблук із зовсім трохи іншим видом яблук ... вони різні, але навряд чи це матиме якийсь наслідок (з точки зору синтаксичного аналізу та візуалізації ) коли все, що ви хочете - це здорове, смачне яблуко.


14
Хоча цілі XHTML є похвальними, постачальники браузерів погано грають у м'яч ні з XHTML, ні з CSS. Правильний XHTML в даний час ускладнює розробку веб-сайтів і не спрощує. Коли постачальники інструментів та браузерів змінять цю ситуацію, можливо, ми зможемо почати бачити деякі переваги, але ті, хто виграє найбільше, не розробники сайтів, а продавці SE. Уявіть, що ви можете представити багату значущу інформацію, зібрану з ваших сайтів, до такої міри, що сайт сам не потребує відвідування? Що відбувається з вашими доходами від реклами? Як ви думаєте, хто взагалі живе у вежах зі слонової кістки?
AnthonyWJones

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

7
Відділення презентації від розмітки було метою, яка до певного часу передувала XHTML, використовуючи суворий тип доктрини. І HTML 4 зробили етілірованниє презентаційні розмітки на користь структурної розмітки. Те, що майже всі використовують HTML 4 Transitional, не означає, що це гарна ідея або навіть рекомендовано специфікацією. Окрім цього, ви не отримуєте справжньої розлуки, оскільки вам майже завжди доводиться пристосовувати свою розмітку до свого стилю. CSS Zen Garden - це приємно, але для деяких ефектів CSS потрібно кілька шарів <div> s. І це насправді не вдале розділення стилю та змісту imho. Тут дуже схожі HTML і XHTML
Джої

2
Концепція передує XHTML, але XHTML робить її пріоритетною, і специфікація намагається надати певний вид суворого контролю над нею. "Підтримка" HTML4 для розділення презентації та розмітки в кращому випадку є неакуратною. <div> не є презентаційними тегами, вони призначені для логічного розподілу інформації. Те, що вони не використовуються належним чином, не означає, що специфікація XHTML якось втрачає чинність. XHTML заохочує набагато кращі практики, ніж HTML, і набагато суворіший щодо поганого синтаксису. Це безпрограшна ситуація для тих, хто хоче працювати над створенням стандартної мережі.
Джеймс Б,

2
Ваша відповідь дуже неточна. HTML4 підтримує поділ точно так само, як і XHTML1.0: w3.org/TR/REC-html40/present/styles.html#h-14.1 просто тому, що специфікація XHTML1.0 не включає визначення окремого елемента чи атрибута . Він стосується HTML4 у всіх аспектах, пов’язаних із семантикою та презентацією.
Корнел

18

Для відвідувача веб-сайту це, мабуть, не робить жодної видимої різниці. Крім того, XHTML, як правило, важче використовувати, оскільки принаймні один широко розповсюджений браузер все ще не знає, як з ним поводитися, і в такому випадку вам потрібно подати його як text / html (що дає недійсний HTML).

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

Окрім цього, я не бачу переконливих причин для його використання. XHTML був створений у підході використання XML-функцій для HTML, і в основному він зводиться до "HTML 4 з декількома прикрими побічними ефектами" (принаймні IMHO).


5
+1. Я цілком згоден. XTHML - ще один приклад розробки комітетами, що живуть у вежах із слонової кістки (CSS - це інший приклад, який я маю на увазі).
AnthonyWJones

2
Щиро погоджуємося з XHTML, але розробка CSS була прекрасною до їх відносно недавнього рішення просто дозволити виробникам браузерів розробити, яким повинен бути стандарт. Проблеми з CSS виглядають на 100% виною продавців для мене.
Аннаката

10
Я принципово не погоджуюсь з аргументом, представленим тут. Я збирався розмістити коментар, але він став занадто великим і став відповіддю (нижче). Специфікація XHTML. був розроблений не просто для полегшення синтаксичного аналізу (хоча він це робить), а для підтримки різноманітних технологій, що включають більш повну структуру, ніж HTML міг дозволити. Можливо, розроблений тими, хто баштований зі слонової кістки ... але специфікація має набагато більший сенс, коли ви поглядаєте на все в Інтернеті.
Джеймс Б,

3
Я припускаю, що всі позитивні голоси за цю публікацію показують дві речі: 1. багато людей насправді не зрозуміли XHTML (див. Відповідь Джеймса), і 2. є багато розчарувань з цього приводу через сприйману корисність. Хто винен? Я припускаю, що “розголошення” для XHTML було просто дуже, дуже поганим.
Конрад Рудольф

1
@Konrad: XHTML, без сумніву, корисний, але ті, хто проголосував, можуть бути: 1) Розчаровані, як ви сказали, фактично XHTML повинен (наразі) подаватися як HTML! 2) Просто виводити просту інформацію для людських користувачів, не націлюючи зовнішні аналізатори, і не потребуючи модульності та інших розширених функцій (простір імен ...).
PhiLho

17

Використовуйте HTML (HTML4 Strict або HTML5).

  • HTML може повністю використовувати CSS, може бути перевірений і проаналізований однозначно. Поділ структури та презентації було зроблено в HTML4 та XHTML лише продовжували це.

  • Усі браузери підтримують HTML. Лише деякі браузери підтримують XHTML, а ті, що підтримують, часто мають більш зрілу та краще перевірену та оптимізовану підтримку HTML (це спричинено тим, що крихітна частина сторінок використовує режим XML).

  • Якщо ви дбаєте про IE та Google, вам доведеться використовувати HTML або підмножину XHTML та HTML, визначені у Додатку C специфікації XHTML. Останнє є майже найгіршим з обох світів, оскільки такий XHTML не може бути створений за допомогою стандартних інструментів XML, не може використовувати нові механізми розширення для XHTML і має додаткові обмеження порівняно з тими, що існують лише в HTML.

  • Зараз XHTML1.0 перевищує 10 років, він був розроблений у "Web1.0" раз, і, як сказав керівник W3C в ретроспективі це не вийшло, і потрібен кращий підхід . W3C HTML5 написаний під час розмови та відповідає потребам веб-програм, що використовуються сьогодні, і має дуже хорошу зворотну сумісність.

  • HTML5 усуває багато прогалин між HTML4 та XHTML1 (наприклад, додає вбудований SVG, MathML i RDF), очищає мову за межі того, що було зроблено в XHTML1.0 та XHTML1.1.

  • XHTML2 не буде підтримуватися веб-браузерами в найближчому майбутньому. Цілком ймовірно, що він ніколи не буде підтриманий (усі постачальники браузерів серйозно підтримують [X] HTML5, деякі вже заявили, що не застосовуватимуть XHTML2).


XHTML1.0 має точно таку ж семантику та відокремлення презентації від структури, як HTML4.01. Той, хто каже інше, не читав специфікації . Я закликаю всіх прочитати специфікацію - вона напрочуд коротка і нецікава.

  • Таблиці стилів були введені в HTML4.01 і були ні змінені в XHTML1.0.
  • Презентаційні елементи застаріли в HTML4.01 і не були вилучені в XHTML1.0.

Міфи про XHTML .


Немає незрозумілих відмінностей у HTML та XHTML, які могли б зробити аналіз одного набагато повільнішим за інший. Це залежить від того, як реалізований парсер.

  • І аналізаторам SGML, і XML потрібно завантажувати та аналізувати цілі DTD, щоб зрозуміти сутності. Одне лише це, як правило, більше праці, ніж розбір самого документа. Синтаксичні аналізатори HTML майже завжди "обманюють" і використовують жорстко закодовані сутності та інформацію про елементи. Аналізатори XHTML у браузерах теж обманюють.
  • Розбір HTML вимагає обробки неявних початкових і кінцевих тегів, а реальний HTML вимагає додаткової роботи для обробки неправильно розміщених тегів.
  • Правильний синтаксичний аналіз XHTML вимагає відстеження просторів імен XML.
  • Драконівські правила XML вимагають перевірки, чи кожен символ правильно закодований. Синтаксичні аналізатори HTML можуть з цим уникнути, але OTOH їм потрібно шукати <meta>.

Загальна різниця у вартості синтаксичного аналізу незначна порівняно з часом, який потрібно для завантаження документа, побудови DOM, запуску сценаріїв, застосування CSS та всього іншого, що потрібно зробити браузерам.


13

Я здивований, що всі відповіді тут рекомендують XHTML замість HTML. Я твердо дотримуюсь протилежної думки - ви не повинні використовувати XHTML, в найближчому майбутньому. Ось чому:

  • Жоден браузер не інтерпретує XHTML як XHTML, якщо ви не подаєте його як mimeype application/xhtml+xml. Якщо ви просто подаєте його із типом mime за замовчуванням, усі браузери інтерпретують його як HTML - наприклад, приймаючи незамкнені або неправильно вкладені елементи.

  • Однак насправді цього ніколи не слід робити цього, оскільки Internet Explorer не розпізнає application/xhtml+xmlі не зможе повністю відтворити сторінку.

  • Існують суттєві відмінності в DOM між XHTML та HTML. Оскільки на даний момент усі так звані сторінки XHTML обслуговуються як HTML, весь код javascript пишеться за допомогою HTML DOM. Якщо підтримка mHTML-типу XHTML стає досить значною, щоб переконати людей почати використовувати його, більшість їхніх кодів javascript зламається - навіть якщо вони вважають, що їх сторінки перевіряються як XHTML.


1
Це навряд чи суть справи ... ніби ніхто ніколи не використовує її, як це стане колись прийнятим стандартом? Існує безліч робочих шляхів, як і для величезної кількості нових технологій, що розвиваються в Інтернеті (чорт, навіть PNG з прозорістю все ще потребують обробки в IE).
Джеймс Б.

5

Замість того, щоб продовжувати дебати щодо HTML 4.01 Strict проти XHTML Strict, я б запропонував почати використовувати HTML 5 сьогодні. Джон Резіг, автор jquery, зробив подібну пропозицію минулого року у своєму блозі.

Докттип HTML 5 завдяки своїй чудовій простоті запускає стандартний режим у всіх браузерах (включаючи IE6).

<!DOCTYPE html>

Це воно.

HTML 5 надає кілька нових захоплюючих функцій, таких як <canvas>тег, який потенційно може підняти розробку програм Java на наступний рівень. HTML 5 також має належну підтримку засобів масової інформації (а засоби масової інформації є досить важливим аспектом Інтернету в наші дні!) У формі <video>та<audio> тегів.

Якщо вам подобається синтаксис XHTML, тобто закриття "порожніх" тегів, таких як <br />, що повністю підтримується в HTML 5. Від Карла Дубоста з допису W3C Дізнайтеся, як писати HTML 5 :

тег із автоматичним закриттям дозволений і відповідає HTML 5.

XHTML2 приділяється порівняно мало уваги порівняно з HTML 5. Стає все більш очевидним, що HTML 5 - це майбутнє розмітка в Інтернеті. Найновіший браузер Microsoft, IE8 як і раніше робить XHTML поданим як text / xml як text / html.

Корпорація Майкрософт має співголову в робочій групі W3C HTML, і від них передбачається підтримка HTML 5. Усі постачальники браузерів публічно заявили про свою підтримку HTML 5.

Зрештою, навіть якщо XHTML2 знову отримає підтримку з боку галузі, це не буде серйозною проблемою, якщо існуватимуть два конкуруючі стандарти, як це було раніше. Обидві мови підтримують простори імен XML (у випадку HTML 5 серіалізація HTML, тобто перемикання DOCTYPE).


Не можу не погодитися, що HTML5, здається, є дуже перспективним стандартом. Я сподіваюся, що це коштує краще, ніж специфікація XHTML2.
Джеймс Б,

1
Тим не менше, якщо не закривати теги, я відчуваю бруд.
KdgDev

2
@WebDevHobo, ви можете закрити свої теги, і вони все одно будуть правильно перевіряти HTML 5 - це частина специфікації. Я також віддаю перевагу цьому (див. Оновлення до публікації для цитування).
Баярд Рендель

4

Погляньте на http://www.w3.org/MarkUp/2004/xhtml-faq#need . Окрім модулізації, є кілька вагомих причин.

Я віддаю перевагу XHTML, оскільки він суворіший та чіткіший. HTML химерний, і браузери повинні приймати такі речі <b><i>sadasd</b></i>. Хоча це дійсно простий приклад, він також може стати більш заплутаним, і різні браузери можуть викладати речі по-різному.

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


Браузери не повинні приймати неправильно вкладені теги (ваш приклад - недійсний HTML), але вони це роблять - оскільки їх використовують автори, і підкидання помилок користувачам замість того, щоб відображати сторінку, не допомагає. Навіть якщо він використовується як application / xhtml + xml, багато браузерів переходять у текстовий / html-режим, якщо виявляють помилку добре сформованості.
Квентін

теги <b> та <i> також застаріли в html, оскільки вони є презентаційними. <strong> та <em> - семантичні еквіваленти.
Баярд Рендель

@Bayard: <b> та <i> не є застарілими, незважаючи на те, що вони є презентаційними. w3.org/TR/REC-html40/present/graphics.html#edef-B (це не змінилося ні в XHTML, ні в HTML5). Звичайно, їх не слід використовувати, якщо інші елементи є більш доречними, але HTML не має елемента для всього, і використання <em> для будь-чого, що курсивом, є настільки ж неправильним.
Корнель

3

Деякі відмінності:

  • Теги XHTML повинні бути правильно вкладені
  • Документи повинні мати один кореневий елемент
  • Теги XHTML завжди мають малі літери
  • Теги завжди повинні бути закритими (наприклад, використання <br>тегу в XHTML повинно мати закривальний тег <br />або <br></br>в XHTML)

Ось кілька посилань на нього

вікі XHTML

wiki HTML проти XHTML


"# Теги XHTML завжди в нижньому регістрі # Теги повинні бути завжди закритими (наприклад, використання тегу <BR> в XHTML має містити закриває тег <BR /> або <BR> </BR> в XHTML)" Чому ваш <br / > тег великими літерами?
Ентоні Карті

дох ... це був напружений тиждень! ;) Гарне місце, я його відредагував.
kevchadders

1
Елементи HTML також правильно вкладаються. Іноді початкові та кінцеві теги необов’язкові або заборонені. Документи HTML повинні мати один кореневий елемент.
Квентін

2
Питання не в відмінностях, я гадаю, плакат їх знає ...
Філо

2

Як програміст, ви повинні ДУЖЕ турбуватися про свій код. HTML потворний і дотримується кількох правил.

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

XHTML краще для всіх, оскільки він допоможе перемістити Інтернет до точки, коли всі (усі браузери) можуть домовитись про те, як відображати веб-сторінку.

XHTML є нащадком XML, і нам набагато простіше на аналізаторах, створених для аналізу синтаксично обґрунтованих XML-документів.

Якщо ви не бачите переваг XHTML, ви можете використовувати MS Word для створення своїх HTML-документів.


4
HTML має досить суворі синтаксичні та семантичні правила. Вони просто не такі, як для XML. Можливо, ви захочете прочитати специфікацію :)
Джої

HTML4 має. HTML5 має правила (або, принаймні, є багато людей, які хочуть, щоб він мав), як виправляти помилки, тобто більше не має жорстких синтаксичних та семантичних правил. А проблема HTML4 полягає в тому, що браузери вже виправляють помилки, роблячи жарт "строгий синтаксис".
OregonGhost

2
"Якщо ви не бачите переваг XHTML, ви могли б також використовувати MS Word для створення своїх HTML-документів". .... Справді?
Паоло Бергантіно,

Я знаю специфікацію HTML 4.1, але не відчуваю, що про це запитував WebDevHobo. Більшість людей не усвідомлюють, що HTML 4.1 - це специфікація, тому вони кодують, як хочуть, у тому числі, як зазначено вище <b><i> неправильно</b> </i>. Крім того, я ніколи не говорив, що він не має правил, а лише, що він має менше. Будь ласка, перегляньте -1, оскільки цей аргумент стосується скоріше використання стандартів, аніж того, що існує стандарт для html (скажіть це IE6).
Ентоні Карті,

2
Ви кажете, що HTML потворний ... Я кажу, що XML / XHTML такий же потворний і більш багатослівний, тому він поширює більше цієї потворності. Більш суттєво, я все ще не бачу, що заважає постачальникам браузерів бути "дружніми" і робити все (несумісне) якнайкраще, щоб обробляти невідповідний XHTML, як це роблять зараз з HTML, і даючи нам MSIE6-для-XHTML у всьому знову.
Dave Sherohman

2

XHTML дозволяє використовувати всі ті інструменти, розроблені для XML. Серед них є XSLT, вбудовування SVG тощо ...


Теоретично SVG приємний, але більшість веб-сторінок вражають проблему MSIE, коли справа стосується SVG. (І триває робота над описом SVG у HTML5)
Квентін

Я б не сказав, що дозволяє, але робить це простіше. HTML дозволяє SVG через <object> та дані: URI (не такий гарний, але можливий). XSLT може виводити HTML, і є інструменти, які можуть аналізувати HTML і передавати його процесору XSLT (наприклад, у PHP вам просто потрібно змінити loadXML () на loadHTML (), і все це працює).
Корнель

SVG в URI даних на Gecko не дозволяє використовувати будь-які стилі (помилка 308590), для одного, що робить його якоюсь непочатковою.
Кен

2

Цікавий розвиток: Робоча група XHTML 2, як очікується, припинить роботу наприкінці 2009 року, W3C збільшить ресурси на HTML 5

2009-07-02: Сьогодні директор оголошує, що коли термін дії статуту робочої групи XHTML 2 закінчується, як було заплановано на кінець 2009 року, статут не буде поновлюватися. Роблячи це, та збільшуючи ресурси в Робочій групі, W3C сподівається прискорити прогрес HTML 5 та пояснити позицію W3C щодо майбутнього HTML. Поширені запитання відповідають на питання про майбутнє результатів роботи робочої групи XHTML 2 та стан різних обговорень, пов’язаних з HTML. Дізнайтеся більше про активність HTML.

Ну, я думаю, це робить майбутнє HTML досить зрозумілим.


1

XHTML змушує вас бути акуратними.

Наприклад, у HTML ви можете написати:

<img src="image.jpg">

Це не дуже логічно, оскільки imgтег ніколи не закривається. Однак у XHTML ви змушені акуратно закрити тег, наприклад:

<img src="image.jpg" />

Мені подобається використовувати те, що змушує мене бути охайною.

Стів


Я думаю, що має сенс тег img ніколи не закривається. HTML! = XML, а оскільки тег img не має вмісту, навіщо закривати його?
Пім Ягер

3
Це цілком логічно - якщо ви не ставитеся до цього ізольовано. Немає причин, щоб елемент img містив вміст, тому DTD каже, що він не може мати вміст. Оскільки він не може містити вміст, ви можете сказати (зі 100% надійністю), що все, що з’являється після тегу старту, знаходиться поза елементом. В результаті кінцевий тег заборонено. Це призводить до меншої розмітки. Це менш інтуїтивно, але легше писати, коли ви вивчите правила.
Квентін

2
1) пробіл перед закінчуючою рисою застарілий, я сумніваюся, що він все ще потребує багатьох браузерів Netscape. 2) Ви можете бути акуратними та охайними з HTML, закриваючи всі теги, приймаючи завершальну частину. Але справді дотримання правил може бути простішим для розробника.
PhiLho

@Pim Jager та @David Dorward: Я бачу, що ви говорите з елементом зображення, що не має вмісту, але я думаю, що спосіб XHTML зробити це більш логічно та послідовно.
Стів Гаррісон,

@PhiLho: 1) Дякую, я розгляну це. 2) Я згоден.
Стів Гаррісон,

1

Підзаголовок до рекомендації XHTML 1.0:

Переформулювання HTML 4 в XML 1.0

Сьогодні існує багато інструментів для обробки XML. Використовуючи XHTML, ви дозволяєте величезний набір інструментів працювати на ваших сторінках та програмно витягувати інформацію.

Якби ви використовували HTML, це теж було б можливо. Існують інструменти для синтаксичного аналізу дерев HTML DOM. Однак ці інструменти часто можуть бути більш спеціалізованими, ніж інструменти для XML. Можливо, ви не знайдете своїх улюблених засобів обробки даних XML, сумісних з HTML. Крім того, сьогодні існує так багато застосувань XML, що ви можете використовувати XML для якоїсь іншої частини програми; чому б також не використовувати той самий синтаксичний аналізатор XML для синтаксичного аналізу ваших веб-сторінок? Це мотивація XHTML.

Якщо ви вже знайомі з HTML 4.01, у вас є створений проект із використанням HTML 4, і у вас немає тонн вільного часу, просто скористайтеся HTML 4.01. Якщо у вас є вільний час, вивчіть XHTML 1.1 у будь-якому випадку і почніть свої нові проекти в XHTML 1.1 - це не зашкодить. Якщо ви використовуєте щось інше, ніж HTML 4.01, або в будь-якому випадку незнайомі з HTML 4, просто вивчіть XHTML 1.1.


Шкодою у використанні XHTML є або відсутність сумісності з IE, або обмеження себе загальним підмножином XHTML та HTML. Наприклад, ви не можете безпечно згенерувати XHTML "Додаток C" за допомогою XML-серіалізатора (наприклад, <script /> заплутає не-XML-аналізатори).
Корнел

Ти маєш рацію. Я не думав створювати XHTML, коли писав свою відповідь. І так, я думав про загальну підмножину HTML та XHTML, щоб уникнути проблем синтаксичного аналізу IE.
Уеслі,

1

Використання XHTML із правильним DocType змусить браузер рендерити вміст у більш суворому (суворому) режимі. Це змушує різні браузери поводитись краще і, головне, більше схожі один на одного. Це значно полегшує вам роботу веб-розробника, оскільки це зменшує кількість налаштувань певного браузера, необхідних для того, щоб вміст виглядав однаково у всіх браузерах.

Quirksmode.org має багато корисної інформації на цю тему.


2
Використання HTML із правильним Doctype також переведе браузери в стандартний режим. Чорт вазьми, використання nonsenseML із божевільно складеним Doctype зробить це теж.
Квентін

0

На мій погляд, суворість, принаймні теоретично, хороша річ, тому що в HTML вам не потрібно бути суворим, і через це та непотріб HTML5, браузери мають вдосконалені алгоритми виправлення помилок, які дозволять зробити найкраще з непрацюючого HTML. Проблема в тому, що алгоритми не зовсім однакові і призведуть до дійсно дивної поведінки, яку ви не можете передбачити. З іншого боку, у XHTML у вас зазвичай чудовий, дійсний XHTML, тому алгоритми виправлення помилок не потрібні, тобто вся поведінка браузера передбачувана. Крім того, суворий код полегшує вашим інструментам роботу з кодом. Отже, насправді вам нема чого втрачати, використовуючи XHTML, але є певний потенціал для виграшу. Зі звичайним HTML все погіршиться, коли HTML5 нарешті вийде і "будьте відкритими те, що ви приймаєте" призведе до описаної дивної поведінки. Але принаймні тоді це стандартизована дивна поведінка. Зітхайте.

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


4
Браузери мають виправлення помилок, оскільки люди пишуть поганий HTML, а не тому, що HTML "менш суворий". XHTML нічим не відрізняється - більшість браузерів, які підтримують його, видадуть помилку на неформатовані дані, а потім проаналізують його за допомогою синтаксичного аналізатора HTML. (І вони намагатимуться виправити помилки для добре сформованого недійсного XHTML).
Квентін

1
Насправді це просто неправильно. Веб-переглядачі виявлять помилку щодо "не добре сформованих даних", а потім просто припиняють аналіз. Відповідно до специфікації. Вони не продовжують намагатися розібрати його. (Продовжуйте, спробуйте. Отримайте випадковий HTML-документ. Змініть тип документа (або додайте) на XHTML. Відкрийте у Firefox. Слідкуйте за тим, як Firefox не намагається відновити після першої помилки, що потрапила. (Якщо відображає сторінку, це означає, що HTML також є дійсним XHTML, що зазвичай не відбувається (будь-які BR, IMG, HR або інші самозакриваючі теги мають різні форми в XHTML та HTML).
Alya,

Firefox кидає жовтий екран смерті. Більшість браузерів, що підтримують XHTML, цього не роблять. Наприклад, Opera пропонує користувачеві ставитись до сторінки як до тексту / html: realtech.burningbird.net/image-galleries/screenshots/… (і, якщо я правильно пам’ятаю, WebKit просто перемикається на text / html без підказки)
Квентін

@David: Ви маєте рацію, що технічно, причиною того, що браузери зараз виправляють помилки, є погана HTML-річ. Але це не має значення, бо ми там, де є. Звичайний HTML має виправлення помилок у всіх браузерах, незалежно від того, що визначено стандартом, і ми ніколи не змусимо його зникнути. Тому практично HTML у більшості браузерів є менш суворим, ніж XHTML.
OregonGhost

0

Використовуйте XHTML

  • Не вдається швидко . Якщо є якісь невідповідності, вони будуть виявлені під час перевірки.
  • Це заохочує кращий дизайн , відокремлюючи семантичну розмітку від презентації тощо.
  • Це структуровано що означає, що ви можете розглядати його як об'єкт даних і запускати всілякі запити проти нього. Наприклад, ви можете знайти всі адреси чи посилання на вашому веб-сайті.
  • Ви можете зробити оптимізацію часу збірки . Оскільки це добре сформований XML, ви можете легко виконувати операції пошуку / заміни під час побудови. Або будь-яким документообігом та маніпуляціями.
  • Ви можете писати XSLT або інші сценарії перетворення для програмного перетворення XHTML для інших платформ. Наприклад, ви можете мати XSLT для iPhone, який трансформуватиме всі XHTML, щоб зробити його сумісним або зручнішим для користувача iPhone
  • Ви майбутні випробування себе. Перетворення XHTML на новішу семантику знову дуже просто, використовуючи перетворення.
  • Пошукові системи продовжуватимуть розвиватися, щоб збирати більше семантичної інформації як частину програмованої мережі .
  • Операції DOM є більш надійними, оскільки вони структуровані.
  • З алгоритмічної точки зору це дає простіший та швидший аналіз .

2
Якщо ви перевірите HTML, ви знайдете і ці невідповідності. Розділюючу структуру та презентацію краще виразити за допомогою Transitional / Strict, а не HTML / XHTML. HTML також структурований. Ви можете робити ці операції з HTML (ви просто не можете використовувати синтаксичний аналізатор XML). XHTML не є більш структурованим. З алгоритмічної точки зору вам потрібно подати його як text / html, якщо ви хочете, щоб він працював у MSIE, щоб браузери не отримували ніякої вигоди.
Квентін

@David: Ви можете запускати запити та виконувати операції з журналами плоских файлів (подивіться на синтаксичний аналізатор журналу), але це не означає, що він добре підходить для завдання. XML має широкий спектр застосувань, а екосистема інструментів набагато багатша. Наприклад, якщо ви використовуєте NAnt, ви можете використовувати XPath для отримання часткових дерев з одного файлу XHTML та ін'єкції їх в інше під час побудови. Проблеми з MSIE не повинні означати, що XHTML винен. Як я вже згадував, з XHTML у вас з’являються майбутні перевірки в міру вдосконалення браузерів. У будь-якому випадку це не закінчується браузерами. Існує програмована веб- та семантична пошукова система.
алеемб

перевірка! = перевірка на сформованість. Покажіть мені, де в специфікації XHTML сказано, щоб відокремити семантику від презентації. Покажіть мені, де специфікація XHTML визначає структуру, відмінну від структури HTML4. За допомогою синтаксичного аналізатора HTML / SGML XSLT може читати та писати HTML. XHTML не запроваджує нову семантику. Google аналізує XHTML так, ніби це HTML. RDFa працює в HTML. W3C планує використовувати HTML5 протягом наступних 20 років. Більшість бібліотек JS не працюють із XML DOM. XML із просторами імен - це PITA для синтаксичного аналізу.
Корнел

@porenL, деякі цікаві моменти, але ви ставитеся до педантизму і вам потрібно відкритись для прагматичних сценаріїв. Для запуску XHTML - це XML, що означає, що це структура даних. Якщо наслідки цього вам не зрозумілі відразу, розгляньте простий сценарій, коли ви можете просто надіслати фрагмент XHTML на сервер, який може просто прийняти його як об'єкт XmlFragment, передати, можливо, навіть зберегти його безпосередньо в базі даних або серіалізувати його назад на сервер після будь-яких змін. Все це втрачено для вас через те, що ви потрапили в педантичну дискусію щодо специфікації (продовження ...)
aleemb

(... продовження) Я згадав такі інструменти, як nAnt, які мають підтримку XPath, для яких XHTML дуже корисний - у мене немає часу чи схильності працювати з HTML. Це лише один інструмент і один сценарій, існує безліч інших. Оскільки це структура даних, видобувати її також набагато простіше. Я погоджуюсь з вами щодо питання просторів імен, але я не стикався з проблемами з бібліотеками JS.
алеем

0

XHTMl - хороший момент для використання, тому що якщо вам потрібен дійсний код, вам доведеться надати деякий аспект допомоги спільноті з обмеженими можливостями, оскільки читачам екрану потрібні alt та title частини зображення та теги посилань. Він повинен бути швидшим для синтаксичного аналізу, оскільки на відміну від HTML, парсеру не потрібно буде перевіряти, чи правильно закритий тег, чи правильно він вкладений тощо. Також краще використовувати його, оскільки так, він суворий але це допомагає вам мислити більш логічно (на мій погляд), коли справа стосується вивчення мов програмування.


1
XHTML 1.0, 1,1 та HTML 4.01 мають однакові вимоги та правила щодо атрибутів alt та title. Теоретично XHTML аналізується швидше, якщо його розглядати як XML, але оскільки IE не підтримує, що вам потрібно подавати його як text / html, щоб він працював, тож вигода не реалізується.
Квентін,

Багато користувачів програми читання з екрану використовують IE (здебільшого тому, що дуже довго жоден інший браузер не працював з ними добре), і IE взагалі не підтримує XHTML (може здатися інакше, коли ви не надсилаєте належний тип MIME). Якщо ви справді використовували XHTML, ви б фактично зробили сторінку абсолютно недоступною для більшості користувачів читачів з екрана.
Корнел

0

Я вважаю, що XHTML (або повинен бути) швидше аналізується. Дійсний документ XHTML повинен бути написаний у більш суворій специфікації, оскільки помилки є фатальними при аналізі, тоді як HTML є більш м'яким і дозволяє враховувати дивацтва, згадані до мого коментаря, наприклад, непрацездатні закриваючі теги тощо. Я знайшов це корисним для виявлення відмінностей між синтаксичним аналізом HTML та XHTML:

http://wiki.whatwg.org/wiki/HTML_vs._XHTML#Parsing

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

Тим не менш, якщо ви все одно збираєтесь подавати дані як текст / html, вам слід використовувати HTML:

http://www.hixie.ch/advocacy/xhtml


1
HTML не дозволяє "закривати" теги, що не працюють. Це просто не вимагає, щоб парсери видавали помилку - і я ніколи не володів телефоном, який міг би обробляти XHTML, але не HTML (і я вже багато років користуюся мобільним Інтернетом)
Квентін,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.