Комментарии в xml файле. Смотреть что такое "XML" в других словарях. Отображение XML во Всемирной паутине

Описание структуры XML-документов.

Каждый XML-документ несет информацию о данных и их структуре (описание метаданных).

XML-документы могут быть двух типов:

1. документы, созданные с учетом логических и структурных правил;

2. документы, не использующие никаких правил, кроме синтаксических правил оформления XML-документов.

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

При создании документа первого типа описание его структуры может быть выполнено с использованием таких языков, как Document Type Definitions (DTD), XML Schema, RELAX NG, XML Data-Reduced и др. Наибольшее распространение получили языки DTD и XML Schema.

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

Язык XML Schema Definition (XSD).

Язык XML Schema Definition (XSD) основан на XML и обладает более широкими возможностями описания структуры документа, чем DTD. Он поддерживает типизацию данных, пространства имен, регулярные выражения.

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

Основным преимуществом языка XML Schema является поддержка строго типизированных данных. При обмене данными между различными приложениями и базами данных задача согласования типов данных всегда остается актуальной, поскольку в разных системах определения типов данных могут отличаться. К таким отличиям относятся: максимальное и минимальное воз­можные значения, наибольшая длина, поддержка дробных чисел, внутренняя кодировка и внешний формат (например, для даты и времени). Таким образом, несмотря на возможное совпадение названий типов данных, их реализация в различных продуктах может отличаться. Применение типов данных в схемах позволяет проводить необходимую верификацию данных документа при обмене или совместном использовании данных несколькими системами.

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

XML Schema всегда создается в отдельном файле, имеющем расширение xsd. Файл XML связывается с соответствующей схемой с помощью атрибута schemaLocation пространства имен схемы. Для того чтобы использовать атрибут schemaLocation, необходимо определить пространство имен схемы. Все эти определения указываются в корневом элементе документа XML.

Рассмотрим основные элементы структуры XML Schema.

Корневым элементом всегда является элемент . Описание атрибутов элемента приводится в табл. 2.10.

Корневой элемент может содержать следующие дочерние элементы:

1. - используется для определения элементов XML-документа;

2. - используется для определения атрибутов XML-документа;

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

4. - используется для определения атрибутов группы элементов;

5. - позволяет включать в XML-документ документацию;

6. - позволяет использовать компоненты указанной внешней схемы в основной схеме (обеспечивает модульность схем);

7. - добавляет все компоненты указанной внешней схемы в основную схему (обеспечивает модульность схем);

8. - содержит определение нотации, описывающей формат не-XML-данных в XML-документе;

9. - переопределяет компоненты внешней схемы, имеющей то же пространство имен, что и основная схема;

10. - объявляет простой тип содержимого элемента. Элементы с простым типом данных могут содержать только символьные данные и не могут включать атрибуты и дочерние элементы;

11. - объявляет сложный тип содержимого элемента, который может включать атрибуты и другие элементы.

XML Schema поддерживает три основные категории типов данных:

1. предопределенные примитивные типы - фундаментальные типы данных, на которые можно ссылаться и применять их к элементам и атрибутам. Примерами примитивных типов данных являются String, Float, Double, Time, Date, Decimal, AnyURI;

2. предопределенные производные типы - встроенные типы, полученные на основании примитивных типов. Примерами производных типов данных являются Integer, Long, Byte, Short, nonPositivelnteger, nonNegativelnteger, ID и др.;

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

Для описания элементов и атрибутов, имеющих предопределенные (примитивные и производные) типы данных, в XML Schema используются следующие синтаксические конструкции.

Дополнительно для элементов и атрибутов можно указать атрибуты fixed или default для задания фиксированных значений элементов/атрибутов или значений по умолчанию.

Если необходимо описать нестандартный тип данных для элемента или атрибута, то это следует делать с помощью тега , описав в нем новый тип данных.

Новые нестандартные простые типы данных получают путем:

1. сужения (restriction) встроенного или ранее определенного простого типа с помощью задания дополнительных ограничений;

2. объединения (union) простых типов;

3. использования списка (list) простых типов.

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

Пример использования нового простого типа данных, полученного путем объединения базовых типов (элемент или атрибут могут принимать неотрицательные или неположительные целые значения):

Пример использования списка простых типов (атрибут shoeSizes объявляется в качестве списка, содержащего десятичные значения 10.5, 9, 8 и 11):

Язык XML Schema использует различные типы ограничений на данные (см. табл. 2.8):

1. ограничения длины (количество символов);

2. границы значений (наибольшее и наименьшее значения как диапазон или порог);

