Схематрон (Schematron)

Схематрон - это язык для проверки правильности утверждений о данных в формате XML.

Разработан Rick Jelliffe из Academia Sinica Computing Centre (http://xml.ascc.net/resource/schematron/schematron.html).

Валидация XML-файла по схематрон-схеме подобна трансформации этого XML-файла в соответствии с преобразованием на языке XSLT (eXtensible Stylesheet Language Transformations). На выходе получается текст, который по-сути является протоколом проверки.

На самом деле, любую схематрон-схему можно преобразовать в XSLT. Это свойство схематрона как раз и является самым главным его достоинством.
Пример схематрон-схемы приведен ниже:
<?xml version="1.0" encoding="US-ASCII"?>
 Example Schematron Schema
 
  
    A 'dog' element should contain two 'ear' elements.
    This dog has a bone.
  
  
Давайте разберем, что здесь что.

Тег sch:schema - схема, корневой тег схематрона.

Внутри тега схемы располагаются  название схемы - тег sch:title, и шаблоны - теги sch:pattern. Атрибут шаблона name задает имя шаблона (в нашем примере: “dog_pattern”).

Шаблон состоит из правил - тег sch:rule. Каждое правило применяется к узлу проверяемого по схематрон-схеме XML-файла, путь к которому (XPath) задается атрибутом context.

Правило состоит из утверждений (sch:assert) и сообщений (sch:report), которые имеют атрибут test - условие, формулируемое на языке XPath. Разница между ними в том, что если условие в сообщении истинно (в примере: test=”bone”), то в выходной файл пишется текст сообщения (This dog has a bone.), а текст утверждения (A ‘dog’ element should contain two ‘ear’ elements.) пишется в выходной файл только если условие НЕ выполнено (test=”count(ear) = 2”).

===

Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru