TGViewer
<divelopers> <divelopers> @alexnozer_dev · 1.18K subscribers
Post #410 215
You don’t know HTML: SGML, HTML, XML, XHTML

За свою историю язык разметки гипертекста HTML был как производным продуктом на базе другого языка, вобрав в себя его идеи и синтаксис, так и прародителем новых языков. В итоге HTML стал независимым и самостоятельным языком.

HTML изначально создан как приложение SGML. Тим Бернерс-Ли при проектировании нового языка для будущего Интернета не стал изобретать велосипед, а взял за основу уже существующий и стандартизированный язык SGML и его диалект CERN SGML.

Сам SGML — это метаязык для создания других языков разметки компьютерного текста, независимого от устройства. SGML определяет синтаксис и правила, а по ним описывается конкретный набор элементов, атрибутов и правил их применения.

Суть SGML в том, чтобы описывать типы документов (DTD), в которых определён список доступных элементов, атрибутов и специальных сущностей, обязательность или необязательность открывающих и закрывающих тэгов, правила вложенности.

Первые версии HTML были конкретным типом документа SGML. Это отражалось в длинной конструкции DOCTYPE с ссылкой на DTD, где описываются все доступные HTML-элементы, правила вложенности и атрибуты.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">


Такая конструкция была на страницах до HTML5 и простого <!DOCTYPE html>. Она означала «это размеченный с помощью SGML документ типа HTML, определение которого находится по такому-то адресу».

SGML, с одной стороны, был достаточно простым языком в плане синтаксиса. С другой стороны, он был крайне сложным по части парсинга. Из-за этого браузерам того времени было сложно обрабатывать документы на SGML-языках.

В ответ на сложность SGML появился XML. Цель та же: универсальный метаязык для описания языков разметки. Разница в более строгом синтаксисе, упрощённых правилах парсинга и удалении сложных и редко используемых возможностей SGML.

XML стал новым стандартом, на его основе были созданы различные языки разметки. Возникла идея «переписать» HTML с SGML на XML. Так появился стандарт XHTML, первая версия которого — перенос HTML 4 с SGML на строгий синтаксис XML.

XHTML 1.0 не добавлял ничего нового, а делал HTML 4 строже. Пропущенный тэг, недопустимое значение атрибута, отсутсвие кавычек или неверная вложенность делают весь документ невалидным, прекращая парсинг и отображая ошибку.

За XHTML 1.0 последовала версия 1.1 с идеей разбивки на модули. Затем вышла версия 2.0 с полным переосмыслением идей HTML. XHTML 2.0 был новым языком для веба, который должен был заменить существовавший на то время HTML 4.

XHTML 2.0 не был совместим ни с HTML 4, ни с XHTML 1.0/1.1, которые поддерживали браузеры. Такое радикальное изменение ставило под угрозу совместимость веба, а потенциальная польза и затраты усилий на внедрение не стоили того.

От XHTML 2.0 отказались и было принято решение развивать уже существующий HTML 4 менее радикально. От строго XML синтаксиса тоже отказались в пользу более толерантного к ошибкам, похожего на SGML. Итогом стал HTML 5.

Для HTML 5 был разработан собственный парсер, который проще, чем у SGML, но не такой строгий, как у XML. С тех пор HTML стал отдельным самостоятельным языком, который не совместим ни с SGML, ни с XML, но впитал части от обоих.

Сегодня HTML развивается как живой стандарт без номера версий (больше нет никакого HTML 5) и сохраняет толерантный к ошибкам парсер. Даже самая невалидная разметка будет как-то разобрана, ляжет в основу DOM и отобразится в браузере.

#ydkhtml
  • ❤ 5
  • 👍 2
More from @alexnozer_dev
  1. Sep 23, 2026Images Preview На некоторых сайтах, где надо показывать изображения в высоком качестве, дл…
  2. Sep 21, 2026Реализация пользовательских атрибутов Под конец прошлого года я рассказывал об API пользов…
  3. Sep 14, 2026Подклассы Event вместо CustomEvent Многие библиотеки предоставляют систему событий в качес…
  4. Sep 11, 2026Эволюция стилей в темах Shopify Адам Ватан на днях поделился новостью, что Shopify выкупил…
  5. Sep 9, 2026Persistent Widgets Многие сайты не должны быть SPA. Но иногда эта архитектура продиктована…
  6. Sep 7, 2026Processing Instructions и маркеры В DOM всё представлено в виде узлов (Node) разных типов.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →