Что такое формат файла XSD?
Файл .xsd содержит формальное описание элементов документа XML - определения данных, сохраненные в текстовом формате XML. Он определяет набор правил, которым должны соответствовать файлы XML, чтобы считаться валидным документом XML; валидирующий парсер отклоняет любой документ, нарушающий эти правила.
Файлы .xsd не имеют уникального идентификатора Internet Media Type - они используют тот же тип, что и обычный XML: application/xml или text/xml. Файлы обычно начинаются с объявления XML (<?xml version="1.0"?>) и корневого элемента <xs:schema>, привязанного к пространству имен http://www.w3.org/2001/XMLSchema. Данные XSD могут быть организованы в пространства имен. Основными компонентами схемы являются:
- Объявления элементов,
- Объявления атрибутов,
- Типы данных - простые или сложные, основанные на ограничениях, списках выбора или примитивных типах,
- Повторно используемые группы элементов или атрибутов (аналогично макросам).
Спецификация XSD была разработана в 2001 году при участии W3C (World Wide Web Consortium). XSD предлагает больше возможностей, чем аналогичный формат определения документов .dtd, включая типизированные данные и поддержку пространств имен. Файлы описания веб-сервисов, такие как .wsdl, обычно включают определения типов XSD для структур своих сообщений. Документ спецификации XSD разделен на три части:
- Часть 0. Primer (Введение) - содержит общее описание стандарта и основ, к нему часто обращаются менее технические пользователи, работающие с
.xsd, - Часть 1. Structures (Структуры),
- Часть 2. Datatypes (Типы данных).
Части 1 и 2 занимают много страниц и написаны техническим языком. Вторая версия спецификации была выпущена в 2004 году, а XSD 1.1 была одобрена W3C в 2012 году, добавив утверждения (assertions) и условное назначение типов. Файлы XSD используются для хранения метаданных документов XML, но они также могут использоваться разработчиками для генерации кода или описаний документов в человекочитаемой форме.
Безопасность и защита
РИСК: LOWXSD - это обычный текст, он не может исполнять код, поэтому открывать его для чтения безопасно. Единственные реальные риски косвенны: <xs:import>/<xs:include> могут подгружать внешние схемы (атаки типа XXE нацелены на XML-ПАРСЕР, а не на саму схему), поэтому проверяйте недоверенные XML с отключенным расширением сущностей и внешними запросами. Встроенная в файл <xs:documentation> может раскрывать детали внутренних полей или систем, что является вопросом раскрытия информации, а не риском заражения вредоносным ПО.
Детали формата
в двух словахПрограммы, открывающие файлы XSD
Технические подробности
глубокая спецификация| Тип формата файла | Текстовый документ XML (кодировка UTF-8) |
| MIME-тип | application/xml или text/xml (общий для всех файлов XML; специфического MIME-типа для XSD не существует) |
| Корневой элемент | <xs:schema> или <xsd:schema>, привязанный к пространству имен W3C http://www.w3.org/2001/XMLSchema |
| Сигнатура файла | Отсутствует (обычный текст); файлы традиционно начинаются с объявления XML <?xml version="1.0"?> |
| Префикс пространства имен | xs: или xsd: (оба допустимы; xs: является более распространенным современным выбором) |
| Встроенная система типов | 44+ примитивных и производных типов: string, integer, decimal, dateTime, boolean, base64Binary, anyURI и другие |
| Производные типы | Сложные типы поддерживают наследование путем ограничения или расширения; простые типы - путем ограничения, списка или объединения |
| Ограничения валидации | Модель содержимого (sequence, choice, all), кратность через minOccurs/maxOccurs и аспекты, такие как pattern, length и enumeration |
| Поддержка пространств имен | Атрибут targetNamespace объявляет пространство имен схемы; директивы xs:import, xs:include и xs:redefine объединяют схемы |
| Механизм аннотаций | <xs:annotation>, содержащий <xs:documentation> для человекочитаемого текста и <xs:appinfo> для машиночитаемых метаданных |
| Дополнения XSD 1.1 | Утверждения (xs:assert), условное назначение типов (xs:alternative) и ослабленные ограничения на совместное появление элементов |
| Сравнение с DTD | Заменяет DTD для типизированной валидации с поддержкой пространств имен; в DTD нет типов данных и поддержки пространств имен |
| Сравнение с RELAX NG | Более широкая поддержка в инструментарии, чем у .rng; RELAX NG проще, но в нем отсутствует наследование типов XSD |
| Интеграция с инструментами | Поддерживается Visual Studio, VS Code и Altova XMLSpy для автодополнения, валидации в реальном времени и генерации кода на основе схемы |
| Области применения | Валидация конфигурационных файлов, веб-сервисы SOAP/WSDL, контракты обмена данными, форматы офисных документов OOXML |
| Выпущен | 2001 (W3C XML Schema 1.0 Recommendation); 1.1 in 2012 |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.w3.org |
Конвертации XSD
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах XSD.
Часто задаваемые вопросы
Для чего используется файл XSD?
Как открыть файл XSD?
В чем разница между XML и XSD?
Как проверить файл XML на соответствие XSD?
xmllint --schema file.xsd data.xml в командной строке, команду «Validate» в XML-редакторе или онлайн-валидатор XSD. Он точно укажет, где XML нарушает правила схемы.