"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
XML — язык разметки, с помощью которого можно описывать и передавать данные в понятной структуре, задавая собственные имена тегов. В отличие от HTML, он не предписывает, как именно показывать информацию на веб-странице: теги обозначают смысл данных. Чтобы документ был корректным, у него должен быть один корневой элемент, все элементы нужно закрывать в правильном порядке, а значения атрибутов — заключать в кавычки. XHTML переносит эти строгие правила XML в разметку веб-страниц.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
XML — язык разметки для хранения и передачи структурированных данных, в котором автор документа сам выбирает набор тегов. Это позволяет обозначать смысл информации: например, использовать теги имя и оценка, а не описывать цвет или размер текста. Благодаря структуре программы могут находить нужные данные и обмениваться ими.
Элемент XML — часть документа, состоящая из открывающего и закрывающего тегов и заключённого между ними содержимого. Например, запись <имя>Анна</имя> содержит текст «Анна». Содержимым элемента может быть не только текст, но и другие элементы, поэтому данные можно организовать в несколько уровней.
Атрибут XML — именованное свойство элемента, которое записывают в открывающем теге в виде пары «имя="значение"». Например, у элемента ученика можно указать атрибут класс="11А". Атрибут помогает добавить к элементу короткую характеристику, не создавая для неё отдельный вложенный элемент.
XHTML — вариант HTML, записанный по правилам XML. Поэтому структура XHTML должна быть однозначной и грамматически правильной: элементы закрывают, вложенность соблюдают, значения атрибутов берут в кавычки. Эти требования помогают программам разбирать документ предсказуемо, а не угадывать, что имел в виду автор.
В XML автор сам задаёт теги и вкладывает элементы друг в друга, чтобы отразить связи между данными. Например, в элементе книга можно расположить элементы название и автор. Такая структура показывает, что название и автор относятся к одной книге, даже если внешний вид документа нигде не задан. Поэтому XML удобно применять, когда одну и ту же информацию должны читать разные программы.
Рассмотрим небольшой документ: <?xml version="1.0"?> <ученик класс="11А"><имя>Анна</имя><балл>5</балл></ученик>. Первая запись — XML-декларация: она сообщает версию XML, используемую в документе. Элемент ученик является корневым, а имя и балл вложены в него; слова «Анна» и «5» — текстовое содержимое. Атрибут класс хранит дополнительное свойство ученика прямо в открывающем теге.
Один корневой элемент нужен, чтобы весь документ представлял собой единую связанную структуру. Если на верхнем уровне оставить, например, отдельно <имя> и <балл>, непонятно, относятся ли они к одной записи и где заканчивается документ. Единый корень задаёт общую границу и позволяет программе начать разбор с одного элемента. Внутри него уже могут располагаться сколько угодно элементов.
Открытые элементы закрывают в обратном порядке относительно их открытия. Если сначала открыть <книга>, а внутри — <название>, сначала нужно закрыть название, затем книгу: <книга><название>Текст</название></книга>. Такой порядок не допускает пересечения границ элементов и делает вложенность понятной. XML-парсер — программа, которая читает документ, — может точно определить, к какому элементу относится содержимое.
XML и HTML решают разные задачи, хотя оба используют теги. XML прежде всего описывает данные: имя тега выбирают по смыслу, а правила отображения документ сам по себе не задаёт. HTML использует заранее определённые элементы, например заголовок или абзац, чтобы представить содержимое веб-страницы. XHTML применяет к HTML синтаксическую строгость XML: теги обычно пишут в нижнем регистре, атрибуты заключают в кавычки, а пустые элементы оформляют как <br />. Пустой элемент не содержит текста или вложенных элементов, поэтому его можно записать одной конструкцией с закрывающим косым штрихом.
Таблица помогает быстро увидеть, для чего используют XML и какие правила XML-синтаксиса соблюдают в XHTML. При проверке конкретного фрагмента сначала определите его назначение, а затем сравните запись тегов, вложенность и атрибуты. Пустой элемент в XHTML записывают с закрывающим косым штрихом, например <img />.
| Признак | XML | XHTML |
|---|---|---|
| Основное назначение | Хранение и передача структурированных данных | Разметка веб-страниц по правилам XML |
| Какие имена тегов используются | Автор задаёт имена тегов | Используются элементы HTML |
| Правила вложенности элементов | Элементы должны быть правильно вложены | Элементы должны быть правильно вложены |
| Оформление пустых элементов | Запись с закрывающим косым штрихом, например <элемент /> | Запись с закрывающим косым штрихом, например <br /> |
| Оформление значений атрибутов | Значения заключают в кавычки | Значения заключают в кавычки |
Задача 1. Определите, корректен ли фрагмент <заказ><товар>Книга</товар><количество>2</количество></заказ>. Нужно проверить, есть ли один корень и соответствуют ли друг другу открывающие и закрывающие теги. Не оценивайте здесь смысл названий элементов: для XML они могут быть выбраны автором.
Ответ: фрагмент построен корректно: он имеет один корневой элемент, а все элементы закрыты в правильном порядке.
Задача 2. Найдите ошибки во фрагменте <товар код=17><название>Чай</товар></название><цена>100. Проверить нужно не смысл сведений о товаре, а все основные правила корректной XML-записи. В образце пропущен закрывающий тег и есть нарушения в атрибуте и порядке вложенности.
Ответ: исправленный вариант: <товар код="17"><название>Чай</название><цена>100</цена></товар>. Теперь значение атрибута взято в кавычки, вложенность соблюдена, а каждый открытый элемент закрыт.
Задача 3. Преобразуйте фрагмент HTML <P>Привет<BR><IMG SRC=pic.png> в XHTML. Нужно сохранить смысл разметки, но оформить элементы и атрибуты в соответствии с XML-синтаксисом. Проверьте регистр, кавычки и запись элементов без содержимого.
Ответ: <p>Привет<br /><img src="pic.png" /></p>. В результате элементы закрыты, регистр приведён к нижнему, а значение атрибута заключено в кавычки.
XML иногда принимают за набор заранее заданных тегов, как HTML. Так думают, потому что оба языка используют угловые скобки, но в XML автор вправе придумать имена элементов. Проверяйте себя вопросом: выражает ли тег смысл данных и одинаково ли он записан при открытии и закрытии; например, <город> должен закрываться тегом </город>.
Другая ошибка — закрыть вложенные элементы не в том порядке, в каком они были открыты. Причина часто в том, что теги воспринимают как отдельные метки, а не как границы уровней структуры. Представьте вложенные коробки: внутреннюю нужно закрыть раньше внешней. Для проверки выпишите открывающие теги и сопоставьте им закрывающие от последнего открытого к первому.
Несколько элементов верхнего уровня выглядят допустимо, если каждый фрагмент сам по себе кажется законченным. Однако документу нужен один корень, который объединяет всё содержимое и задаёт его общую границу. Чтобы проверить структуру, найдите самый внешний элемент: после него не должно идти другого элемента того же уровня. Если записей несколько, поместите их внутрь общего корня.
Записывать XHTML как обычный HTML — значит полагаться на то, что браузер сам догадается о намерении автора. Из-за привычки к HTML можно пропустить закрывающий тег или оставить значение атрибута без кавычек. Но XHTML требует XML-синтаксиса, поэтому неоднозначная запись может оказаться некорректной. При самопроверке просмотрите каждый открывающий тег, найдите его закрытие и проверьте кавычки у значений атрибутов.
Для чтения XML полезны базовые знания о тегах, атрибутах и вложенности веб-документа: эти понятия задают его структуру. Если понимать, как элементы находятся друг в друге, проще проверить порядок закрытия и выделить корень. XML применяют для хранения и обмена структурированными данными, которые могут использовать разные программы. XHTML связывает знакомую разметку веб-страниц с более строгими синтаксическими правилами XML.
Чем XML отличается от HTML?
XML предназначен прежде всего для хранения и обмена структурированными данными, а автор сам выбирает имена тегов. HTML использует заранее определённые элементы, чтобы описывать содержимое и структуру веб-страницы.
Можно ли в XML придумывать собственные теги?
Да, автор XML-документа может выбирать имена тегов в соответствии со смыслом данных, например или . Главное — последовательно использовать выбранные имена и соблюдать синтаксические правила XML.
Зачем XML-документу нужен корневой элемент?
Корневой элемент объединяет всё содержимое документа в одну структуру. Поэтому в XML должен быть только один элемент верхнего уровня, а остальные элементы располагаются внутри него.
Почему теги в XML нельзя закрывать в произвольном порядке?
Открывающие и закрывающие теги задают вложенность элементов, похожую на скобки в выражении. Закрывающий тег должен соответствовать последнему ещё не закрытому элементу, иначе структуру нельзя однозначно разобрать.
Чем XHTML отличается от обычного HTML?
XHTML — вариант HTML, записанный с соблюдением правил XML. В нём теги и атрибуты оформляют последовательно, значения атрибутов заключают в кавычки, а каждый элемент закрывают, в том числе пустой.
§ 31. XML и XHTML