Skip to content

dreamw4lker/simple-xml-validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple XML validator

О проекте

Данная утилита позволяет проверить XML-файл на корректность по XSD-схемам и Schematron-файлам.

Зачем это нужно?

Исходно утилита разрабатывалась для проверки СЭМД (структурированных электронных медицинских документов) в виде XML-файлов.

Некоторые документы ввиду различных технических или организационных причин формируются некорректными. При этом валидация в РЭМД может выполняться несколько дней и иногда выдаёт только первую ошибку, а не все сразу.

Локально можно выполнять валидацию и сторонними аналогичными инструментами, такими как:

  • Oxygen XML Editor – проприетарная, с триалом в 30 дней
  • Liquid Studio – проприетарная, с триалом, только для Windows-систем

Оба инструмента содержат излишнюю функциональность и требуют некоторых знаний в корректной настройке валидаторов.

Цель создания этой утилиты - получение более узкоспециализированного инструмента для целей валидации XML-файлов с сохранением универсальности: валидировать можно любые XML документы.

Что такое XSD и Schematron?

XSD (XML Schema) – это язык описания структуры XML-документа. Валидацией по XSD-файлам можно выявить отсутствующие или некорректно заполненные блоки или атрибуты в XML-документах, но нельзя описать сложные правила, такие как наличие/отсутствие блока в зависимости от другого блока.

Schematron – это язык разметки с более сложными правилами, позволяющими не только выявить наличие/отсутствие блока, но и проверить зависимости между ними. Ошибки от Schematron-валидатора также более человекочитаемые.

XSD-файлы присутствуют для всех возможных видов СЭМД, а Schematron-файлы - только для самых последних редакций. По этой причине данная утилита позволяет переключаться между режимами валидации.

Какие ошибки НЕ удастся выявить этой утилитой?

Все ошибки, связанные не со структурой, а с содержимым документа.

Например, по Schematron-правилам можно выявить элементы с пустым содержимым, которые не должны быть пустыми, но нельзя выявить корректно заполненные элементы с устаревшими данными.

Сборка утилиты

Для сборки потребуется:

  • Java 11
  • Maven

Команда сборки (из корня проекта):

mvn clean install

В результате в папке target появится файл simple-xml-validator-X.X.X.jar

Запуск утилиты

Перед запуском в файле application.properties необходимо указать несколько параметров:

  • validator.mode – режим валидации (XSD - валидация только по XSD, SCHEMATRON - валидация только по Schematron, ALL - валидация по XSD и Schematron)
  • validator.input.xml - полный путь до валидируемого XML-файла
  • validator.input.xsd – полный путь до главного XSD-файла (как правило, он имеет имя CDA.xsd) (только для режимов XSD и ALL)
  • validator.input.schematron – полный путь до Schematron-файла (только для режимов SCHEMATRON и ALL)
  • validator.input.xml.clear-xml-namespace-on-schematron-validation – флаг, указывающий, следует ли очищать xmlns у валидируемого через Schematron XML-файла

Запуск утилиты выполняется командой:

java -jar -Dapplication.properties=/path/to/application.properties simple-xml-validator-X.X.X.jar

Важно! не используйте кириллицу в путях до application.properties, XML, XSD и Schematron-файлов.

Используемые сторонние библиотеки

  • XSD – валидация выполняется встроенными библиотеками javax.xml.*
  • Schematron – валидация выполняется сторонней библиотекой ph-schematron

Дополнительная информация (для разработчиков)

Расширить логирование валидатора можно параметром -Djaxp.debug=true, указав его в VM options.

About

Validate any XML over XSD schemas and Schematron rules

Resources

License

Stars

Watchers

Forks