VideosEditing Schematron Schemas


This video demonstration walks you through the steps for creating a Schematron Document from scratch and presents helpful features, such as the validation support and the Content Completion Assistant.


00:00:08This demonstration covers the editing of a Schematron schema, using oXygen XML Editor's
00:00:13Content Completion Assistant and predefined code templates.
00:00:17Due to its complex processing engine, oXygen is the only XML editor that offers an error
00:00:23management mechanism capable of pinpointing errors in XPath expressions.
00:00:29This feature coupled with the ability of finding errors in the included schema modules,
00:00:34make oXygen the best choice for Schematron development.
00:00:38In our demonstration we need a Schematron schema which checks a number of rules for
00:00:43a DocBook document.
00:00:45These rules can be classified as:
00:00:471. Critical requirement rules
00:00:49- The number of words from an "abstract" element should be between 1 and 100.
00:00:56- The number of items in a "list" should be between 2 and 10.
00:01:012. Best practices rules
00:01:03- The number of words from an "abstract" element should be between 3 and 80.
00:01:08- The number of items from a "list" should be between 3 and 8.
00:01:13Now, we'll create a new Schematron schema.
00:01:17We use the New action available on the toolbar...
00:01:20and look for the Schematron document template...
00:01:27then save it.
00:01:31Next, we'll add a Schematron pattern to enforce the following rule:
00:01:37"The number of words from an abstract element should be between 1 and 100."
00:01:43We invoke the CC assistant and insert the "pattern" element... Now we type the id value.
00:01:56Inside the pattern element we add a "rule" element.
00:02:01The "context" attribute allows us to specify when the rule becomes active...
00:02:06in our case it's the "abstract" element.
00:02:10And if the condition fails this is considered an error.
00:02:15Next we'll define a variable that counts the number of words from an abstract element.
00:02:20Its name is wordNumber...
00:02:22oXygen assists us to define the XPath expression by offering the XPath functions as proposals.
00:02:29Also, to improve the readability of the document the XPath expressions are highlighted with
00:02:36different colors.
00:02:39Finally, the assertion is made using the "assert" element.
00:02:46When writing the XPath expression in "test" attribute, note that the CC assistant proposes
00:02:51also the already declared variable.
00:02:54We check that the number of words is greater than or equals to 1
00:02:59and less than or equals to 100.
00:03:04If the condition fails, oXygen will display this message:
00:03:09The second critical rule to be added is:
00:03:11The number of items from a list should be between 2 and 10.
00:03:16In this case we'll add a new pattern using the code templates support.
00:03:20To see all Schematron code templates press the CTRL and Space keys.
00:03:26In our case, we choose the template that adds a pattern with an assert.
00:03:31We name the pattern 'critical_check_list_element'.
00:03:35The rule is active for "orderlist" or "itemizedlist" elements and if the condition fails, this
00:03:43is considered an error.
00:03:46Now we define a variable which counts the number of listitem elements.
00:04:01The assert specifies that the number of listitems in the itemizedList element should be between
00:04:062 and 10.
00:04:10In a similar way we add the patterns for the best practices rules.
00:04:20An important Schematron feature is the progressive validation,
00:04:24or the validation of constraints in stages, rather than validating everything at once.
00:04:32This feature is accomplished through the phase element, which allows us to group more patterns.
00:04:38In our case we need to define two phases,
00:04:41one for each group of rules: critical and best practices.
00:04:45First, we create a phase for the critical rules
00:04:48with the help of code templates.
00:04:51We'll name it "phase_critical"...
00:04:55then add the two critical rule patterns.
00:04:58Note that the defined pattern names are proposed when editing the value of the pattern attribute.
00:05:08Similarly, we define the second phase for the best practices rules, named phase_best_practices.
00:05:23We add the two best practices rule patterns.
00:05:29Now we'll see how oXygen helps you to manage the validation errors.
00:05:38To see this we can modify the document by referring an XPath function that is not defined.
00:05:45We intentionally modify the name of the "count" XPath function.
00:05:49As you can see, the error is highlighted as soon as we modify the document because it
00:05:54is being continuously validated.
00:05:57We revert to the initial function name and now oXygen reports that the schema is valid.
00:06:02At the end of this demonstration we'll validate the XML document against the Schematron schema
00:06:07we just created.
00:06:09We choose "Validate with..." from the application toolbar...
00:06:13and choose docbook_rules.sch.
00:06:17oXygen already analyzed the schema and allows us to choose from the phases declared in the
00:06:23Schematron document.
00:06:25We choose to apply only the best practices phase.
00:06:29oXygen displays a message in the results view, which warns us that the XML sample file contains
00:06:34too many list items
00:06:36and one of the best practices rules is broken.
00:06:39To correct the problem, we delete one of the list items.... and validate again.
00:06:53This time, the document conforms with the defined rules.
00:06:58And this concludes our demonstration.
00:07:00For more details about the Schematron support in oXygen XML, make sure you check the related
00:07:05Schematron video demonstrations.
00:07:07Thanks for watching.