Основы XML — разметка и структура XML документов. "В жизни все не так, как на самом деле."

Введение в правильную разметку

XML означает Extensible Markup Language, с акцентом на markup (разметка). Вы можете создавать текст и размечать его при помощи обрамляющих тегов, превращая каждое слово, предложение или фрагмент в идентифицируемую, сортируемую информацию. Создаваемые вами файлы, или экземпляры документа , состоят из элементов (тегов) и текста, причем элементы помогают правильно понимать документ при чтении на бумаге или даже обрабатывать его в электронном виде. Чем больше описательных элементов, тем больше частей документа можно идентифицировать. С первых дней существования разметки одно из ее преимуществ заключается в том, что в случае потери компьютерной системы распечатанные данные все равно остаются читабельными благодаря тегам.

Языки разметки прошли путь от первых форм, создаваашихся компаниями и госучреждениями, до Стандартного языка обобщенной разметки (Standard Generalized Markup Language - SGML), Гипертекстового языка разметки (Hypertext Markup Language - HTML) и в конечном итоге до XML. SGML может показаться сложным, а HTML (который, по сути, сначала был просто набором элементов) оказался недостаточно мощным для идентификации информации. XML разрабатывался как простой в применении и удобный для расширения язык разметки.

В XML можно создавать свои собственные элементы, что позволяет точно представлять фрагменты данных. Документы можно не просто разделять на абзацы и заголовки, но и выделять любые фрагменты внутри документа. Чтобы это было эффективно, нужно определить конечный перечень своих элементов и придерживаться его. Элементы можно определять в Описании типа документа (Document Type Definition - DTD) или в схеме, что будет кратко обсуждено ниже. Когда вы освоите и начнете использовать XML, не бойтесь экспериментировать с именами элементов, создавая реальные файлы.

Построение документа XML

Как уже упоминалось, файлы XML состоят из текста и разметки. Большая часть текста помещается в элементы, в которых текст окружен тегами. Например, допустим, нужно создать поваренную книгу в формате XML. У нас есть рецепт под названием Ice Cream Sundae , который нужно преобразовать в XML. Чтобы разметить название рецепта, заключим его текст в элемент, который начинается и заканчивается тегами. Этот элемент можно назвать recipename . Чтобы отметить начальный тег элемента, поместим его имя в угловые скобки <>), вот так: . Затем введем текст Ice Cream Sundae . После текста поставим замыкающий тег, который представляет собой имя элемента в угловых скобках, плюс косая черта завершения элемента (/) перед именем элемента, вот так: . Эти теги образуют элемент , в который можно вводить текст и даже другие элементы.

Имена элементов можно создавать как для отдельных документов, так и для групп документов. В соответствии с вашими требованиями можно указать правила, которые должны соблюдаться для элементов. Элементы могут быть строго специальными или достаточно общими. Правила должны также определять, что допустимо включать в каждый элемент. Они могут быть строгими, свободными или промежуточными. Просто создайте элементы, определяющие те части вашего документа, которые, на ваш взгляд, важны.

Начало создания файла XML

Первой строкой документа XML может быть декларация XML. Эта необязательная часть файла определяет его как файл XML, что может помочь автоматическим инструментам и людям распознавать файл как XML, а не SGML или другой способ разметки.

Декларация может выглядеть просто как или включать версию XML () и даже кодировку символов, например, для Unicode. Поскольку эта декларация должна находиться в самом начале файла, если вы планируете комбинировать мелкие XML-файлы в более крупный файл, этот необязательный элемент лучше пропустить.

Создание корневого элемента

Начальный и замыкающий теги корневого элемента окружают весь текст XML-документа. В файле должен присутствовать только один корневой элемент, и это необходимая "обложка" для него. показан фрагмент примера, который я здесь использую, с корневым элементом (рецепт). (Полный файл XML приведен в .)

Листинг 1. Корневой элемент

По мере создания своего документа вы будете размещать текст и дополнительные теги между и .

Наименования элементов

Соблюдение регистра в тегах

При создании XML регистры начального и конечного тегов должны совпадать. В противном случае можно получить сообщение об ошибке при использовании или просмотре XML. Например, Internet Explorer не отображает текст в случае несовпадения регистров. Вместо этого он выводит сообщения о несовпадении начального и конечного тегов.

Итак, у нас есть корневой элемент . В XML сначала выбираются имена элементов, а затем на основе этих имен определяется соответствующее описание DTD или схема. Имена могут содержать буквы, цифры и специальные знаки, такие как знак подчеркивания (_). Вот несколько правил об именах, которые нужно помнить:

  • Пробелы в именах элементов не допускаются.
  • Имена должны начинаться с буквы, а не с цифры или знака. (После этой первой буквы можно использовать любую комбинацию из букв, цифр и допустимых символов.)
  • Регистр не имеет значения, но во избежание путаницы соблюдайте его.
