The validator itself is just an engine which executes validation according to a certain configuration ( see configuration documentation).
The validator takes a scenario.xml and the configured directory with all artifacts necessary for validation (scenario repository). Then it performs the validation and generates a report in XML format. This report is then the input to an XSLT provided by the configuration.
- The purpose of the validator is to only report if an XML instance is valid or not
- A configuration can provide an XSLT which takes the validator report and generates an own report
- This report may choose to conclude acceptance of the XML instance or not
The validator reports valid/invalid, a configuration reports acceptance/rejection!
The general process is like this (the default is defined in DefaultCheck
):
sequenceDiagram
participant e as Validator
participant c as Configuration
e->>+c: create ScenarioRepository
c->>-e: is available
e->>e: parse XML
e->>e: select scenario
e->>e: validate XSD
e->>e: validate Schematron
e->>e: create Validator Report
e->>+c: execute configuration report generator
e->>e: Compute Recommendation
-
parse XML:
Is the XML instance valid in the basic sense. If not, validation is stopped and the validator report is returned with status invalid.
-
select scenario:
The configuration must have a defined scenario which matches the XML instance (it is an XPATH expression). If no scenario matches, validation is stopped and the validator report is returned with status invalid.
-
validate XML-Schema:
The XML instance must be valid according to the configured XSD. If not, validation is stopped and the validator report is returned with status invalid.
-
validate Schematron
-
create Validator Report:
All results are aggregated into the validation report:
- Depending on the configuration in the scenario, if there is a single error or warning the report will have status invalid, otherwise the status will be valid.
-
execute configuration report generator
The Validator will search for the XSLT as configured in scenario.xml and execute it with the Validator Report as input
-
compute Recommendation
In case a scenario contains an
acceptMatch
element with an XPATH expression, this expression will be executed.In case the XPATH returns
true
, the recommendation will be set toACCEPT
else toREJECT
. In case no such XPATH is defined it isUNDEFINED
.