Что такое формат файла XML?
Файлы .xml хранят данные в формате Extensible Markup Language - текстовом стандарте, разработанном W3C. XML-файлы могут представлять любую структуру данных в виде простого текста, что делает их подходящими для хранения, обмена и передачи данных между приложениями через интернет.
XML использует структуры разметки - вложенные теги и атрибуты, - которые определяют правила процесса кодирования для создания документов, пригодных для чтения как машинами, так и людьми. Он был разработан как более доступная реализация SGML (Standard Generalized Markup Language), упрощенная для использования в вебе. Файлы обычно начинаются с декларации <?xml version="1.0" encoding="UTF-8"?>, а MIME-тип - application/xml.
Файлы XML используют кодировку Unicode (по умолчанию UTF-8), их можно открывать и редактировать в любом стандартном текстовом редакторе. Поскольку формат является самоописываемым - каждый элемент имеет имя и вложен в четкую иерархию - данные можно изучать без специального ПО, хотя для программной обработки или запросов требуется парсер или язык запросов, такой как XPath.
XML во многом похож на .HTML, так как оба формата используют язык разметки для представления структурированного контента. HTML ориентирован на представление и взаимодействие с веб-страницами, в то время как XML описывает контент применительно к самим данным. Эти два формата используются вместе во многих веб-приложениях. XML также служит основой для связанных стандартов, таких как схемы валидации .XSD, таблицы стилей преобразования .XSL и ленты синдикации .RSS.
Безопасность и защита
РИСК: MEDIUMФайл XML является обычным текстом и не содержит исполняемого кода, поэтому его чтение безопасно. Реальные риски кроются в ПАРСЕРЕ, а не в файле: атаки типа XML External Entity (XXE) злоупотребляют декларациями <!DOCTYPE>/<!ENTITY> для чтения локальных файлов или инициирования сетевых запросов, а расширение сущностей «billion laughs» может исчерпать память (отказ в обслуживании). Это имеет значение только тогда, когда ПО анализирует недоверенный XML с включенной обработкой внешних сущностей и DTD - современные парсеры отключают их по умолчанию. Для конечного пользователя, просто открывающего .xml для чтения, опасности нет; предостережение касается разработчиков, обрабатывающих внешние данные XML. Также остерегайтесь файлов, которые выглядят как «data.xml», но на самом деле являются переименованными файлами другого типа.
Детали формата
в двух словахПрограммы, открывающие файлы XML
Технические подробности
глубокая спецификация| Кодировка файла | Только Unicode; UTF-8 используется по умолчанию при отсутствии декларации; UTF-16 и UTF-32 поддерживаются и должны быть объявлены в прологе XML |
| MIME-тип | `application/xml` (основной, согласно RFC 7303); `text/xml` принимается для обратной совместимости; специфические диалекты могут регистрировать собственный тип (например, `application/rss+xml`) |
| Сигнатура файла | Фиксированное бинарное «магическое число» отсутствует; файлы обычно начинаются с необязательной декларации XML `<?xml` (hex `3C 3F 78 6D 6C`); перед ней может идти UTF-8 BOM (`EF BB BF`) или UTF-16 BOM (`FF FE` / `FE FF`) |
| Структура документа | Строгая иерархия: ровно один корневой элемент; неограниченная вложенность дочерних элементов; открывающие теги могут содержать именованные атрибуты в кавычках; все дерево должно быть правильно оформленным |
| Правила оформления | Все теги должны быть закрыты (включая самозакрывающиеся); элементы не должны пересекаться при вложении; значения атрибутов должны быть в кавычках; пять предопределенных сущностей (&, <, >, ", ') используются для зарезервированных символов |
| Механизмы валидации | DTD (Document Type Definition - встроенный или внешний файл `.dtd`, старый стандарт) и XSD (XML Schema Definition - файл `.xsd`, сам написанный на XML, с более богатой системой типов); Schematron предлагает валидацию на основе правил |
| Поддержка пространств имен | Декларации `xmlns` и `xmlns:prefix` связывают имена элементов и атрибутов с URI, предотвращая конфликты при объединении словарей из разных источников |
| Секции CDATA | Блоки `<![CDATA[...]]>` позволяют вставлять необработанный текст, содержащий <, > и &, без экранирования; полезно для встраивания фрагментов HTML или кода скриптов |
| Инструкции по обработке | Синтаксис `<?target instruction?>` встраивает специфические для приложения директивы (например, `<?xml-stylesheet type="text/xsl" href="style.xsl"?>`) вне модели данных XML |
| Языки запросов | XPath 1.0/2.0/3.1 обращается к отдельным узлам внутри документа; XQuery обеспечивает запросы в стиле SQL к наборам данных XML; оба стандартизированы W3C |
| Преобразование XSLT | Файлы `.xml` могут быть преобразованы в HTML, обычный текст или другие словари XML во время выполнения процессором XSLT, объединяющим исходный документ с таблицей стилей `.xsl` или `.xslt` |
| Синтаксис комментариев | Комментарии `<!-- текст -->` могут появляться в любом месте вне тега; двойное тире запрещено внутри тела комментария; комментарии исключаются из модели данных XML |
| Нормализация строк | Совместимые парсеры нормализуют последовательности \r\n и одиночные \r в \n перед обработкой, обеспечивая единообразное поведение окончаний строк на разных платформах |
| Декларации сущностей | Именованные сущности (&name;) и числовые ссылки на символы (&#nnnn; десятичные или &#xHHHH; шестнадцатеричные) позволяют встраивать любую кодовую точку Unicode; пользовательские сущности могут быть объявлены в DTD |
| Структура пролога | Документ XML состоит из необязательной декларации XML, необязательной декларации DOCTYPE, необязательных инструкций по обработке и комментариев, за которыми следует ровно один корневой элемент |
| Экосистема диалектов | XML является базовым синтаксисом для XHTML, SVG, RSS, Atom, DOCX (Office Open XML), EPUB, KML и форматов конфигурации, используемых в Android, Maven, Spring и Java EE |
| Выпущен | 1998 (XML 1.0 W3C Recommendation, February 10, 1998) |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.w3.org |
Конвертации XML
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах XML.