3. ограничения количества цифр десятичного числа (общее количество цифр или количество цифр после запятой);

4. список допустимых значений;

5. шаблоны;

6. обработка символов пробела.

Примеры использования различных ограничений приведены в табл. 2.11.

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

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

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

В данном примере определен нестандартный тин данных с именем «Код», базирующийся на типе «string»: он использован как тип данных для элементов «Код1» и «Код2».

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

При описании сложного типа указываются порядок вхождения дочерних элементов (с помощью специальных тегов - индикаторов порядка, см. табл. 2.11), а также степень кардинальности повторяющихся элементов (с использованием атрибутов minOccurs и maxOccurs).

Атрибут minOccurs определяет минимальную степень кардинальности, то есть наименьшее возможное количество повторений дочернего элемента. Значение minOccurs, равное нулю, указывает на необязательность (опциональность) элемента.

Атрибут maxOccurs определяет максимальную степень кардинальности, или наибольшее количество повторений элемента. Максимальная и минимальная степени кардинальности задаются определенными значениями. Для maxOccurs может быть указано значение unbounded (элемент встречается любое количество раз).

В данном примере описан сложный тип данных для элемента «Книга», содержащего дочерние элементы «Название», «Автор», «Код», «Цена». Тег является индикатором порядка вхождения дочерних элементов (табл. 2.12), а атрибут maxOccurs показывает максимально допустимое количество повторений элемента «Автор».

Индикатор порядка choice указывает, что элемент этого типа «Цена» может содержать либо элемент «Рубли», либо элемент «Доллары», но не оба.


Похожая информация.


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

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

Имена элементов

У каждого элемента должно быть имя. Имена элементов учитывают регистр и должны начинаться с буквы или символа подчеркивания. Имя элемента может содержать буквы, цифры, дефисы, символы подчеркивания и точки.

Примечание

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

Начальные, конечные и пустые теги

Теги устанавливают границы вокруг содержимого элемента, если таковое имеется.

Начальные теги показывают, где начинается элемент, и используют следующую синтаксическую конструкцию:

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

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

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

Peter Kress

В данном случае элемент Содержит два других элемента, и , а также разделяющий их пробел. Элемент содержит текст Peter, а элемент - текст Kress.

Пустые теги используются для указания элементов, которые не содержат текста, но могут иметь атрибуты. Элементы HTML img и br представляют собой примеры пустых элементов. Пустые теги можно использовать как сокращения, если между начальным и конечным тегами документа содержимое отсутствует. Пустые теги выглядят как открывающие, но содержат косую черту (/) перед закрывающей скобкой >.

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

Отношения между элементами

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

Stephanie Bourne

Stephanie Bourne

Примечание

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

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

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

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

Метафоры семейных отношений предоставляют больше различных уровней для описания отношений. Единственные узлы-сестры - , и ; все они содержатся в элементе . Элемент является родителем для элементов , и ; элементы , и являются дочерними для элемента . Точно так же, элемент - родитель элемента , а элемент - дочерний для элемента , в то время как элемент является родителем элемента , а элемент - дочерним элементом для элемента .

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

20. Языки описания cхем XML

DTD схемы. Недостатки DTD схем. XDR схемы. Элементы и атрибуты XDR схем.

Идея создания собственных тэгов, имеющих специальное значение и помогающих описать содержание документа, сама по себе просто замечательна. Но если каждый пользователь может создавать свои собственные описания, каким образом их распознавать? С этой целью в спецификации XML для описания подобных "самодеятельных" тэгов используются схемы. Они необходимы для того, чтобы:

    описать, что именно является разметкой;

    описать точно, что означает разметка.

Наиболее известными языками описания схем являются следующие:

    DTD (Document Type Definition) - язык определения типа документов, который первоначально использовался в качестве язык описания структуры SGML-документа.

    XDR (XML Data Reduced) – диалект схемы XML, разработанный Microsoft, который поддерживался в Internet Explorer 4 и 5 версий.

    XML Schema или просто XSD (язык определения схем XML) – рекомендация консорциума W3C с 2001 года.

Рассмотрим подробнее первые два из них. Третий язык описания схем рассматривается в лабораторной работе 11.

DTD схема

Схема DTD предоставляет шаблон разметки документа, в котором указываются наличие, порядок следования и расположение элементов и их атрибутов в документе XML.

В рамках DTD модель содержимого XML документа можно описать следующим образом:

Каждый элемент документа может иметь один из типов:

Синтаксис

Комментарий

Содержит только текстовые данные

Другие элементы

Содержит только дочерние элементы

Смешанное

