Schematron Unit Test (XSpec)Edit online
XSpec is a behavior driven development (BDD) framework for XSLT, XQuery, and Schematron. XSpec consists of a syntax for describing the behavior of your XSLT, XQuery, or Schematron code, and some code that enables you to test your code against those descriptions.
Creating a Schematron Unit Test
To create a Schematron Unit Test, go to . This is simple document template to help you get started.
Running a Schematron Unit Test
To run a Schematron Unit Test, open the XSpec file in an editor and click
Apply Transformation Scenario(s) on the
main toolbar. This will run the built-in Run XSpec Test
transformation scenario that is defined in the XSpec framework.
Testing a Stylesheet
An XSpec file contains one or more test scenarios.
Example
<sch:pattern>
<sch:rule context="section">
<sch:assert test="title" id="a002">
section should have a title
</sch:assert>
</sch:rule>
</sch:pattern><x:description xmlns:x="http://www.jenitennison.com/xslt/xspec" schematron="demo-01.sch"> <x:scenario label="section should have a title"> <x:context> <article> <section> <title>Introduction</title> <p>This is an example.</p> </section> <section> <p>This is an example.</p> </section> </article> </x:context> <x:expect-not-assert id="a002" location="/article[1]/section[1]"/> <x:expect-assert id="a002" location="/article[1]/section[2]"/> </x:scenario> </x:description>
The sch:assert with the id="a002" is not expected to be
triggered on the first section since it includes a title. This requirement is expressed with
the x:expect-not-assert element.
Since the second section does not have a title, you would expect the Schematron rule to be
triggered and this requirement is expressed with the x:expect-assert
element.
For more details about how to write Schematron tests and various samples, see https://github.com/xspec/xspec/wiki/Writing-Scenarios-for-Schematron#writing-tests.
Adding a Catalog to an XSpec Transformation
- If you are using a project in Oxygen XML Editor, create a catalog.xml file in the project directory. This catalog will then be loaded automatically.
- Edit the
Run XSpec Test transformation scenario, go to the Parameters tab, and set the value of the
catalogparameter to the location of your catalog file.