Введение
Schematron — это язык валидации XML на основе правил, предназначенный для проверки наличия или отсутствия определенных шаблонов в XML-деревьях. Это язык структурных схем, выраженный на XML с использованием небольшого набора элементов и языков XPath. Во многих реализациях Schematron преобразуется в код XSLT для использования в любой среде, поддерживающей XSLT. Schematron позволяет задавать ограничения, которые невозможно выразить другими языками XML-схем, такими как XML Schema и DTD. Например, он может требовать, чтобы содержимое элемента определялось одним из его соседних элементов. Или он может требовать, чтобы корневой элемент, независимо от его имени, имел определенные атрибуты. Schematron также может определять необходимые связи между несколькими XML-файлами. Ограничения и правила содержимого могут быть связаны с сообщениями об ошибках валидации, сформулированными на естественном языке (или любом другом языке), что позволяет преобразовывать числовые коды ошибок Schematron в понятные пользователю сообщения. Пользователи Schematron самостоятельно определяют все сообщения об ошибках. Текущая рекомендация ISO – информационные технологии, языки определения схем документов (DSDL), часть 3: валидация на основе правил, Schematron (ISO/IEC 19757-3:2020).
Schematron is a rule based validation language for making assertions about the presence or absence of patterns in XML trees. It is a structural schema language expressed in XML using a small number of elements and XPath languages. In many implementations, the Schematron XML is processed into XSLT code for deployment anywhere that XSLT can be used. Schematron is capable of expressing constraints in ways that other XML schema languages like XML Schema and DTD cannot. For example, it can require that the content of an element be controlled by one of its siblings. Or it can request or require that the root element, regardless of what element that is, must have specific attributes. Schematron can also specify required relationships between multiple XML files. Constraints and content rules may be associated with "plain English" (or any language) validation error messages, allowing translation of numeric Schematron error codes into meaningful user error messages. Users of Schematron define all the error messages themselves. The current ISO recommendation is Information technology, Document Schema Definition Languages (DSDL), Part 3: Rule based validation, Schematron (ISO/IEC 19757 3:2020).
Реализация
Схемы Schematron подходят для использования в XML-конвейерах, что позволяет разработчикам рабочих процессов создавать и поддерживать правила с помощью инструментов манипулирования XML. Например, язык конвейерной обработки XProc от W3C имеет встроенную поддержку обработки схем Schematron через шаг "validate with schematron" (проверка с помощью Schematron). Поскольку схемы Schematron могут быть преобразованы в XSLT-преобразования, их также можно использовать в XML-конвейерах, поддерживающих преобразования XSLT. Для преобразования правил Schematron в файлы XSLT можно использовать задачу Apache Ant. Существуют также собственные реализации Schematron, такие как Java-реализация от Innovimax/INRIA, QuiXSchematron, поддерживающие потоковую обработку.