Введение

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 подходят для использования в XML-конвейерах, что позволяет разработчикам рабочих процессов создавать и поддерживать правила с помощью инструментов манипулирования XML. Например, язык конвейерной обработки XProc от W3C имеет встроенную поддержку обработки схем Schematron через шаг "validate with schematron" (проверка с помощью Schematron). Поскольку схемы Schematron могут быть преобразованы в XSLT-преобразования, их также можно использовать в XML-конвейерах, поддерживающих преобразования XSLT. Для преобразования правил Schematron в файлы XSLT можно использовать задачу Apache Ant. Существуют также собственные реализации Schematron, такие как Java-реализация от Innovimax/INRIA, QuiXSchematron, поддерживающие потоковую обработку.