схематрон
Schematron — это основанный на правилах язык проверки , позволяющий делать утверждения о наличии или отсутствии шаблонов в XML деревьях . Это язык структурных схем, выраженный в XML с использованием небольшого количества элементов и XPath языков . Во многих реализациях XML Schematron преобразуется в код XSLT для развертывания везде, где можно использовать XSLT.
Schematron способен выражать ограничения способами, недоступными для других языков схем XML, таких как XML Schema и DTD . Например, может потребоваться, чтобы содержимое элемента контролировалось одним из его родственных элементов. Или он может запросить или потребовать, чтобы корневой элемент, независимо от того, какой это элемент, имел определенные атрибуты. Schematron также может указывать необходимые связи между несколькими файлами XML. Ограничения и правила контента могут быть связаны с сообщениями об ошибках проверки на «простом английском» (или любом языке), что позволяет переводить числовые коды ошибок Schematron в значимые сообщения об ошибках пользователя. Пользователи Schematron сами определяют все сообщения об ошибках. [1]
Текущая ISO рекомендация — «Информационные технологии, языки определения схемы документа (DSDL) , часть 3: проверка на основе правил, схематрон» (ISO/IEC 19757-3:2020).
Использование
[ редактировать ]Ограничения задаются в Schematron с использованием языка на основе XPath, который можно развернуть в виде кода XSLT, что делает его практичным для таких приложений, как следующие:
- Дополнение к структурной валидации
- Проверяя ограничения совместного появления, нерегулярные ограничения и ограничения между документами, Schematron может расширить проверки, которые могут быть выражены на таких языках, как DTD , RELAX NG или XML Schema . [2]
- Упрощенный механизм бизнес-правил
- Schematron не является комплексным механизмом правил Rete , но его можно использовать для выражения правил для сложных структур с помощью XML-документа.
- Правила подсветки синтаксиса XML-редактора
- Некоторые редакторы XML используют правила Schematron для условного выделения XML-файлов на наличие ошибок. Не все редакторы XML поддерживают Schematron.
Версии
[ редактировать ]Схематрон был изобретен Риком Джеллиффом в вычислительном центре Academia Sinica , Тайвань. Он описал Schematron как « метушку, позволяющую добраться до тех частей, которые другие языки схем не могут достичь».
Наиболее распространенными версиями Schematron являются:
- Схематрон 1.0 (1999)
- Schematron 1.3 (2000 г.): в этой версии использовалось пространство имен http://xml.ascc.net/schematron/ . Он поддерживался реализацией XSLT с подключаемой архитектурой.
- Schematron 1.5 (2001 г.): эта версия получила широкое распространение и ее до сих пор можно найти.
- Schematron 1.6 (2002 г.): эта версия была основой ISO Schematron и устарела.
- ISO Schematron (2006): эта версия упорядочивает некоторые функции и предоставляет формат вывода XML, язык отчетов о проверке Schematron (SVRL). [3] Он использует новое пространство имен http://purl.oclc.org/dsdl/schematron .
- Схематрон ИСО (2010)
- ISO Schematron (2016): в этой версии добавлена поддержка XSLT2.
- ISO Schematron (2020): в этой версии добавлена поддержка XSLT3.
Схематрон как стандарт ISO
[ редактировать ]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>Date rules</title>
<rule context="Contract">
<assert test="ContractDate > current-date()">ContractDate should be
in the past because future contracts are not allowed.</assert>
</rule>
</pattern>
</schema>
Это правило проверяет, что XML-элемент ContractDate имеет дату, которая предшествует текущей дате. Если это правило не сработает, проверка завершится неудачно, и пользователю будет возвращено сообщение об ошибке, которое является телом элемента утверждения.
Выполнение
[ редактировать ]Схемы Schematron подходят для использования в XML-конвейерах , что позволяет разработчикам рабочих процессов создавать и поддерживать правила с помощью инструментов манипулирования XML. W3C XProc имеет встроенную поддержку обработки схемы Schematron посредством этапа «проверка с помощью Schematron». Например, язык конвейерной обработки [4]
Поскольку схемы Schematron можно преобразовать в таблицы стилей XSLT , их можно использовать в конвейерах XML, поддерживающих преобразование XSLT. Задача Apache Ant может использоваться для преобразования правил Schematron в файлы XSLT.
Существует также собственная реализация Schematron, такая как реализация Java от Innovimax/ INRIA , QuiXSchematron , которая также поддерживает потоковую передачу .
См. также
[ редактировать ]- Сравнение языков XML-схем — сравнение с другими языками XML-схем.
- Язык моделирования сервисов . Язык моделирования сервисов использует Schematron.
- Языки определения схемы документа
Ссылки
[ редактировать ]- ^ Сигел, Эрик (2022). Schematron: язык проверки XML . Денвер, Колорадо: XML Press. ISBN 978-1-937434-81-6 .
- ^ Феннелл, Филип (июнь 2014 г.). «Схематрон — полезнее, чем вы думаете» . XML Лондон 2014 : 103–112. doi : 10.14337/XMLLondon14.Fennell01 . ISBN 978-0-9926471-1-7 .
- ^ Часть 3. Проверка на основе правил — Schematron (ISO/IEC 19757-3:2006) (zip) , Информационные технологии — Языки определения схемы документа (DSDL), ISO/IEC, 01 июня 2006 г. , получено 15 июня 2014 г.
- ^ «7.2.5 p:проверить-с-схемой» . XPoc: конвейерный язык XML . Консорциум Всемирной паутины . 11 мая 2010 г. Проверено 12 ноября 2012 г.