Schematron — это язык проверки на основе правил для утверждения о наличии или отсутствии шаблонов в деревьях XML . Это язык структурных схем, выраженный в XML с использованием небольшого количества элементов и языков XPath . Во многих реализациях XML Schematron преобразуется в код XSLT для развертывания везде, где может использоваться XSLT.
Schematron способен выражать ограничения способами, которые не могут другие языки схем XML, такие как XML Schema и DTD . Например, он может потребовать, чтобы содержимое элемента контролировалось одним из его родственных элементов. Или он может запросить или потребовать, чтобы корневой элемент, независимо от того, какой это элемент, имел определенные атрибуты. Schematron также может указывать требуемые отношения между несколькими файлами XML. Ограничения и правила содержимого могут быть связаны с сообщениями об ошибках проверки на «простом английском» (или любом другом языке), что позволяет переводить числовые коды ошибок Schematron в осмысленные пользовательские сообщения об ошибках. Пользователи Schematron сами определяют все сообщения об ошибках. [1]
Текущая рекомендация ISO — Информационные технологии, Языки определения схем документов (DSDL) , Часть 3: Проверка на основе правил, Schematron (ISO/IEC 19757-3:2020).
Ограничения задаются в Schematron с использованием языка на основе XPath, который можно развернуть как код XSLT, что делает его практичным для таких приложений, как:
Schematron был изобретен Риком Джеллиффом в вычислительном центре Academia Sinica , Тайвань. Он описал Schematron как « перьевую метелку для смахивания пыли , которая позволяет достичь тех частей, до которых не могут добраться другие языки схем».
Наиболее распространённые версии Schematron:
Schematron был стандартизирован ISO как Информационная технология, Языки определения схем документов (DSDL) , Часть 3: Проверка на основе правил, Schematron (ISO/IEC 19757-3:2020).
В настоящее время этот стандарт не включен в список общедоступных спецификаций ISO. Бумажные версии можно приобрести в ISO или национальных органах по стандартизации.
Схемы, использующие ISO/IEC FDIS 19757-3, должны использовать следующее пространство имен:
http://purl.oclc.org/dsdl/schematron
Правила Schematron можно создавать с помощью стандартного редактора XML или приложения XForms . Ниже приведен пример схемы:
<schema xmlns= "http://purl.oclc.org/dsdl/schematron" > <pattern> <title> Правила дат </title> <rule context= "Contract" > <assert test= "ContractDate > current-date()" > ContractDate должен быть в прошлом , поскольку будущие контракты не допускаются . </assert> </rule> </pattern> </schema>
Это правило проверяет, что XML-элемент ContractDate имеет дату, которая предшествует текущей дате. Если это правило не выполняется, проверка не будет выполнена, и пользователю будет возвращено сообщение об ошибке, которое является телом элемента assert.
Схемы Schematron подходят для использования в XML Pipelines , тем самым позволяя разработчикам рабочих процессов создавать и поддерживать правила с помощью инструментов манипулирования XML. Например, язык конвейеризации W3C XProc имеет встроенную поддержку обработки схем Schematron через шаг «validate-with-schematron». [4]
Поскольку схемы Schematron могут быть преобразованы в таблицы стилей XSLT , их можно использовать в XML Pipelines, которые поддерживают преобразование XSLT. Задачу Apache Ant можно использовать для преобразования правил Schematron в файлы XSLT.
Существует также собственная реализация Schematron, например, реализация Java от Innovimax/ INRIA , QuiXSchematron, которая также поддерживает потоковую передачу .