Добавлен: 13.05.2023
Просмотров: 327
Скачиваний: 3
Глава II. Современные языки гипертекстовой разметки
2.1. Язык HTML
HTML - это стандартизированный язык разметки в Интернете. Страницы практически всех сайтов построены на HTML или его более строгом родственнике XHTML. Язык разметки интерпретируется браузером, текст автоматически форматируется и в нужном формате отображается на экране устройства.
Протоколы передачи HTML также стандартизированы - это HTTP или HTTPS. Кроме того, HTML может передаваться в виде обычного текста или с использованием шифрования.
HTML состоит из элементов и сущностей. Элементы HTML - это основной кирпичик, квант веб-страницы. Начало и конец каждого элемента обозначаются тегами. Элементы могут иметь атрибуты, которые указываются в открывающемся теге.
Вторая составная часть языка гораздо интереснее и менее тривиальна - это сущности. HTML-сущности — это части текста ("cтроки"), которые начинаются с символа амперсанда (&) и заканчиваются точкой с запятой (;). Сущности чаще всего используются для представления специальных символов (которые могут быть восприняты как часть HTML-кода) или невидимых символов (таких как неразрывный пробел). Также вы можете использовать их вместо символов, печать которых с обычной клавиатуры труднодоступна.[30]
HTML крайне прост в изучении, его структура понятна и ясна. Он не столь строг, как его родственник XHTML, и гораздо функциональнее языка XML.
2.2. SGML
SGML (англ. Standard Generalized Markup Language) — метаязык, на котором можно определять язык разметки для документов.
Метаязык — язык, предназначенный для описания другого языка, называемого объектным языком. Метаязык — язык лингвистики. Лингвистическая лексика, на основе которой формируются словари. Язык построения теории, слов, фраз в сфере грамматической лингвистики.[31]
По сути, это метаданные (дополнительные данные, которые используются для описания уже имеющихся).
Изначально SGML был разработан для совместного использования машинно-читаемых документов в больших правительственных и аэрокосмических проектах.
Основные части документа SGML:
SGML-декларация — определяет, какие символы и ограничители могут появляться в приложении;
Document Type Definition — определяет синтаксис конструкций разметки. DTD может включать дополнительные определения, такие, как символьные ссылки-мнемоники;
Спецификация семантики, относится к разметке — также даёт ограничения синтаксиса, которые не могут быть выражены внутри DTD;
Содержимое SGML-документа — по крайней мере, должен быть корневой элемент.
SGML предоставляет множество вариантов синтаксической разметки для использования различными приложениями. Изменяя SGML-декларацию, можно даже отказаться от использования угловых скобок, хотя этот синтаксис считается стандартным, так называемым concrete reference syntax.
Пример синтаксиса SGML:
<QUOTE TYPE="example">
typically something like <ITALICS>this</ITALICS>
</QUOTE>
SGML стандартизован ISO: “ISO 8879:1986 Information processing—Text and office systems—Standard Generalized Markup Language (SGML)”
HTML и XML произошли от SGML. HTML — это приложение SGML, а XML — это подмножество SGML, разработанное для упрощения процесса машинного разбора документа. Другими приложениями SGML являются SGML Docbook (документирование) и “Z Format” (типография и документирование).[32]
2.3. XML
В чём заключается отличие между HTML и XML? Язык XML предназначен для хранения и передачи данных. HTML же предназначен для отображения данных. XML не является заменой HTML. Они предназначены для решения разных задач: XML решает задачу хранения и транспортировки данных, фокусируясь на том, что такое эти самые данные, HTML же решает задачу отображения данных, фокусируясь на том, как эти данные выглядят. Таким образом, HTML заботится об отображении информации, а XML о транспортировке информации.
XML, по сути, не заменитель HTML, а лишь его дополнение. В большинстве веб-приложениях XML используется для транспортировки данных, а HTML для форматирования и отображения данных.
XML – это программно- и аппаратно-независимый инструмент для транспортировки информации.[33]
XML позволяет представлять сложные, иерархические объекты в текстовом формате. Если язык разметки гипертекста HTML определяет, как элементы будут расположены на Web-сайте, спецификации HTML позволяют лишь форматировать текст, то XML определяет, что эти элементы будут содержать, XML обеспечивает создание собственных дескрипторов, помогающих идентифицировать объекты.
Т.е. XML от HTML отличается тем, что позволяет определять (создавать) собственные элементы, адаптированные под специфические нужды компании или какой-либо отрасли. С помощью XML можно описать данные практически любой предметной области.
Язык XML используется для создания документов, управления, хранения и передачи информации, в том числе и в сети Интернет. XML-документ не зависит от операционной системы и может создаваться при помощи различных языков программирования. Данные из прикладной системы любого типа можно выгрузить в виде XML-документов, используя встроенный в нее язык программирования, даже если он не располагает специальной библиотекой поддержки XML.
Технология XML предоставляет возможность универсального доступа к данным и используется для обмена информацией в бизнесе:
- обмена данными между различными бизнес-приложениями;
- обмена данными с удаленными филиалами предприятия/банка;
- обмена данными между разными организациями;
- обмена данными между БД и Интернет-приложением.
2.4. XHTML
XHTML (англ. extensible hypertext markup language — расширяемый язык гипертекстовой разметки) — семейство языков разметки веб-страниц на основе XML, повторяющих и расширяющих возможности HTML 4. Спецификации XHTML 1.0 и XHTML 1.1 являются рекомендациями консорциума Всемирной паутины. Развитие XHTML остановлено; новые версии XHTML не выпускаются; рекомендуется использовать HTML.[34]
Главное отличие XHTML от HTML заключается в обработке документа. Документы XHTML обрабатываются своим модулем (парсером) аналогично документам XML. В процессе этой обработки ошибки, допущенные разработчиками, не исправляются.
XHTML соответствует спецификации SGML, поскольку XML является её подмножеством. HTML обладает множеством особенностей в процессе обработки и фактически перестал относиться к семейству SGML, что и закреплено в черновике спецификации HTML 5.
Браузер выбирает парсер для обработки документа на основании заголовка content-type, полученного от сервера:
- HTML — text/html
- XHTML — application/xhtml+xml
- Для локального просмотра на клиенте выбор основывается на расширении файла
- В Internet Explorer вплоть до 8-й версии парсер обработки XHTML-документов отсутствует.
Декларация DOCTYPE может не оказывать никакого влияния на определение парсера для обработки (зависит от используемого браузера).
Различия между HTML и XTML сводятся к следующему:
Согласно синтаксису XHTML:
- все элементы должны быть закрыты. Теги, которые не имеют закрывающего тега (например, <img> или <br>), должны иметь на конце / (например, <br />);
- логические атрибуты записываются в развёрнутой форме. Например, следует писать <option selected="selected"> или <td nowrap="nowrap">;
- имена тегов и атрибутов должны быть записаны строчными буквами (например, <img alt="" /> вместо <IMG ALT="" />);[35]
- XHTML гораздо строже относится к ошибкам в коде; < и & везде, даже в URL, должны замещаться < и & соответственно. По рекомендации W3C браузеры, встретив ошибку в XHTML, должны сообщить о ней и не обрабатывать документ. Для HTML браузеры должны были попытаться понять, что хотел сказать автор;
- кодировкой по умолчанию является UTF-8 (в отличие от HTML, где кодировкой по умолчанию является ISO 8859-1).[36]
Для XHTML-страниц рекомендуется задавать MIME-тип — application/xhtml+xml, но это не является обязательным, более того — браузер Internet Explorer 8 и младшие версии не смогут обрабатывать страницу, поэтому с XHTML 1.0 традиционно используется MIME-тип для HTML — text/html.
Существует три типа документов XHTML: strict, transitional и frameset. Наиболее употребительной и универсальной из версий XHTML является переходная , поскольку она позволяет использовать iframe (включение содержимого одной веб-страницы в другую) и атрибут target у ссылок (для указания того, например, что ссылке необходимо открываться в новом окне). Фреймовая версия представляет собой расширенный вариант transitional и добавляет к нему, как следует из названия, возможность установки frameset вместо body. DTD определение типа строгой версии XHTML не содержит многих тегов и атрибутов, описанных в DTD transitional и признанных устаревшими.
Самыми распространёнными ошибками в XHTML-разметке являются:
- незакрытые элементы (XHTML, в отличие от HTML, требует закрытия всех элементов, в том числе не имеющих закрывающего тега, как, например, <br />);
- отсутствие альтернативных текстов для изображений (достигающихся применением атрибута alt, который помогает сделать документы доступнее для устройств, которые не в состоянии отображать изображения, или предназначенных для слабовидящих людей);
- присутствие текста непосредственно в теге <body> документа (должен быть объявлен блочный элемент, внутрь которого следует помещать содержимое);
- вложение блочных элементов внутрь внутристрочных (inline) (например, блочные элементы <div> или <p> не могут быть вложены внутрь инлайновых элементов <a>, <span>, <em> и так далее);
- пренебрежение заключением значений атрибутов в кавычки (<a href=http://example.com/> вместо <a href="http://example.com/">);
- неправильное вложение элементов (конструкции вида <strong><em> </strong></em>);
- неправильное использование ссылок-мнемоник (например, & вместо &);
- написание тегов и/или атрибутов прописными буквами вместо строчных (<DIV STYLE="…"> вместо <div style="...">);
- задание в теге <!DOCTYPE …> относительного пути к DTD-файлу ("DTD/xhtml11.dtd" вместо "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd").
Этот список не полный и содержит самые частодопускаемые ошибки при составлении XHTML-документов.
2.5. Облегчённые языки разметки
Языки, предназначенные для простого и быстрого написания текста в простом текстовом редакторе, называются облегчёнными (en:Lightweight markup language). Особенности таких языков:
- Минимум функций.
- Небольшой набор поддерживаемых тегов.
- Легки в освоении.
- Исходный текст на таком языке читается с такой же лёгкостью, как и готовый документ.[37]
Применяются они там, где человеку приходится подготавливать текст в обычном текстовом редакторе (блоги, форумы, вики), либо там, где важно, чтобы пользователь с обычным текстовым редактором также мог прочитать текст. Вот несколько широко распространённых облегчённых языков разметки:
- BBCode
- Markdown
- reStructuredText
- Textile
- Различные системы автодокументирования (например, Javadoc).
BBCode (аббр. от англ. bulletin board code) — язык разметки, используемый для форматирования сообщений на многих электронных досках объявлений (BBS) и форумах. Для форматирования текста используются теги, подобные тегам HTML, но, в отличие от них, заключённые в квадратные скобки («[» и «]»). Перед отображением страницы движок форума производит разбор текста и преобразование его в HTML-код.
BBCode создан в 1998 году для движка досок объявлений Ultimate Bulletin Board (UBB), написанном на языке Perl. В 2000 году поддержка BBCode была добавлена в движок для форумов PhpBB, написанный на языке PHP.[38]
BBCode был придуман с целью предоставить более простой, безопасный и ограниченный по сравнению с HTML способ форматирования сообщений. Первоначально многие BBS позволяли пользователям использовать HTML-разметку, что могло приводить к побочным эффектам, таким как искажение разметки на странице, запуск JavaScript-сценариев (иногда в целях вандализма). Некоторые реализации BBCode, использующие упрощённые методы трансляции в HTML, также могут испытывать проблемы с безопасностью.
Хотя основные теги BBCode мало отличаются в большинстве интернет-форумов, существует большое количество вариаций. Некоторые реализации чувствительны к регистру символов внутри тегов, другие позволяют подсвечивать текст HTML, PHP, SQL и других языков разметки и программирования при помощи специальных тегов.
eStructuredText (сокращение: ReST, расширение файла: .rst) — облегчённый язык разметки. Хорошо применим для создания простых веб-страниц и других документов, а также в качестве вспомогательного языка при написании комментариев в программном коде. reStructuredText можно считать потомком легковесных систем разметки StructuredText и Setext. Парсер reStructuredText поддерживает достаточное количество конечных форматов, в том числе PDF, HTML, ODT, LaTeX и формат презентаций S5.
Система документирования Sphinx, написанная для нужд документирования языка программирования Python на сайте docs.python.org и построенная на базе Docutils, применяется уже в нескольких десятках проектов. ReST является одним из языков разметки, используемых на github, в частности, для README-файлов.