Листинг 2. Другие элементы
Ice Cream Sundae 5 minutes

XML-документ может содержать пустые теги, внутри которых ничего нет и которые могут выражаться одним тегом, а не парой из открывающего и замыкающего тегов. Например, это может быть самостоятельный тег в стиле HTML . Он не содержит никаких дочерних элементов или текста, так что это пустой элемент, и его можно записать как (с пробелом и знакомой замыкающей косой чертой в конце).

Вложение элементов

Вложение — это размещение элементов внутри других элементов. Эти новые элементы называются дочерними элементами, а элементы, которые их окружают, — их родительскими элементами. В в корневой элемент вложено несколько элементов. Это вложенные дочерние элементы , и Внутри элемента находится несколько одинаковых дочерних элементов . Вложение может делать XML-документ многоуровневым.

Типичная синтаксическая ошибка связана с вложенностью родительского и дочернего элементов. Каждый дочерний элемент должен быть целиком расположен между открывающим и замыкающим тегами своего родительского элемента. Дочерние элементы должны заканчиваться до начала следующего дочернего элемента.

Пример правильного вложения приведен в . Теги начинаются и завершаются без переплетения с другими тегами.

Листинг 3. Правильное вложение элементов XML.
Ice Cream Sundae 3 chocolate syrup or chocolate fudge 1 nuts 1 cherry 5 minutes

Добавление атрибутов