Содержит комбинацию текстовых данных и дочерних элементов

Ничего не содержит

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

имя_элемента имя_атрибута1 (тип) значение_по_умолчанию

…………………………………………………………………………………...

имя_элемента имя_атрибутаN (тип) значение_по_умолчанию >

При этом атрибут в DTD может иметь один из трех типов:

  • Маркированные атрибут

    Атрибута с перечислением

Кроме типа атрибута можно также задавать и его модальность:

Рассмотрим в качестве примера описание атрибутов строкового типа для элемента, описывающего некоторое сообщение:

number CDATA #REQUIRED

date CDATA #REQUIRED

from CDATA #FIXED

status CDATA #IMPLIED>

Если этот элемент содержит атрибуты с перечислением, то их описание может выглядеть, например, следующим образом:

number ID #REQUIRED

from CDATA #REQUIRED

alert (low | normal | urgent) "normal">

Маркированных атрибуты элемента могут быть четырех типов:

И, наконец, в DTD можно использовать следующие индикаторы вхождения последовательностей:

Символ

Пример

Описание

Последовательное использование элементов списка

Используется один из членов списка

Используется один и только один элемент

Необязательное использование (0 или 1 раз)

Используется один или несколько раз

Используется ноль или несколько раз

В качестве примера приведем DTD схему, описывающую структуру электронного почтового ящика:

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

[email protected]

[email protected]

Re:

[email protected]

[email protected]

Remind

[email protected]

Remind me about meeting.

Обратите внимание на 2-ю строчку документа, в которой указывается внешняя ссылка на файл, содержащий DTD схему.

В принципе, DTD допускает два способа использования в XML документе.

Объявление внутренней схемы:

Объявление внешней схемы:

В заключение укажем на следующие недостатки DTD схем:

    Не являются экземплярами XML. Требуется изучение совершенно другого языка.

    Не предоставляют контроль за типами данных, за исключением самых простых текстовых данных.

    Не являются экземплярами XML, поэтому их нельзя легко расширить или преобразовать к другим языкам разметки – HTML или DHTML.

    Не обеспечивают поддержки пространств имен XML.

XDR схема

XML-Data – полное имя языка описания схем, предложенного Майкрософт, а XML-DataReduced– это "часть" полной рекомендации. Схема XDR - это экземпляр XML, т.е. соответствует всем синтаксическим правилам и стандартам XML.

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

Корневым элементом в схеме XDR всегда является элемент Schema:

name="имя_схемы" xmlns="urn:schemas-microsoft-com:xml-data"

xmlns:dt="urn:schemas-microsoft-com:datatypes">

<-- Объявления других элементов -->

Элемент ElementType имеет синтаксис:

content="{empty | texOnly | eltOnly | mixed}">

dt:type "datatype"

model="{open | closed}"

order="{one | seq | many}"

Элемент ElementType может иметь следующие атрибуты:

Имя атрибута

Описание

Имя элемента

Тип данных элемента

Может принимать значения:

Open – разрешено использовать элементы, не определенные в схеме

Closed – запрещено использовать элементы, не определенные в схеме

Порядок следования дочерних элементов в экземпляре XML. Допустимые значения:

one – предполагается наличие одного документа

many – любое количество элементов в любом порядке

seq – элементы указываются в строго заданном порядке.

качестве дочерних элементов для ElementType можно использовать следующие:

Имя элемента

Описание

Объявляет дочерний элемент

Обеспечивает описание элемента ElementType

Обеспечивает тип данных элемента ElementType

Определяет порядок следования элементов

Определяет атрибут

Определяет сведения о дочернем элементе AttributeType

Для объявления атрибутов используется синтаксис:

default="default-value"

dt:type="primitive-type"

dt:values="enumerated-values"

required="{yes|no}"

В свою очередь элемент AttributeType может иметь атрибуты:

Значение

Описание

Значение по умолчанию

Один из следующих типов:

entity, entities, enumeration, id, idref, nmtoken, nmtokens, notation, string

Допустимые значения

Имя атрибута

Указывает на обязательное наличие атрибута в описании

Синтаксис для описания элемента attribute выглядит следующим образом:

default="default-value"

type="attribute-type"

а его возможные значения могут быть такими:

Значение



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

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

Язык разметки XML описывает, а также структурирует содержание файла XML. Основа языка разметки – тэг, который ограничивает разделы содержания. Данный способ описания документа очень похож на разметку HTML, однако между этими языками существует большая разница.

Приведем небольшой пример, написанный как на HTML, так и на XML.

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

HTML

XML

< Table border = 0 >

< tr >

< td >

