XML-дерево - XML tree - Wikipedia
XML документы имеют иерархическую структуру и могут концептуально интерпретироваться как древовидная структура, называемая XML-дерево.
XML-документы должны содержать корневой элемент (родительский для всех остальных элементов). Все элементы в XML-документе могут содержать вложенные элементы, текст и атрибуты. Дерево, представленное XML-документом, начинается с корневого элемента и разветвляется на самый нижний уровень элементов. Хотя нет единого мнения относительно терминологии, используемой в XML-деревьях, по крайней мере две стандартные терминологии были выпущены W3C:
- Терминология, используемая в XPath Модель данных
- Терминология, используемая в Набор информации XML.
XPath определяет синтаксис с именем Выражения XPath который идентифицирует один или несколько внутренних компонентов (элементов, атрибутов и т. д.) XML-документа. XPath широко используется для доступа к данным в кодировке XML.
Информационный набор XML, или информационный набор XML, описывает абстрактную модель данных для документов XML в терминах информационных элементов. Он часто используется в спецификациях языков XML из-за удобства описания ограничений на конструкции, допускаемые этими языками.
Представление в виде деревьев
В математике дерево - неориентированный граф, в котором любые две вершины соединены ровно одним простым путем. Любой связный граф без простых циклов - это дерево. Древовидная структура данных имитирует иерархическую древовидную структуру с набором связанных узлов. Иерархия состоит из порядка, определенного на множестве. Термин иерархия используется для подчеркивания иерархической связи между элементами.
Спецификация XML определяет XML-документ как правильно сформированный текст, если он удовлетворяет списку синтаксических правил, определенных в спецификации. Это длинная спецификация, однако два ключевых момента, относящихся к древовидной структуре XML-документа:
- Теги начала, конца и пустого элемента, которые разделяют элементы, правильно вложены, ни один из них не пропущен и не перекрывается.
- Один "корневой" элемент содержит все остальные элементы.
Эти особенности напоминают деревья тем, что есть единственный корневой узел и порядок элементов. XML появился как первоклассный тип данных в других языках. Расширение JavaScript (E4X) явно определяет два конкретных объекта (XML и XMLList), которые поддерживают узлы документов XML и списки узлов XML как отдельные объекты и используют точечную нотацию, определяющую отношения родитель-потомок. [1] Эти структуры данных представляют XML-документы в виде древовидной структуры.
XML-дерево, представленное графически, может быть таким же простым, как диаграмма ASCII, или более сложной графической иерархией. Например, документ XML и дерево ASCII имеют одинаковую структуру. XML-деревья не отображают содержимое в документе экземпляра, а только структуру документа. В этом примере продукт является корневым элементом дерева, а два дочерних узла продукта - это имя и подробности. Подробности содержат два дочерних узла: Описание и Цена. Команда tree в Windows и * nix также создает аналогичную древовидную структуру и путь.
Продукт├───Наименование└───Детали └───Описание └───Цена
1 <Product>2 <Name>Виджет</Name>3 <Details>4 <Description>5 Этот виджет - виджет высочайшего качества. 6 </Description>7 <Price>5.50</Price>8 </Details>9 </Product>
Модель данных XPath
XPath XML Path Language - это язык запросов для выбора узлов из XML-документа. XPath определяет синтаксис с именем Выражения XPath который может запрашивать XML-документ для одного или нескольких внутренних компонентов (элементов, атрибутов и т. д.). XPath широко используется в других спецификациях core-XML и в библиотеках программирования для доступа к данным в кодировке XML. [2]
Терминология модели данных XPath
Модель данных XPath - это длинная спецификация, включающая множество функций, не связанных с деревьями XML. Ниже перечислены ключевые термины из этой спецификации и спецификации XML.[3][4]
- Пример
- Модель данных представлена в виде последовательности.
- Документ экземпляра
- Документ, использующий одну и ту же последовательность / дерево XML и соответствующий ей.
- Последовательность
- Коллекция заказов, состоящая из нуля или более элементов. Последовательность не может быть членом последовательности. Одиночный элемент, появляющийся индивидуально, моделируется как последовательность, содержащая один элемент.
- Элемент
- Узел в последовательности, который может содержать
- Узел
- Любой элемент, представленный в дереве / последовательности XML.
- Корневой узел
- Самый верхний элемент дерева. Все остальные элементы и узлы должны содержаться в корневом узле.
- Элемент
- Узел или атомарное значение.
- Пространство значений
- Часть элемента, содержащая данные, а не дополнительные элементы.
- Атомный тип
- Примитивный простой тип или тип, производный путем ограничения от другого атомарного типа.
- Атомная стоимость
- Значение атомарного типа, содержащееся в пространстве значений.
- QName
- Полное имя элемента. Он должен соответствовать правилам именования объектов XML. (т.е. должен начинаться с буквы или подчеркивания, с учетом регистра, не может начинаться с букв xml (в любом случае), может содержать буквы, цифры, дефисы, подчеркивания и точки, не может содержать пробелов.)
- Expanded-QName
- Полное имя элемента. Он может включать префикс и пространство имен. Он должен включать местное имя элемента.
В данном дереве порядок документов удовлетворяет следующим ограничениям:[5]
- Корневой узел - это первый узел.
- Каждый узел встречается перед всеми своими дочерними и потомками.
- Узлы пространства имен сразу следуют за узлом элемента, с которым они связаны. Относительный порядок узлов пространства имен стабилен, но зависит от реализации.
- Узлы атрибутов следуют сразу за узлами пространства имен элемента, с которым они связаны. Если с данным элементом не связаны никакие узлы пространства имен, то узлы атрибутов, связанные с этим элементом, сразу же следуют за элементом. Относительный порядок узлов атрибутов стабилен, но зависит от реализации.
- Относительный порядок братьев и сестер - это порядок, в котором они встречаются в свойстве children родительского узла.
- Дети и потомки появляются раньше братьев и сестер.
Набор информации XML
Набор информации XML (XML Infoset) описывает абстрактную модель данных XML-документа в терминах набора информационных элементов. Определения в спецификации набора информации XML предназначены для использования в других спецификациях, которые должны ссылаться на информацию в правильно сформированном документе XML. Информационный набор позволяет удобно описывать ограничения на конструкции XML, допускаемые другими языками XML. XML-документ имеет набор информации, если он правильно сформирован и удовлетворяет ограничениям пространства имен. Информационный набор может содержать до одиннадцати различных типов информационных элементов:
- Информационный элемент документа (всегда присутствует)
- Элементы информации об элементах
- Элементы информации об атрибутах
- Информационные элементы инструкции по обработке
- Элементы справочной информации нерасширенных сущностей
- Элементы информации о персонажах
- Элементы информации комментариев
- Информационный элемент объявления типа документа
- Не проанализированные элементы информации о сущности
- Информационные элементы обозначений
- Информационные элементы пространства имен [6]
Терминология набора информации XML
Информационный набор XML - это длинная спецификация, включающая множество функций, не связанных с деревьями XML. Ниже перечислены наиболее важные термины, относящиеся к терминологии XML-дерева:
"В наборе информации есть ровно один информационный элемент документа, и все остальные информационные элементы доступны из свойств информационного элемента документа, прямо или косвенно через свойства других информационных элементов. Информационный элемент документа имеет следующие свойства:
- [дети]
- [элемент документа]
- [обозначения]
- [неразобранные объекты]
- [базовый URI]
- [схема кодировки символов]
- [автономный]
- [версия]
- [все объявления обработаны]
Для каждого элемента, появляющегося в XML-документе, существует информационный элемент element. Один из информационных элементов element - это значение свойства [document element] информационного элемента document, соответствующее корню дерева элементов, и все другие информационные элементы element доступны через рекурсивное отслеживание его свойства [children]. Информационный элемент element имеет следующие свойства:
- [имя пространства имен]
- [местное название]
- [префикс]
- [дети]
- [атрибуты]
- [атрибуты пространства имен]
- [пространства имен в области видимости]
- [базовый URI]
- [родитель]
Для каждого атрибута (указанного или установленного по умолчанию) каждого элемента в документе существует информационный элемент атрибута, включая объявления пространств имен. Однако последние появляются как члены свойства [атрибуты пространства имен] элемента, а не его свойства [атрибуты]. Атрибуты, объявленные в DTD без значения по умолчанию и не указанные в начальном теге элемента, не представлены элементами информации атрибутов. Информационный элемент атрибута имеет следующие свойства:
- [имя пространства имен]
- [местное название]
- [префикс]
- [нормализованное значение]
- [указано]
- [тип атрибута]
- [Рекомендации]
- [элемент владельца][7]
Примечания
- ^ «Обработка XML с помощью E4X». Центр разработчиков Mozilla. Mozilla Foundation.
- ^ Модель данных XQuery 1.0 и XPath 2.0 (XDM) (второе издание), 14 декабря 2010 г., http://www.w3.org/TR/xpath-datamodel/
- ^ Модель данных XQuery 1.0 и XPath 2.0 (XDM) (второе издание), 14 декабря 2010 г., http://www.w3.org/TR/xpath-datamodel/
- ^ Extensible Markup Language (XML) 1.0 (пятое издание), 26 ноября 2008 г., дата обращения: 24 июля 2018 г., https://www.w3.org/TR/xml/REC-xml-20081126-review.html#sec-terminology
- ^ Модель данных XQuery 1.0 и XPath 2.0 (XDM) (второе издание), 14 декабря 2010 г., http://www.w3.org/TR/xpath-datamodel/
- ^ Информационный набор XML (второе издание), 4 февраля 2004 г., http://www.w3.org/TR/xml-infoset/
- ^ Информационный набор XML (второе издание), 4 февраля 2004 г., http://www.w3.org/TR/xml-infoset/