XMLElement
XMLElement — это фундаментальный структурный элемент языка разметки XML (Extensible Markup Language), представляющий собой основную единицу хранения данных. Каждый XML-документ состоит из одного или нескольких вложенных друг в друга элементов, которые образуют иерархическое дерево. Элемент XML может содержать текстовые данные, атрибуты, другие вложенные элементы или их комбинацию.
Структура и синтаксис
Определение элемента
Элемент XML определяется с помощью открывающего и закрывающего тегов. Имя элемента заключается в угловые скобки. Закрывающий тег отличается от открывающего наличием косой черты перед именем. Между открывающим и закрывающим тегами располагается содержимое элемента.
Пример простого элемента: ``xml <book>Война и мир</book> ``
В данном примере <book> — открывающий тег, </book> — закрывающий тег, а «Война и мир» — текстовое содержимое элемента.
Пустые элементы
Элемент, не содержащий никакого содержимого (ни текста, ни вложенных элементов), может быть записан в сокращённой форме — как самозакрывающийся тег: ``xml <line-break /> ``
Такая запись эквивалентна полной форме <line-break></line-break>.
Атрибуты
Элемент может содержать атрибуты — пары «имя=значение», которые указываются в открывающем теге. Значение атрибута обязательно заключается в кавычки (одинарные или двойные). Атрибуты предоставляют дополнительную информацию об элементе, не являющуюся частью его содержимого.
Пример элемента с атрибутами: ``xml <book isbn="978-5-17-123456-7" year="1869"> <title>Война и мир</title> <author>Лев Толстой</author> </book> ``
Здесь элемент <book> имеет два атрибута: isbn и year. Внутри него находятся вложенные элементы <title> и <author>.
Имена элементов
Правила именования
Имена элементов XML подчиняются строгим правилам:
- Имя должно начинаться с буквы, символа подчёркивания (
_) или двоеточия (:). - После первого символа могут следовать буквы, цифры, дефисы, подчёркивания, точки и двоеточия.
- Имена не могут начинаться с префикса «xml» (в любом регистре).
- Пробелы в именах не допускаются.
- Имена чувствительны к регистру:
<Book>,<book>и<BOOK>считаются разными элементами.
Пространства имён
Для избежания конфликтов имён при объединении XML-документов из разных источников используются пространства имён (namespaces). Пространство имён определяется с помощью атрибута xmlns: ``xml <book xmlns:fiction="http://example.com/fiction"> <fiction:title>Война и мир</fiction:title> </book> ``
В этом примере префикс fiction связывает элемент <title> с пространством имён http://example.com/fiction`.
Иерархия и вложенность
Древовидная структура
XML-документ образует строгую иерархическую структуру, напоминающую дерево. Каждый элемент может содержать другие элементы, которые называются дочерними по отношению к родительскому. Элемент, не имеющий родителя, называется корневым. В корректном XML-документе может быть только один корневой элемент.
Пример иерархии: ``xml <library> <book> <title>Война и мир</title> <author>Лев Толстой</author> </book> <book> <title>Преступление и наказание</title> <author>Фёдор Достоевский</author> </book> </library> ``
Здесь <library> — корневой элемент, содержащий два дочерних элемента <book>, каждый из которых, в свою очередь, содержит дочерние элементы <title> и <author>.
Правильная вложенность
В XML требуется строгое соблюдение вложенности: если элемент открыт внутри другого, он должен быть закрыт до закрытия родительского элемента. Нарушение этого правила приводит к некорректности документа.
Типы содержимого
Текстовое содержимое
Элемент может содержать только текст. Текст внутри элемента не должен содержать символов < и & (за исключением случаев использования предопределённых сущностей: < для <, & для &).
Вложенные элементы
Элемент может содержать только другие элементы, без текста между ними.
Смешанное содержимое
Элемент может содержать как текст, так и вложенные элементы. Пример: ``xml <paragraph>Это текст с <bold>выделением</bold> внутри.</paragraph> ``
Пустое содержимое
Элемент может не содержать ничего, являясь пустым.
Обработка и использование
Парсинг XML-элементов
Для извлечения данных из XML-документов используются парсеры. Существует два основных подхода:
- DOM (Document Object Model) — загружает весь документ в память в виде дерева объектов, позволяя произвольный доступ к элементам.
- SAX (Simple API for XML) — последовательный потоковый парсинг, при котором обработчик получает события при входе и выходе из каждого элемента.
Применение в программировании
В языках программирования существуют библиотеки для работы с XML-элементами. Например, в Python используется модуль xml.etree.ElementTree, в Java — javax.xml.parsers, в C# — пространство имён System.Xml.Linq.
Пример работы с элементом на Python: ```python import xml.etree.ElementTree as ET
root = ET.fromstring('<book><title>Война и мир</title></book>') title = root.find('title').text print(title) # Выведет: Война и мир ```
Валидация и корректность
Правильно оформленный документ
XML-документ считается правильно оформленным (well-formed), если он соответствует синтаксическим правилам XML: имеет один корневой элемент, все теги правильно вложены и закрыты, атрибуты заключены в кавычки, специальные символы экранированы.
Действительный документ
Документ считается действительным (valid), если он не только правильно оформлен, но и соответствует определённой схеме (DTD, XML Schema, Relax NG), которая задаёт допустимые имена элементов, их атрибуты и структуру вложенности.
Примеры использования
Конфигурационные файлы
XML-элементы широко применяются в конфигурационных файлах программного обеспечения. Например, в среде разработки Eclipse используется файл .project: ``xml <?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>MyProject</name> <comment></comment> <projects></projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> </buildCommand> </buildSpec> </projectDescription> ``
Обмен данными
Форматы на основе XML-элементов, такие как RSS (Really Simple Syndication) и SOAP (Simple Object Access Protocol), используются для обмена структурированными данными между системами.
Документооборот
Форматы Office Open XML (используемый в Microsoft Office) и OpenDocument (используемый в LibreOffice) основаны на XML-элементах, что позволяет программно обрабатывать офисные документы.
Источники
- Extensible Markup Language (XML) 1.0 (Fifth Edition) — W3C Recommendation, 26 November 2008.
- Спецификация XML 1.1 (Second Edition) — W3C Recommendation, 16 August 2006.
- Документация модуля
xml.etree.ElementTree— Python Software Foundation. - XML Schema Part 1: Structures (Second Edition) — W3C Recommendation, 28 October 2004.
- Bray, T., Paoli, J., Sperberg-McQueen, C. M., Maler, E., Yergeau, F. (2008). Extensible Markup Language (XML) 1.0 (Fifth Edition).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →