Перейти к содержимому
Aback Tools Logo

Как проверять XML по XSD-схеме: ошибки, инструменты и CI/CD

Как проверять XML-документы по XSD-схемам: корректность структуры vs валидность, анатомия XSD, браузерная локальная и CLI-проверка с xmllint, разбор частых ошибок XSD и автоматизированная проверка схем в GitHub Actions.

DH
Tutorials & How-Tos12 мин чтения2,700 слов

XML-документ, который разбирается без ошибок, корректен по структуре — но корректная структура не означает правильность содержимого. XSD-валидация уходит на уровень глубже, сверяя каждый элемент с контрактом: обязательные поля присутствуют, типы данных совпадают, значения попадают в разрешённые диапазоны, а элементы идут в правильном порядке. Это руководство объясняет, что именно проверяет XSD-валидация, как запустить её онлайн и в коде, что означают самые частые ошибки и как встроить XSD-проверку в CI-конвейер, чтобы сломанные документы не доходили до продакшена.

2Уровня проверкикорректность структуры + валидность по схеме
100%Локальные проверки в браузереXML не покидает ваше устройство
<1сСкорость проверкимгновенная обратная связь по ошибкам

Что такое XSD-валидация?

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

XSD вытеснил более старый формат DTD (Document Type Definition) как основной язык XML-схем, потому что сам написан на XML, поддерживает богатый набор встроенных типов данных (`xs:integer`, `xs:date`, `xs:boolean` и т. д.) и умеет выражать сложные ограничения: шаблоны строк, числовые диапазоны и условные требования к элементам. DTD ещё встречаются в унаследованных системах, но XSD — стандарт для любого обмена данными на базе XML, построенного за последние пятнадцать лет.

Где применяется XSD-валидация

XSD-валидация возникает везде, где структурированные XML-данные пересекают границу системы. Частые примеры: запросы и ответы SOAP-веб-сервисов (описываются WSDL, куда встраиваются XSD-схемы), форматы электронной инвойсинга и закупок вроде UBL 2.1 и EDIFACT, обмен медицинскими данными по профилям HL7 CDA и FHIR XML, государственные XML-подачи (налоговые декларации, таможенные декларации) и конфигурационные файлы корпоративного ПО вроде `pom.xml` в Maven или XML контекста приложения в Spring.

  • SOAP-/WSDL-сервисы: каждый элемент запроса и ответа определён во встроенном XSD.
  • Электронный инвойсинг (UBL, CII): форматы закупок и счетов несут публичные XSD-схемы, по которым проверяются торговые партнёры.
  • Медицина (HL7, FHIR XML): обмен клиническими документами требует строгого соответствия XSD до принятия.
  • Государственные подачи: налоговые и таможенные органы публикуют XSD-схемы, которым обязаны удовлетворять подаваемые документы.
  • Инструменты сборки: pom.xml Maven, build.xml Ant и многие другие конфигурационные форматы используют XSD для автодополнения и валидации в IDE.

Note

XSD-валидация отличается от корректности XML-namespace-ов. Документ может ссылаться на правильный URI namespace-а и всё равно провалить XSD-валидацию, если его содержимое нарушает ограничения схемы. Всегда проверяйте по схеме, а не только по объявлению namespace-а.

Корректность структуры vs валидность

Каждый XML-документ должен сначала быть структурно корректным (well-formed), прежде чем его можно валидировать. Корректность структуры проверяет сам XML-парсер, схема не нужна. Валидность — дополнительный уровень, проверяемый по конкретной схеме. Понимание этого различия экономит много времени на отладке: XSD-валидатор, получивший структурно некорректный документ, часто выдаёт запутанные ошибки схемы вместо настоящей проблемы разбора.

Текстовый объект является well-formed XML-документом, если он соответствует продукционному правилу document и удовлетворяет всем ограничениям корректности структуры, заданным в спецификации.

- Спецификация XML W3C

Что проверяет корректность структуры

  • Парность тегов: у каждого открывающего тега есть соответствующий закрывающий (`&lt;item&gt;` → `&lt;/item&gt;`).
  • Правильная вложенность: теги должны закрываться в обратном порядке — `&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;` корректно; `&lt;a&gt;&lt;b&gt;&lt;/a&gt;&lt;/b&gt;` — нет.
  • Единственный корневой элемент: в документе ровно один элемент верхнего уровня.
  • Атрибуты в кавычках: все значения атрибутов заключены в одинарные или двойные кавычки.
  • Экранированные спецсимволы: `&lt;`, `&gt;`, `&`, `"` и `'` внутри текстового содержимого должны использовать entity-ссылки или секции CDATA.
  • Корректные имена элементов и атрибутов: имена начинаются с буквы или подчёркивания, а не с цифры или дефиса.

Что добавляет XSD-валидность поверх

Когда корректность структуры пройдена, XSD-валидация накладывает контракт схемы. Это включает проверку, что каждый элемент, объявленный обязательным через `minOccurs="1"`, действительно присутствует, что текстовое содержимое типизированных элементов соответствует объявленному `xs:type` (никаких строк в целочисленных полях), что числовые значения попадают в границы `xs:minInclusive` и `xs:maxInclusive`, что строковое содержимое удовлетворяет regex-ограничениям `xs:pattern`, и что дочерние элементы идут в sequence-, choice- или all-группе, определённой в схеме.

ПроверкаКорректность структурыXSD-валидность
Парность и вложенность тегов✓ Да✓ Предпосылка
Единственный корневой элемент✓ Да✓ Предпосылка
Обязательные элементы присутствуют✗ Нет✓ Да — minOccurs
Правильность типов данных✗ Нет✓ Да — xs:integer, xs:date и т. д.
Ограничения числовых диапазонов✗ Нет✓ Да — minInclusive/maxInclusive
Сопоставление шаблонов строк✗ Нет✓ Да — xs:pattern
Порядок элементов✗ Нет✓ Да — xs:sequence / xs:choice
Допустимые значения атрибутов✗ Нет✓ Да — xs:enumeration

Проверка корректности XML-структуры

Проверьте ваш XML-документ на сломанные теги, неверную вложенность, отсутствие корневого элемента и ошибки entity — локально в браузере с диагностикой по строкам.

Open tool

Устройство XSD-схемы

Прежде чем проверять XML по XSD, нужно понять, что содержит файл XSD. Файл схемы сам является корректным XML-документом с корневым элементом `xs:schema` в namespace `http://www.w3.org/2001/XMLSchema`. Всё внутри схемы описывает, как должны выглядеть целевые XML-документы.

invoice.xsd
xml
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- Root element declaration --&gt;
  <xs:element name="Invoice">
    <xs:complexType>
      <xs:sequence>
        <!-- Required string - must be present exactly once --&gt;
        <xs:element name="InvoiceNumber" type="xs:string" minOccurs="1" maxOccurs="1"/>
        <!-- Required date --&gt;
        <xs:element name="IssueDate"     type="xs:date"   minOccurs="1" maxOccurs="1"/>
        <!-- Required positive integer --&gt;
        <xs:element name="TotalAmount"   type="xs:decimal" minOccurs="1" maxOccurs="1"/>
        <!-- Optional - 0 to many line items --&gt;
        <xs:element name="LineItem"      type="LineItemType" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <!-- Required attribute --&gt;
      <xs:attribute name="currency" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  <!-- Reusable complex type definition --&gt;
  <xs:complexType name="LineItemType">
    <xs:sequence>
      <xs:element name="Description" type="xs:string"/>
      <xs:element name="Quantity"    type="xs:positiveInteger"/>
      <xs:element name="UnitPrice"   type="xs:decimal"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

Ключевые понятия XSD

  • xs:element: объявляет элемент по имени и типу. `minOccurs` и `maxOccurs` управляют кратностью.
  • xs:complexType: определяет элемент, содержащий дочерние элементы или атрибуты (не только текст).
  • xs:simpleType: определяет тип, производный от встроенного — используется для добавления ограничений вроде шаблонов или перечислений.
  • xs:sequence: дочерние элементы должны появляться ровно в указанном порядке.
  • xs:choice: должен появиться ровно один из перечисленных дочерних элементов.
  • xs:all: все перечисленные дочерние элементы должны появиться, в любом порядке, каждый ровно один раз.
  • xs:attribute: объявляет атрибут у сложного элемента. `use="required"` делает его обязательным.
  • xs:restriction: добавляет ограничения к базовому типу — `xs:pattern`, `xs:minInclusive`, `xs:enumeration` и т. д.

Tip

Черновик XSD можно сгенерировать из существующего XML-документа с помощью инструментов, выводящих схему из образцов данных. Всегда просматривайте и ужесточайте сгенерированный результат — выведенные схемы склонны делать каждый элемент опциональным и оставлять типы как `xs:string`, пока вы вручную не добавите правильные объявления типов и ограничения кратности.

Как проверить XML по XSD

Есть три практичных способа проверить XML-документ по XSD-схеме: браузерный инструмент для быстрых проверок, инструмент командной строки для локальной разработки и скриптов, и программный подход для интеграции в код приложения или CI-конвейеры. Все три способа сообщают об одних и тех же категориях ошибок — разница лишь в том, где и как вы запускаете проверку.

1

Сначала проверьте корректность структуры

Перед запуском XSD-валидации убедитесь, что XML-документ структурно корректен. Используйте Проверку корректности XML-структуры, чтобы поймать структурные ошибки — структурно некорректный документ породит вводящие в заблуждение ошибки XSD и потратит время отладки. Сначала исправьте все проблемы уровня парсера, затем переходите к валидации схемы.

2

Проверьте онлайн с XML-валидатором Aback Tools

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

3

Проверьте в командной строке с xmllint

Для локальной разработки и скриптов `xmllint` из пакета libxml2 — стандартный выбор CLI. Запустите `xmllint --schema schema.xsd document.xml --noout` — флаг `--noout` подавляет вывод документа, чтобы печатались только ошибки. Чистый выход без вывода означает, что документ валиден. В macOS ставится через `brew install libxml2`; в Ubuntu/Debian — `apt-get install libxml2-utils`.

4

Проверьте программно в Java, Python или .NET

Для валидации на уровне приложения используйте встроенную XML-библиотеку вашего языка. Пакет `javax.xml.validation` в Java (Xerces), `lxml.etree.XMLSchema` в Python и `XmlSchemaSet` с `XmlReader` в .NET — все поддерживают XSD-валидацию парой строк кода. Встройте вызов проверки на границе вашего API или в точке приёма файлов, чтобы отклонять невалидные документы до того, как они дойдут до бизнес-логики.

terminal
bash
# Validate document.xml against schema.xsd using xmllint
xmllint --schema schema.xsd document.xml --noout

# Output on success:
document.xml validates

# Output on failure:
document.xml:12: element TotalAmount: Schemas validity error:
Element 'TotalAmount': 'abc' is not a valid value of the
atomic type 'xs:decimal'.

XML-валидатор

Проверяйте XML-документы на корректность структуры и соответствие схеме — локально в браузере без загрузки, с отчётом об ошибках по строкам.

Open tool

Частые ошибки XSD-валидации

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

Ошибки несоответствия типов

Ошибки типов возникают, когда содержимое элемента или атрибута не соответствует объявленному `xs:type`. Самые частые: строка вроде `"N/A"` в поле, объявленном как `xs:integer`; дата в неверном формате (например, `15/06/2026` вместо `2026-06-15`) в поле `xs:date`; десятичное число в поле, объявленном как `xs:positiveInteger`. Исправляйте, корректируя значение в исходном документе или ослабляя объявление типа в схеме, если текущий тип слишком строг.

Отсутствуют обязательные элементы

Когда действует `minOccurs="1"` (значение по умолчанию для `xs:element`), а элемент отсутствует в документе-экземпляре, валидатор сообщает: `Element 'X': This element is not expected. Expected is one of ( Y )` или `Element 'X' is missing`. Обычно это значит, что производитель XML пропустил обязательное поле. Проверьте `xs:sequence` схемы, чтобы подтвердить, какие элементы обязательны и на какой позиции.

Неожиданные или необъявленные элементы

Если ваша схема не использует `xs:any` и не задаёт `processContents="lax"`, любой элемент, не объявленный в схеме, даст: `Element 'X': This element is not expected`. Это самая частая ошибка, когда производитель XML добавляет новое поле, не обновив схему, или когда документ содержит необъявленный префикс namespace-а. Проверьте имя элемента, контекст родительского элемента и объявления namespace-ов в начале документа.

Нарушения шаблона и перечисления

XSD поддерживает `xs:pattern` (regex) и `xs:enumeration` (список допустимых значений) как фасеты простых типов. Нарушение выглядит так: `Element 'Status': [facet 'enumeration'] The value 'ACTIVE' is not an element of the set active', 'inactive', 'pending`. Проверьте, использует ли схема чувствительные к регистру значения перечислений и совпадает ли документ-экземпляр с ожидаемым регистром точно.

Тип ошибкиТипичный фрагмент сообщенияКак исправить
Несоответствие типа'abc' is not a valid xs:integerИсправьте значение или ослабьте тип
Отсутствующий элемент'InvoiceNumber' is missingДобавьте обязательный элемент в документ
Неожиданный элемент'Notes': This element is not expectedУдалите элемент или добавьте его в XSD
Сбой перечисленияValue 'ACTIVE' not in setСогласуйте регистр значений enum в схеме
Нарушение шаблонаValue fails xs:pattern restrictionПриведите значение в соответствие с regex
Порядок sequenceExpected is 'IssueDate' not 'Total'Переставьте элементы согласно xs:sequence
КратностьElement 'Item' can occur max 1 timesУберите дубликат или поднимите maxOccurs

Warning

Ошибки порядка элементов особенно легко пропустить. Объявление `xs:sequence` требует, чтобы элементы шли в перечисленном порядке — даже если все элементы присутствуют и имеют валидные значения, нарушение порядка приводит к провалу валидации схемы. Всегда проверяйте определение sequence в XSD, когда видите ошибки вида «This element is not expected» у элементов, которые заведомо существуют.

XSD-валидация в коде и CI/CD

Ручная проверка годится для разовых случаев, но XML-процессы в продакшене требуют автоматизированной валидации в каждой точке интеграции. Добавление XSD-валидации в код приложения и CI-конвейер гарантирует, что невалидные документы отклоняются до того, как вызовут повреждение данных, сбои обработки или нарушения соответствия требованиям ниже по потоку.

Валидация в Python с lxml

validate_xml.py
python
from lxml import etree

def validate_against_xsd(xml_path: str, xsd_path: str) -&gt; list[str]:
    """Returns a list of validation error messages, empty if valid."""
    with open(xsd_path, 'rb') as f:
        schema_doc = etree.parse(f)
    schema = etree.XMLSchema(schema_doc)

    with open(xml_path, 'rb') as f:
        doc = etree.parse(f)

    schema.validate(doc)
    return [str(e) for e in schema.error_log]

errors = validate_against_xsd('invoice.xml', 'invoice.xsd')
if errors:
    for err in errors:
        print(err)
else:
    print('Document is valid.')

Добавление XSD-валидации в GitHub Actions

Для CI/CD-процессов, которые обрабатывают или генерируют XML, шаг валидации не даёт сломанным документам попадать в мерж. Команда `xmllint` доступна на Ubuntu-раннерах GitHub Actions через `sudo apt-get install -y libxml2-utils`. Добавьте шаг, который выполняет `xmllint --schema schema.xsd document.xml --noout` на каждом pull request, затрагивающем XML-файлы. Ненулевой код выхода проваливает проверку и блокирует мерж.

.github/workflows/xml-validate.yml
yaml
name: Validate XML
on:
  pull_request:
    paths:
      - '**/*.xml'

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install xmllint
        run: sudo apt-get install -y libxml2-utils
      - name: Validate XML against XSD
        run: |
          xmllint --schema schemas/invoice.xsd \
                  data/invoices/*.xml \
                  --noout

Используйте XPath для инспекции конкретных значений перед проверкой

Перед полным XSD-проходом можно воспользоваться XPath-поисковиком и тестером, чтобы точно указать значение конкретного элемента или атрибута в большом XML-документе. XPath-запросы вроде `//Invoice/TotalAmount/text()` достают поле без ручного разбора всего файла. Это особенно полезно при диагностике несоответствия типов в документе с сотнями элементов — сначала найдите проблемное значение, потом применяйте исправление.


Сравнение подходов к валидации

ПодходСкоростьПриватностьПоддержка схемЛучше всего для
XML-валидатор Aback ToolsМгновенно✓ Локально в браузереКорректность + XSDБыстрые разовые проверки
xmllint CLIБыстро✓ Локальная машинаXSD, DTD, RelaxNGDev-скрипты и CI/CD
lxml / Xerces / .NETБыстро✓ Внутри процессаXSD (полная спецификация)Код приложения
Онлайн-серверные инструментыСредне✗ Данные загружаютсяПеременнаяИзбегать для чувствительных схем

Лучшие практики XSD

Хорошо спроектированная XSD-схема делает документы проще в проверке, расширении и сопровождении между версиями схемы. Эти практики применимы как при создании схемы с нуля, так и при сопровождении схемы, полученной от внешнего партнёра.

Используйте именованные типы вместо анонимных встроенных

Определяйте сложные типы через `xs:complexType name="..."`, а не вкладывайте их анонимно внутрь объявлений элементов. Именованные типы можно переиспользовать в нескольких объявлениях элементов, что сокращает дублирование и упрощает изменения схемы — обновите определение типа один раз, и все использующие его элементы унаследуют изменение.

Для строгих контрактов предпочитайте xs:sequence, а не xs:all

`xs:all` разрешает элементам появляться в любом порядке, что кажется терпимым, но вносит неоднозначность для производителей и потребителей. `xs:sequence` более явный и соответствует естественному порядку чтения большинства XML-форматов. Используйте `xs:all` только тогда, когда порядок элементов действительно не важен и вы пишете схему для системы под вашим контролем; для любой схемы, пересекающей организационные границы, предпочитайте `xs:sequence`.

Версионируйте схемы через namespace

Используйте URI целевого namespace с индикатором версии, например `targetNamespace="urn:example:invoice:v2"`. Это делает ломающие изменения схемы явными — потребители на v1 увидят несовпадение namespace, а не молча провалидировать не ту версию схемы. Держите старую схему доступной для обратно совместимых развёртываний в течение окна миграции.

  • Объявляйте targetNamespace: предотвращает коллизии имён элементов при объединении схем через xs:import.
  • Используйте xs:documentation: добавляйте человекочитаемые описания внутри блоков xs:annotation, чтобы потребители схемы понимали каждое поле.
  • Задавайте явные minOccurs/maxOccurs: не полагайтесь на значения по умолчанию — указывайте кратность явно, чтобы передать намерение.
  • Используйте xs:restriction для ограниченных строк: поле почтового индекса должно применять xs:pattern, а не xs:string — валидация ловит ошибки формата на границе.
  • Разбивайте большие схемы: используйте xs:include, чтобы разрезать схему на 500 строк на файлы по доменам (addresses.xsd, line-items.xsd) для удобства сопровождения.

Tip

После правки XSD всегда перепроверяйте существующие тестовые документы по обновлённой схеме. Изменение схемы, ужесточающее ограничение, может молча сделать невалидными документы, прежде бывшие валидными. Используйте [XML-валидатор](/tools/data/validators/xml-validator), чтобы быстро прогнать регрессионную проверку канонических тестовых фикстур перед публикацией обновлённой схемы.

Note

Если вы работаете с XML-данными, которые должны потребляться REST API или JavaScript-приложениями, [Конвертер XML в JSON](/tools/data/converters/xml-json-converter) преобразует проверенные XML-документы в формат JSON, сохраняя иерархию элементов и значения атрибутов.

Key takeaways

  • XSD-валидация сверяет XML-документ с контрактом схемы — типы элементов, обязательные поля, диапазоны значений и порядок — сверх базовой корректности структуры.
  • Всегда подтверждайте корректность структуры через Проверку корректности XML-структуры перед запуском XSD-валидации, чтобы избежать вводящих в заблуждение сообщений об ошибках.
  • Самые частые ошибки XSD — несоответствия типов, отсутствующие обязательные элементы, неожиданные элементы и нарушения порядка в xs:sequence.
  • Используйте `xmllint --schema schema.xsd document.xml --noout` в командной строке для быстрой локальной валидации и интеграции в CI/CD.
  • Добавьте шаг XSD-валидации в ваш GitHub Actions workflow, чтобы невалидные XML-документы не попадали в мерж в основную ветку.
  • Проектируйте XSD-схемы с именованными типами, явной кратностью, целевыми namespace и фасетами xs:restriction — так схемы получаются и строгими, и сопровождаемыми.
  • Используйте XPath-поисковик и тестер, чтобы находить конкретные значения в больших XML-документах до и после валидации.

Частые вопросы

XSD validation is the process of checking an XML document against an XML Schema Definition (XSD) file to confirm it meets all defined structural and data constraints. It goes beyond well-formedness checks - which only verify that the XML is syntactically correct - by enforcing element order, data types, value ranges, string patterns, and which elements are required or optional. A document that is well-formed but fails XSD validation is called invalid.

A well-formed XML document follows the basic XML syntax rules: every opening tag has a matching closing tag, tags are properly nested, attribute values are quoted, and there is exactly one root element. A valid XML document is well-formed AND conforms to a specific schema (DTD, XSD, or Relax NG) that defines the allowed elements, attributes, types, and constraints. Well-formedness is checked by any XML parser; validity requires the schema file to be present during the check.

The quickest approach is to use the Aback Tools XML Validator, which runs entirely in your browser. Paste your XML document into the first panel and your XSD schema into the second, then click Validate. The tool reports each constraint violation with the element path and line number. No file is uploaded to a server - all processing happens locally, which makes it safe for schemas that contain proprietary data structures or sensitive field names.

Run the command: xmllint --schema yourschema.xsd yourdocument.xml --noout. The --noout flag suppresses the document echo, leaving only validation errors in the output. A clean exit with no output means the document is valid. xmllint is part of the libxml2 package, available on Linux via apt-get install libxml2-utils and on macOS via Homebrew with brew install libxml2. For Windows, it is included with many XML toolkits.

The most frequent XSD errors are: missing required elements (an element declared with minOccurs='1' is absent), type mismatches (a string in a field declared as xs:integer), pattern violations (a value that does not match an xs:pattern restriction), unexpected element order (elements declared in a specific sequence appearing out of order), and attribute violations (a required attribute is missing or an undeclared attribute is present). Most validators report these with the element path and constraint name.

Yes. Large XML schemas are often split across multiple XSD files using xs:import and xs:include directives. The root XSD imports the sub-schemas, and a validating parser resolves them either from the file system or from namespace URIs. When validating locally with xmllint or a Java-based validator (Xerces, Saxon), you pass the root XSD and the parser follows the import chain automatically, provided all referenced schema files are accessible.

xs:include pulls in a schema file that belongs to the same target namespace as the current schema. xs:import pulls in a schema file that belongs to a different namespace. Use xs:include to split a large schema into manageable files that all share one namespace. Use xs:import when you need to reference elements or types from an external namespace, such as the SOAP envelope namespace or a shared enterprise data model namespace.

For new projects using REST APIs and JSON payloads, JSON Schema is the practical choice - it has better tooling integration with OpenAPI, a lighter syntax, and broader library support in modern languages. XSD remains the right choice when working with SOAP web services, EDI formats like UBL and EDIFACT, government and healthcare data exchange (HL7 CDA, FHIR XML), or any legacy system that is already XML-based. If the ecosystem you are integrating with uses XML, XSD is the validation standard.

ShareXLinkedIn