К элементам иногда добавляются Атрибуты . Атрибуты состоят из пары имя-значение, где значение берется в двойные кавычки ("), вот так: type="dessert" . Атрибуты позволяют сохранять вместе с элементом дополнительные параметры, меняя значения этих параметров от элемента к элементу в одном и том же документе.

Атрибут —или даже несколько атрибутов —указывается внутри начального тега элемента: . При добавлении нескольких атрибутов они разделяются пробелами: . показан файл XML, как он выглядит теперь.

Листинг 4. Наш файл XML с элементами и атрибутами
Ice Cream Sundae 5 minutes

Можно использовать любое количество атрибутов. Подумайте, какие подробности можно добавить в ваш документ. Атрибуты особенно полезны, если документы будут храниться -например, по типу рецептов. Имена атрибутов могут содержать такие же символы, что и имена элементов, с теми же правилами исключения пробелов и начала имени с буквы.

Правильно и неправильно построенный XML

Если вы следуете правилам, определенным в вашей структуре, вы сможете легко создавать правильно построенный код XML. Правильный XML — это код XML, составленный с соблюдением всех правил XML: правильное именование элементов, вложение, именование атрибутов и т.п.

В зависимости от того, что именно вы делаете с XML, вам может понадобиться работа с правильно построенным XML. Рассмотрим приведенный выше пример сортировки по типу рецептов. Нужно, чтобы элементы содержали атрибут type . Очень важно иметь возможность успешно проверить код и гарантировать постоянное присутствие значения этого атрибута.

Под проверкой (validation) понимается проверка структуры документа на соответствие установленным для нее правилам и определению дочерних элементов для каждого родительского элемента. Эти правила определяются в Описании типа документа (DTD) или в схеме. Для такой проверки требуется создать DTD или схему, а затем давать ссылку на файл DTD или схемы в своих XML-файлах.

Чтобы разрешить проверку, нужно ближе к началу своих XML-документов поместить декларацию типа документа (DOCTYPE). Эта строка содержит ссылку на DTD или схему (перечень элементов и правил), которая будет использоваться для проверки данного документа. Строка DOCTYPE может быть примерно такой, как в .

Листинг 5. DOCTYPE

Этот пример означает, что ваш файл списка элементов с именем filename.dtd находится в вашем компьютере (то есть в каталоге SYSTEM , а не в общем каталоге PUBLIC).

Использование сущностей

Сущности (entity) могут представлять собой фрагменты текста или специальные символы. Они могут указываться внутри документа или вне его. Во избежание ошибок и для правильности отображения сущности должны быть надлежащим образом объявлены и выражены.

Нельзя вводить специальные символы прямо в текст. Для использования в тексте специальных символов их нужно сделать сущностями и использовать коды этих символов. В качестве сущностей можно определить фразы, такие как название компании, а затем использовать их по всему тексту. Чтобы создать сущность, назначьте ей имя и вставляйте это имя и вставляйте это имя в текст после знака амперсанда (&) и заканчивая точкой с запятой — например, &coname; (или другое имя). Затем укажите этот код в своей строке DOCTYPE в квадратных скобках(), как в . Этот код определяет текст, который подставляется вместо сущности.

Листинг 6. Сущность

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

Как избежать ошибок

Пока вы учитесь создавать XML-файлы, открывайте их в редакторе XML, чтобы удостовериться в их формальной правильности и убедиться, что правила XML соблюдены. Например, если у вас Windows® Internet Explorer®, вы можете просто открыть свой файл XML в браузере. Если ваши элементы, атрибуты и текст отображаются, значит файл XML составлен правильно. Если же присутствуют ошибки, вероятно, вы что-то напутали в синтаксисе, и вам нужно тщательно проверить свой документ на опечатки или пропуски тегов и знаков пунктуации.

Заключение

Усвоив несколько простых правил, вы можете гибко разрабатывать собственные элементы XML и их атрибуты. Правила XML не сложны. Набирать XML-документ тоже несложно. Главное - понять, что вы хотите от документов в смысле возможностей сортировки и поиска, а затем разработать элементы и атрибуты для удовлетворения этих требований.

Когда хорошо понимаешь цель и знаешь, как разметить свой текст, можно создавать эффективные элементы и атрибуты. С этой точки зрения тщательная разметка - это все, что нужно для создания правильно построенного и пригодного к использованию документа XML.

Язык XML (Extensible Markup Language) был разработан рабочей группой XML Working Group консорциума World Wide Web Consortium (W3C). Вот как описывают его создатели:

«Расширяемый язык разметки Extensible Markup Language (XML) представляет собой составную часть языка SGML... Он предназначен для облегчения использования языка SGML в Web и выполнения задач, которые в настоящее время реализуются с помощью языка HTML. XML разработан с целью усовершенствовать применение и взаимодействие языков SGML и HTML.»

Это выдержка из спецификации версии 1.0 XML, созданной XML Working Group в феврале 1998 г. Весь документ вы можете найти на сайте W3C по адресу http://www.w3.org/TR/REC/-xml .

XML - язык разметки, разработанный специально для размещения информации в World Wide Web, аналогично языку гипертекстовой разметки HTML (Hypertext Markup Language), который изначально стал стандартным языком создания Web-страниц. Поскольку язык HTML полностью удовлетворяет всем нашим потребностям, возникает вопрос: для чего понадобился совершенно новый язык для Web? В чем состоят его преимущества и достоинства? Как он взаимодействует с HTML? Заменит ли он HTML, или только усовершенствует его? Наконец, что собой представляет язык SGML, частью которого является XML, и почему нельзя использовать для Web-страниц собственно SGML? В этой главе я постараюсь ответить на все эти вопросы.

Предназначение XML

Язык HTML предоставляет фиксированный набор элементов, которые вы можете использовать для размещения компонентов на типовой Web-стра-нице, Примерами таких элементов являются заголовки, абзацы, списки, таблицы, изображения и связи, Например, HTML отлично подходит для

создания личной домашней страницы. Ниже приведено описание домашней страницы в кодах HTML:

Home Раgе

Michael Young"s Home Page

Welcome to my Web site!

Web Site Contents

Please choose one of the following topics:

  • Writing
  • Family
  • Photo Gallery

Other Interesting Web Sites

Click one of the following to explore another Web site:

  • «1. XML должен стать языком прямого использования в Internet.»

    Как вы уже могли понять, XML был разработан главным образом для хранения и распространения информации в Web.

    «2. XML будет поддерживать большое количество приложений.»

    Хотя основным его назначением является распространение информации в Web через серверы и программы-браузеры, XML также разработан для использования его другими программами. Например, XML применяется для обмена информщией между финансовыми программами, для распространения и обновления программных продуктов, а также написания голосовых сценариев при доставке информации по телефону.

    «3.XML будет совместим с SGML.»

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

    «4. Будет легче писать программы, обрабатывающие XML-документы.»

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

    «5. Количество дополнительных функций в XML должно быть минимальным, а в идеале - нулевым.»

    Минимальное число дополнительных функций в XML упрощает написание программ для обработки XML-документов. Изобилие дополнительных подключаемых функщй в SGML стало основной причиной, обусловившей его практическую непригодность для представления Web-документов. Дополнительные функции SGML требуют переопределения символов-разделителей для тегов (обычно ) и пропуск конечного тега с целью обнаружения процессором конца элемента. При строгом написании программы обработки SGML-документов необходимо учитывать возможность появления всех дополнительных функций, даже если они редко встречаются.

    «6. XML-документы должны быть понятными и ясными для пользователя.»

    XML призван стать lingua franca (универсальным языком) для обмена информацией среди пользователей и программ по всему миру. В соответствии с этой концепцией пользователи, а также специализированные программы, должны иметь возможность создавать и прочитывать XML-документы. Доступность и прозрачность для пользователя выделяют XML из большинства других форматов, применяемых при построении баз данных и текстовых документов.

    Пользователь может легко прочесть XML-документ, поскольку он описан простым текстом и имеет логичную иерархическую структуру в виде дерева. Вы можете упростить XML-документы, назначив информативные имена для элементов, атрибутов и объектов, а также добавив полезные комментарии. (Об этом пойдет речь далее в данной главе.)

    «7. Разработка XML должна быть завершена достаточно быстро.»

    XML станет общепринятым стандартом лишь в том случае, если программисты и пользователи примут его. Следует создать этот стандарт до того, как общество примет альтернативные стандарты, которые все быстрее создаются компаниями-разработчиками программного обеспечения.

    «8. Язык XML должен быть формальным и кратким.»

    Спецификация XML написана на формальном языке, используемом для представления компьютерных языков, с нотацией, известной как расширенная форма Бакус-Наура (Extended Backus-Naur Form (EBNF)). Этот формальный язык, хотя и достаточно сложен для восприятия, лишен двусмысленности и существенно облегчает написание XML-документов, а в особенности программ для их обработки.

    «9. XML-документы будет проще создавать.»

    При практическом использовании XML как языка разметки для Web-документов упрощается не только написание обрабатывающих программ, но и процесс создания самих XML-документов.

    «10. Сжатая форма при XML-разметке не важна.»

    В соответствии с пунктом 6 (XML-документ должен быть ясным и понятным для пользователя), XML-разметка не должна быть излишне сжатой, чтобы не вступать в противоречие с указанной целью.

    Стандартные XML-приложения

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

    Например, организация может определить XML-приложение для создания документов, описывающих молекулярные структуры, человеческие ресурсы, мультимедиа-презентации или содержащих векторную графику. В конце главы приведен список некоторых уже созданных общеупотребительных XML-приложений и приложений, создание которых планируется.

    XML-приложение обычно определяется созданием описателя типа документа (DTD), который является допустимым компонентом XML-документа. DTD построен по схеме базы данных: он устанавливает и определяет имена элементов, которые могут быть использованы в документе, порядок, в котором элементы могут появляться, доступные к применению атрибуты элементов и другие особенности документа. Для практического использования XML-приложения вы обычно включаете его DTD в ваш XML-документ; наличие DTD в документе ограничивает круг элементов и структур, которые вы будете использовать, вследствие чего ваш документ отвечает стандартам данного приложения. Описания XML-документов, рассмотренных ранее в этой главе, не включали DTD. О том, как задавать и использовать DTD, вы узнаете в главе 5.

    Преимущества применения стандартных XML-приложений при разработке ваших документов состоят в том, что вы можете совместно использовать документы со всеми другими пользователями приложения, а документ может обрабатываться и отображаться с помощью программного обеспечения, которое уже создано для данного приложения.

    XML-приложения, повышающие качество XML-документов

    Кроме XML-приложений для описания определенных классов документов, имеется несколько XML-приложений, которые вы можете применять внутри XML-документа любого типа. Эти приложения облегчают создание документа и улучшают его качество. Ниже приведены примеры таких приложений.

    • Extensible Stylesheet Language (XSL) позволяет вам создавать мощные стилевые таблицы с использованием синтаксиса XML.
    • XML Schema позволяет разрабатывать подробные схемы для ваших XML-документов с использованием стандартного синтаксиса XML, что является более мощной альтернативой применения DTD.
    • XML Linking Language (XLink) дает возможность связывать ваши XML-документы. Он поддерживает множественные целевые ссылки и другие полезные функции, обеспечивая большую свободу по сравнению с механизмом организации ссылок в HTML.
    • XML Pointer Language (XPointer) позволяет определять гибкие целевые ссылки. При совместном использовании XPointer и XLink вы можете организовывать ссылки на любое место в целевом документе -а не только переходы к специально выделенным пунктам.

    Об XLS будет рассказано в главе 10. Другие XML-приложения еще не доведены до готовности и не рассматриваются в этой книге. (XLink и XPointer не поддерживаются в Internet Explorer 5).

    Как видите, XML является не только полезным инструментом для описания документов, но и служит основой для построения приложений и расширении, которые могут оказаться востребованными по мере развития Internet.

    Реальное использование XML

    Хотя концепция XML весьма интересна, у вас может возникнуть вопрос, как его применить на практике. В этом разделе приведен перечень примеров такого применения XML, как уже широко используемых, так и перспективных. Если имеются соответствующие XML-приложения для практического использования, они будут приведены в скобках. Например, вы сможете узнать, что XML-приложение MathML позволит вам форматировать математические формулы.

    Ссылка . Более полный список текущих и перспективных XML-приложений, включая их подробное описание, вы можете найти на Web-странице Oasis SGML/XML (http://www.oasis-open.arg/cover/ocml . htmW applications).

    • Работа с базами данных. Подобно традиционным базам данных, XML может быть использован для присвоения метки каждому полю информации внутри каждой записи базы данных. (Например, можно пометить каждое имя, адрес и номер телефона внутри записей списка адресов.) После этого вы сможете отображать данные различными способами и организовывать поиск, сортировку, фильтрацию и иную обработку данных.
    • Структурирование документов. Иерархическая структура XML-до-кументов идеально подходит для разметки структуры таких документов, как романы, научные труды, пьесы. Например, вы можете использовать XML для разметки пьесы на акты, сцены, размечать действующих лиц, сюжетные линии, декорации и т. д. XML-разметка дает возможность программам отображать или распечатывать документ в необходимом формате; находить, извлекать или манипулировать информацией в документе; генерировать оглавления, резюме и аннотации; обрабатывать информацию иными способами.
    • Работа с векторной графикой (VML - Vector Markup Language).
    • Мультимедиа презентации (SMIL - Synchronized Multimedia Integration Language, HTML + TIME - HTML Timed Interactive Multimedia Extensions).
    • Описание каналов. Каналы представляют собой Web-страницы, которые автоматически рассылаются подписчикам. (CDF - Channel Definition Format).
    • Описание программных пакетов и их взаимосвязей. Такие описания обеспечивают распространение и обновление программных продуктов в сети (OSD - Open Software Description).
    • Взаимодействие приложений через Web с использованием XML-co-общений. Эти сообщения являются независимыми от операционных систем, объектных моделей и компьютерных языков (SOAP - Simple Object Access Protocol).
    • Отправка электронных бизнес-карт через e-mail.
    • Обмен финансовой информацией. Обмен информацией в открытом и понятном формате осуществляется между финансовыми программами (такими как Quicken и Microsoft Money) и финансовыми институтами (банками, общественными фондами) (OFX - Open Financial Exchange).
    • Создание, управление и использование сложных цифровых форм для коммерческих Internet-транзакций. Подобные формы могут включать оцифрованные подписи, которые делают их признанными юридически (XFDL - Extensible Forms Description Language).
    • Обмен запросами по приему на работу и резюме (HRMML - Human Resource Management Markup Language).
    • Форматирование математических формул и научной информации в
    • Web (MathML - Mathematical Markup Language).
    • Описание молекулярных структур (CML - Chemical Markup Language).
    • Кодирование и отображение информации о ДНК, РНК и цепочках (BSML - Bioinformatic Sequence Markup Language).
    • Кодирование генеалогических данных (GeDML - Genealogical Data Markup Language).
    • Обмен астрономическими данными (AML - Astronomical Markup Language).
    • Создание музыкальных партитур (MusicML -Music Markup Language).
    • Работа с голосовыми сценариями для доставки информации по телефону. Голосовые сценарии могут быть использованы, например, для генерирования голосовых сообщений, справок о наличии товаров и прогнозов погоды (VoxML).
    • Обработка и доставка информации курьерскими службами. Служба Federal Express, например, уже использует XML для этих целей.
    • Представление рекламы в прессе в цифровом формате (AdMarkup).
    • Заполнение юридических документов и электронный обмен юридической информацией (XCL - XML Court Interface).
    • Кодирование прогнозов погоды (OMF - Weather Observation Markup Format).
    • Обмен информацией по операциям с недвижимостью (RETS - Real Estate Transaction Standard).
    • Обмен страховой информацией.
    • Обмен новостями и информацией с использованием открытых Web-стандартов (XMLNews).
    • Представление религиозной информации и разметка текстов богослужений (ThML - Theological Markup Language, LitML - Liturgical Markup Language).

    В 1986 году, задолго до того, как идея создания сети Веб была воплощена в жизнь, универсальный стандартизированный язык разметки SGML (Standardized Generalized Markup Language ) был утвержден в качестве международного стандарта (ISO 8879 ) определения языков разметки, хотя SGML существовал еще с конца шестидесятых. Он использовался для того, чтобы описывать языки разметки, предоставляя при этом автору возможность давать формальные определения каждому элементу и атрибуту языка .

    Язык HTML первоначально был всего лишь одним из SGML -приложений. Он описывал правила, по которым должна быть подготовлена информация для World Wide Web . Таким образом, язык HTML - это набор предписаний SGML , сформулированных в виде определения типа документа (DTD ), объясняющих, что именно обозначают тэги и элементы. Схема DTD для языка HTML хранится в веб-браузере.

    К недостаткам языка HTML можно отнести следующие:

    • HTML имеет фиксированный набор тэгов . Нельзя создавать свои тэги, понятные другим пользователям.
    • HTML - это исключительно технология представления данных . HTML не несет информации о значении содержания, заключенного в тэгах.
    • HTML - "плоский" язык . Значимость тэгов в нем не определена, поэтому с его помощью нельзя описать иерархию данных.
    • В качестве платформы для приложений используются браузеры . HTML не обладает достаточной мощью для создания веб-приложений на том уровне, к которому в настоящее время стремятся веб-разработчики. Например, на языке HTML невозможно разработать приложение для профессиональной обработки и поиска документов.
    • Большие объемы трафика сети . Существующие HTML -документы, используемые как приложения, перегружают Интернет большими объемами трафика в системах клиент-сервер. Примером может служить пересылка по сети большого по объему документа, в то время как необходима только небольшая часть этого документа.

    Таким образом, с одной стороны, язык HTML является очень удобным средством разметки документов для использования в веб, а с другой - документ, размеченный в HTML , имеет мало информации о своем содержании. Если тот или иной документ несет достаточно полную информацию о своем содержании, появляется возможность сравнительно легко провести автоматическую обобщенную обработку и поиск в файле, хранящем документ. Язык SGML позволяет сохранять информацию о содержании документа, однако вследствие особой сложности он никогда не использовался так широко, как HTML .

    Группа экспертов по языку SGML , возглавляемая Джоном Боузэком (Jon Bosak ) из компании Sun Microsystems , приступила к работе по созданию подмножества языка SGML , которое могло бы быть принято Web -сообществом. Решено было удалить многие несущественные возможности SGML . Перестроенный таким образом язык назвали XML . Упрощенный вариант оказался значительно более доступным, чем оригинал, его спецификации занимали всего 26 страниц по сравнению с более чем 500 страницами спецификаций SGML .

    Рассмотрим более детально структуру и особенности этого языка.

    XML ( eXtensible Markup Language ) - рекомендованный W3C язык разметки . XML - текстовый формат , предназначенный для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе специализированных языков разметки. XML является упрощённым подмножеством языка SGML .

    Язык XML имеет следующие достоинства :

    • Это человеко-ориентированный формат документа, он понятен как человеку, так и компьютеру.
    • Поддерживает Юникод.
    • В формате XML могут быть описаны основные структуры данных - такие как записи, списки и деревья.
    • Это самодокументируемый формат, который описывает структуру и имена полей также как и значения полей.
    • Имеет строго определённый синтаксис и требования к анализу, что позволяет ему оставаться простым, эффективным и непротиворечивым.
    • Широко используется для хранения и обработки документов;
    • Это формат, основанный на международных стандартах;
    • Иерархическая структура XML подходит для описания практически любых типов документов;
    • Представляет собой простой текст, свободный от лицензирования и каких-либо ограничений;
    • Не зависит от платформы;
    • Является подмножеством SGML , для которого накоплен большой опыт работы и созданы специализированные приложения;

    К известным недостаткам языка можно отнести следующие:

    • Синтаксис XML избыточен.
      • Размер XML документа существенно больше бинарного представления тех же данных (порядка 10 раз).
      • Размер XML документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON , YAML ) и особенно в форматах данных, оптимизированных для конкретного случая использования.
      • Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных.
      • Для большого количества задач не нужна вся мощь синтаксиса XML , и можно использовать значительно более простые и производительные решения.
    • Пространства имён XML сложно использовать и их сложно реализовывать в XML парсерах .
    • XML не содержит встроенной в язык поддержки типов данных. В нём нет понятий "целых чисел", "строк", "дат", "булевых значений" и т. д.
    • Иерархическая модель данных , предлагаемая XML , ограничена по сравнению с реляционной моделью и объектно-ориентированными графами.

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

    Таблица 9.1. Структура семейства XML
    XML Технические рекомендации об использовании XML
    DTD Определение типа документа (схема)
    XDR Формат XML Reduced (схема Microsoft )
    XSD Определение схемы XML (схемы W3C )
    Пространство имен Метод определения имен элементов и атрибутов
    XPath Язык путей XML
    XLink Язык ссылок XML
    XPointer Язык указателей XML
    DOM API для объектной модели документа
    SAX Простой API для XML
    XSL Расширяемый язык таблиц стилей
    XSL -FO Объекты форматирования XSL
    XSLT Язык преобразований XSL
    XInclude Синтаксис XML Include
    markup languages) - это набор специальных инструкций, называемых тэгами, предназначенных для формирования в документах какой-либо структуры и определения отношений между различными элементами этой структуры. Другими словами разметка показывает, какая часть документа является заголовком, какая подзаголовком, что следует считать именем автора и т. д. Разметка разделяется на стилистическую разметку, структурную и семантическую.

    Стилистическая разметка

    Стилистическая разметка отвечает за внешний вид документа. Например, в HTML к данному типу разметки относятся такие теги как (курсив), (жирный), (подчеркивание), (перечеркнутый текст) и т.д.

    Структурная разметка

    Структурная разметка задает структуру документа. В HTML за данный тип разметки отвечают, например, теги (параграф), (заглавие),

    (секция) и т.д.

    Семантическая разметка

    Семантическая разметка информирует о содержании данных. Примерами данного типа разметки являются теги (имя документа), (код, используется для листингов кода), (переменная),

    (адрес автора).

    Основными понятиями любого языка разметки являются теги, элементы и атрибуты.

    Тэги и элементы.

    Значения понятий тэги и элементы часто путают.

    Тэги, или, как их еще называют, управляющие дескрипторы, служат в качестве инструкций для программы, производящей показ содержимого документа на стороне клиента как поступить с содержимым тега. Для того чтобы выделить тег относительно основного содержимого документа используются угловые скобки: тег начинается со знака "меньше" (<) и завершается знаком "больше" (>), внутри которых помещаются название инструкций и их параметры. Например, в языке HTML тег указывает на то, что следующий за ним текст должен быть выведен курсивом.

    Элемент - это тэги в совокупности с их содержанием. Следующая конструкция является примером элемента:

    Это текст выделен курсивом .

    Элемент состоит из открывающего тега (в нашем примере это тег ), содержимого тега (в примере это текст "Это текст, выделен курсивом") и закрывающего тега( ), правда иногда в HTML, закрывающий тег можно опустить.

    Атрибуты

    Для того чтобы при определении элемента задать какие-либо параметры, уточняющие характеристики данного элемента используются атрибуты.

    Атрибуты состоят из пары "название" = "значение", которую можно задавать при определении элемента в начальном тэге. Слева и справа от символа равенства можно оставлять пробелы. Значение атрибута указывается в виде строки, заключенной в одинарные или двойные кавычки.

    Любой тэг может иметь атрибут, если этот атрибут определен.

    В случае использования атрибута элемент принимает следующую форму:

    <имя_тега атрибут = "значение"> содержимое тега

    Текст выравнивается по центру

    В одном открывающемся теге может содержаться несколько атрибутов, например:

    Указан размер и цвет текста

    История развития языков разметки.

    Понятие гипертекста было введено В.Бушем в 1945 году а, начиная с 60-х годов, стали появляться первые приложения, использующие гипертекстовые данные. Однако основное развитие данная технология получила, когда возникла реальная необходимость в механизме объединения множества информационных ресурсов, обеспечения возможности создания, просмотра нелинейного текста.

    В 1986 году ISO был утвержден универсальный стандартизированный язык разметки (Standardized Generalized Markup Language). Этот язык предназначен для создания других языков разметки, он определяет допустимый набор тэгов, их атрибуты и внутреннюю структуру документа. Таким образом имеется возможность создавать свои собственные тэги, связанные с содержанием документа. Теперь становится очевидно, что такие документы трудно интерпретировать без определения языка разметки, которое хранится в определении типа документа (DTD - Document Type Definition ). В DTD сгруппированы все правила языка в стандарте SGML . Другими словами в DTD описывается связь тегов между собой и правила их применения. Причем для каждого класса документов определяется свой набор правил, описывающих грамматику соответствующего языка разметки. Таким образом, только при помощи DTD можно проверить правильность использования тегов а, следовательно, его нужно посылать вместе с SGML-документом или включать в документ.

    В то время кроме SGML существовали еще несколько конкурирующих между собой подобных языков, однако популярность (HTML, который является одним из его потомков) дала SGML неоспоримое преимущество перед своими собратьями.

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

    Язык разметки HTML гораздо более простой и удобный, чем SGML , его инструкции в первую очередь предназначены для управления процессом вывода содержимого документа на экране. Язык HTML как способ разметки технических документов был создан Тимом Бернерсом-Ли ( Tim Berners-Lee) в 1991 году специально для научного сообщества. Первоначально он был всего лишь одним из SGML -приложений.

    Не смотря на то, что единственное, что умеет HTML - классифицировать части документа и обеспечивать его правильное отображение в браузере, он является самым популярным языком разметки. Это связано с тем, что HTML достаточно легок для изучения. Все, что от вас требуется, - изучить команды HTML. DTD для HTML хранится в браузере. К тому же надо заметить, что HTML спроектирован для работы на самых разных платформах. Но у него есть ряд существенных ограничений:

    1. HTML имеет фиксированный набор тэгов, и данный набор нельзя расширить или изменить;
    2. теги языка HTML показывают только как должны быть представлены данные, то есть внешний вид документа. HTML не несет информации о значении содержания, заключенного в тэгах, структуре документа.

    Мы снова продолжаем изучение XML и в данной статье познакомимся с такими конструкциями XML, как процессинговые инструкции, комментарии, атрибуты и другие элементы XML. Эти элементы являются базовыми и позволяют гибко, в четком соответствии со стандартом размечать документы абсолютно любой сложности.

    Некоторые моменты, такие как теги XML, мы уже частично рассматривали в предыдущей статье « ». Теперь мы еще раз затронем эту тему и разберем ее более подробно. Это сделано специально, чтобы вам было проще представить всю картину конструкций XML.

    Элементы XML. Пустые и непустые элементы XML

    Как уже говорилось в предыдущей статье, теги в XML не просто размечают текст, как это бывает в HTML, а выделяют отдельные элементы (объекты). В свою очередь элементы иерархически организуют информацию в документе, что в свою очередь и сделало их основными структурными единицами языка XML.

    В XML элементы могут быть двух типов – пустые и непустые. Пустые элементы не содержат в себе никаких данных, таких как текст или другие конструкции. В отличие от пустых элементов, непустые могут содержать в себе любые данные, такие как текст или другие элементы и конструкции языка XML. Чтобы понять суть вышесказанного, давайте рассмотрим примеры пустых и непустых элементов XML.

    Пустой элемент XML

    Непустой элемент XML

    Содержимое элемента...

    Как мы видим с примера выше, главным отличием пустых элементов от непустых является то, что они состоят только из одного тега. Кроме того стоит также заметить, что в XML все имена регистрозависимые. Это означает, что имена myElement, MyElement, MYELEMENT и т.д. различаются между собой, поэтому данный момент стоит сразу запомнить, чтобы избежать ошибок в будущем.
    Итак, с элементами мы разобрались. Теперь давайте перейдем к следующему моменту, такому как логическая организация XML-документов.

    Логическая организация XML-документов. Древовидная структура XML данных

    Как вы помните, основной конструкцией языка XML являются элементы, которые могут содержать в себе другие вложенные конструкции и тем самым формировать иерархическую структуру в виде дерева. В этом случае родительский элемент будет корнем, а все остальные дочерние элементы будут ветками и листьями дерева XML.

    Чтобы было проще понять суть вышесказанного, давайте рассмотрим следующее изображение с примером.

    Как мы видим, организация XML-документа в виде дерева является довольно простой структурой для обработки. При этом выразительная сложность самого дерева достаточно велика. Именно древовидное представление является наиболее оптимальным способом описания объектов в XML.

    Атрибуты XML. Правила записи атрибутов в XML

    В XML элементы могут содержать также и атрибуты с присвоенными им значениями, которые помещаются в одинарные или двойные кавычки. Атрибут для элемента задается следующим образом:

    В данном случае использовался атрибут с именем «attribute» и значением «value». Тут стоит сразу заметить, что атрибут XML обязательно должен содержать какое-то значение и не может быть пустым. В противном случае код будет некорректным с точки зрения XML.

    Также стоит обратить внимание на использование кавычек. Значение атрибутов может заключаться как в одинарные, так и в двойные кавычки. Кроме того возможно также использование одних кавычек внутри других. Для демонстрации рассмотрим следующие примеры.

    Прежде чем приступить к рассмотрению других конструкций XML стоит также заметить, что при создании атрибутов в качестве значений не могут использоваться такие специальные символы, как амперсанд «&» или угловые скобки «<>». Данные символы зарезервированы в качестве управляющих («&» — сущность, а «<» и «>» открывают и закрывают тег элемента) и не могут быть использованы в «чистом виде». Для их использования нужно прибегать к замене спецсимволов.

    Инструкции по обработке XML (процессинговые инструкции). XML-декларация

    В языке XML есть возможность включения в документе инструкций, которые несут определенную информацию для приложений, которые будут обрабатывать тот или иной документ. Инструкции по обработке в XML создаются следующим образом.

    Как видно с примера выше, в XML инструкции по обработке заключаются в угловые кавычки со знаком вопроса. Это немного напоминает обычный , который мы рассматривали в первых уроках по PHP. В первой части процессинговой инструкции определяется приложение или система, которой предназначена вторая часть этой инструкции или ее содержимое. При этом инструкции по обработке действительны только для тех приложений, которым они адресованы. Примером процессинговой инструкции может быть следующая инструкция.

    Стоит заметить, что в XML есть особая конструкция, которая очень сильно похожа на инструкцию по обработке, но сама она такой не является. Речь идет об XML-декларации, которая передает обрабатывающему программному обеспечению некоторую информацию о свойствах XML-документа, таких как кодировка, версия языка в соответствии с которым написан данный документ и т.д.

    Как видно с примера выше, XML-декларация содержит так называемые псевдоатрибуты, которые очень похожи на обычные атрибуты, о которых мы говорили чуть выше. Дело в том, что по определению XML-декларация и инструкции по обработке не могут содержать атрибутов, поэтому данные объявления назвали псевдоатрибутами. Это стоит запомнить на будущее во избежание разнообразных ошибок.

    Поскольку мы разобрались с псевдоатрибутами, то давайте рассмотрим, что же они означают.

    • Encoding – отвечает за кодировку XML документа. Обычно используется кодировка UTF8.
    • Version – версия языка XML, на котором написан данный документ. Обычно это XML версии 1.0.

    Ну а теперь перейдем к заключающей части статьи и рассмотрим такие конструкции XML как комментарии и секции CDATA.

Понравилась статья? Поделиться с друзьями: