Schematron.NET is a C# high-performance implementation of the Schematron ISO/IEC standard for XML validation. It supports standalone Schematron schemas, schemas embedded inside W3C XML Schema (WXS), and SOAP web-service validation via a SoapExtension.
Schematron.slnx # SDK-style XML solution (slnx format)
src/
Directory.Build.props # Shared MSBuild properties (authors, copyright, LangVersion, GitInfo)
Schematron/ # Core library (net48)
Schematron.Tests/ # xUnit test project (net48)
Schematron.WebServices/ # SOAP SoapExtension integration (net48, requires System.Web.Services)
VERSION # Base version file read by GitInfo (e.g. 0.6.0)
| File | Purpose |
|---|---|
Validator.cs |
Main entry point — loads schemas, validates XML/Schematron, collects errors |
Schema.cs / SchemaLoader.cs |
Represent and load a Schematron schema document |
SyncEvaluationContext.cs |
Synchronous evaluation engine; walks Phases → Patterns → Rules → Asserts/Reports |
EvaluationContextBase.cs |
Abstract base for evaluation strategies |
Formatters/ |
Pluggable output formatters: BooleanFormatter, LogFormatter, SimpleFormatter, XmlFormatter |
Phase.cs, Pattern.cs, Rule.cs, Assert.cs, Report.cs |
Domain model for Schematron elements |
IMatchedNodes.cs + implementations |
Strategy for tracking already-matched nodes per pattern |
ValidationExtension (a SoapExtension) and ValidationAttribute allow Schematron validation to be applied declaratively to SOAP web methods.
xUnit tests covering Validator behaviour with embedded XSD+Schematron schemas and standalone Schematron schemas.
dotnet build Schematron.slnx
dotnet test Schematron.slnx
- C# language version:
latest— use modern idioms (expression-bodied members,var,string.IsNullOrEmpty,throw;, pattern matching). - No custom build scripts: Use standard
dotnetCLI; nobuild.cmd/build.proj.