< H1 align =” center ”> Этот текст находится внутри HTMLh1 >

< hr size = 1 >

td >

tr >

table >

< table border =” 0 ”>

< tr >

< td >

< h1 align =” center ”> Этот текст находится внутри XMLh1 >

< hr size =” 1 ”/>

td >

tr >

table >

Теперь, взглянув на эти примеры, можно заметить отличия разметки XML от привычного нам HTML. Главное отличие состоит в том, что язык XML чувствителен к регистру символов, это касается как имен тегов, так и значений атрибутов. То есть

.

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


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

Имена и символы

Символы в языке XML представляют собой числа, определенные в наборе символов 16-bit+ Unicode 2.1. Данный способ кодирования соответствует стандарту ISO/IEC 10646, описанному на сайте по адресу: //www.iso.ch .

Имена

В языке XML все имена должны начинаться с буквы, символа нижнего подчеркивания (_) или двоеточия (:) и продолжаться только допустимыми для имен символами. К числу последних относятся все вышеперечисленные символы, а также цифры, знак дефиса (-) или точки (.). Имена не могут начинаться со строк “xml”, “XML”, “xML”, “xmL”, “XMl”, “Xml”, “XmL”.

Пример. Это правильные имена: Book, BOOK, myname: Catalog, Книга.

Это не правильные имена: -BOOK, 101Далматинец, XMLForever, Лена+Петя=Любовь.

Структура документа

Правильно оформленный документ XML состоит из трех главных частей:

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

Рассмотрим стандартный пример простого документа XML.

Тело

Эпилог

Рассмотрим подробнее структуру приведенную выше.

Пролог

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

Итак, пролог состоит из следующих атрибутов:

  • version – обязательный атрибут, значение которого должно быть равно 1.0 для поддержки следующих версий;
  • encoding – необязательный атрибут, указывающий на кодировку документа XML. Если атрибут не указан, то по умолчанию предполагается кодировка UTF-8 или UTF-16, в зависимости от формата начальной строки “
  • standalone – необязательный атрибут, принимающий значения “yes” в случае, если в документе содержаться все требуемые декларации типа документа (Document Type Declaration), или “no”, - если декларации находятся в отдельном файле. Забегая вперед, скажу, что декларации типа документа могут находится как в самом документе XML, так и в отдельном файле одновременно, дополняя друг друга.

Декларация типа документа

Декларацию типа документа не следует путать с определением типа документа. Можно сказать, что декларация типа документа содержит внутреннее подмножество и/или ссылается на внешнее подмножество определения типа документа.

Все допустимые (valid) документы должны содержать такого рода декларации, либо ссылки на их внешний эквивалент (пример такой ссылки приведен ниже).

.

Данный элемент «говорит», что представленная структура документа XML определяется внешней декларацией books.dtd, находящейся по адресу //yourserver.com/ .

Тело

Тело состоит из элементов. Элементы – это основные строительные блоки разметки XML. Элементы могут содержать подэлементы, символьные данные, ссылки на символы, ссылки на объекты, команды PI (команды обработки), комментарии, разделы CDATA. Все данные XML, кроме комментариев, команд обработки и пустого пространства, должны содержаться внутри элементов.

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

Все элементы должны быть вложены друг в друга. Это выглядит примерно так:

< a >

< b >

…………………………………

< b >

…………………………………

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

Для сравнения приведем два примера, как нельзя составлять документы XML.

< a >

< b >

…………………………………….

< a >

……………………………………………

< b >

…………………………………………....

Здесь все очевидно. В первом примере мы видим отсутствие вложенности тэгов, а во втором – в документе существуют два корня.

Атрибуты

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

attribute_name=”attribute_value”

attribute_name=’attribute_value’

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

Пример: . В данном случае мы имеем элемент “Book” с атрибутом “category”, значением которого является слово “Fantasy”.

Атрибут xml:space служит для указания приложению сохранять пустые пространства. Данный атрибут можно сравнить с тэгом

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

Атрибут xml:lang введен для указания приложению о существовании текста со специфической кодировкой, где надо учитывать порядок сортировки символов, способы разделения слов при полнотекстовом индексировании и т.д. Указывая данный атрибут, мы даем понять приложению, какой язык использует элемент с данным атрибутом. Значением атрибута xml:lang является специльный двухбуквенный код, обозначающий соответствующий язык: fr для французского, ja для японского. Также двухбуквенный код может сопровождаться подкодами: en-US – американский английский, az-cyrillic – азербайджанская кириллица.

Эпилог

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

В этом и заключается основная проблема эпилога.

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

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