The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Sdcvalidator listing page.
SDC4 structural validator — a thin wrapper over xmlschema with two-tier error classification.
xsd:extension — only xsd:restriction)Or from source:
The validation parameter controls how strictly the XSD schema itself is checked when loaded:
'strict' (default) — Raises XMLSchemaParseError if the schema contains invalid restriction derivations (e.g., element names that don't match the base type). This is the recommended mode.'lax' — Silently collects schema derivation errors without raising. Use only for pre-existing schemas known to have issues.'skip' — Skips schema-level validation entirely.sdcvalidate — Validate XML against schemaExit codes: 0 valid, 1 semantic errors only, 2 structural errors.
sdcvalidator-xml2json — Convert XML to JSONsdcvalidator-json2xml — Convert JSON to XMLsdcvalidator ships a stdio MCP (Model Context Protocol) server so any MCP-capable agent can validate SDC4 data without importing the Python library. It implements JSON-RPC 2.0 directly over stdio — no external MCP SDK dependency.
| Tool | Purpose |
|---|---|
validate_instance | Validate an XML instance against its SDC4 XSD schema. Returns pass/fail with error count and classified errors. |
validate_and_report | Validate an instance and return a detailed report with two-tier (structural vs semantic) error classification. |
check_schema_compliance | Check whether an XSD schema follows SDC4 principles (restriction only, no xsd:extension). Does not validate instances. |
validate_instance and validate_and_report take schema_path and instance_path, plus an optional check_compliance boolean (default true). check_schema_compliance takes schema_path only.
| Tier | Type | Examples | Action |
|---|---|---|---|
| 1 | Structural | Unknown elements, cardinality violations, wrong nesting | Reject |
| 2 | Semantic | Type errors, pattern violations, enumeration mismatches | Report |
SDC4 data models must use xsd:restriction only — never xsd:extension. This enforces separation of structure (reference model) and semantics (data models), guaranteeing global interoperability.
The validator checks this by default and rejects schemas that violate this principle.
Production-ready. Available on PyPI under Apache 2.0.
Apache License 2.0 — see LICENSE.