Skip to main content

SDC4 structural validator — thin wrapper over xmlschema with error classification

Project description

sdcvalidator

SDC4 structural validator — a thin wrapper over xmlschema with two-tier error classification.

License Python

What it does

  • Validates XML instances against SDC4 XSD schemas
  • Classifies errors into structural (Tier 1: reject) vs semantic (Tier 2: report)
  • Checks SDC4 schema compliance (no xsd:extension — only xsd:restriction)
  • Converts between XML and JSON using schema-aware conversion

Install

pip install sdcvalidator

Or from source:

git clone https://github.com/SemanticDataCharter/sdcvalidator.git
cd sdcvalidator
pip install -e .

Python API

from sdcvalidator import SDC4Validator, ErrorTier

# Validate an XML instance
validator = SDC4Validator("my_schema.xsd")
result = validator.validate("my_instance.xml")

if result.is_valid:
    print("Valid!")
else:
    for err in result.structural_errors:
        print(f"STRUCTURAL: {err.reason}")
    for err in result.semantic_errors:
        print(f"SEMANTIC: {err.reason}")

Schema compliance checking

from sdcvalidator import validate_sdc4_schema_compliance, assert_sdc4_schema_compliance

# Check if a schema uses xsd:extension (not allowed in SDC4)
is_valid, errors = validate_sdc4_schema_compliance("schema.xsd")

# Or raise an exception
assert_sdc4_schema_compliance("schema.xsd")

Error classification

from sdcvalidator import ErrorClassifier, ErrorTier

classifier = ErrorClassifier()
tier = classifier.classify(some_xmlschema_error)
# ErrorTier.STRUCTURAL or ErrorTier.SEMANTIC

XML/JSON conversion

from sdcvalidator.converters import xml_to_json, json_to_xml

# XML -> JSON (schema-aware)
data = xml_to_json("instance.xml", schema_path="schema.xsd")

# JSON -> XML
json_to_xml(data, "schema.xsd", "output.xml")

CLI

sdcvalidate — Validate XML against schema

# Basic validation
sdcvalidate schema.xsd instance.xml

# JSON output
sdcvalidate schema.xsd instance.xml --json

# Skip SDC4 compliance check
sdcvalidate --no-compliance-check schema.xsd instance.xml

Exit codes: 0 valid, 1 semantic errors only, 2 structural errors.

sdcvalidator-xml2json — Convert XML to JSON

sdcvalidator-xml2json instance.xml --schema schema.xsd
sdcvalidator-xml2json instance.xml -o output.json

sdcvalidator-json2xml — Convert JSON to XML

sdcvalidator-json2xml data.json schema.xsd -o output.xml

Two-Tier Error Classification

Tier Type Examples Action
1 Structural Unknown elements, cardinality violations, wrong nesting Reject
2 Semantic Type errors, pattern violations, enumeration mismatches Report

SDC4 Schema Compliance

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.

License

Apache License 2.0 — see LICENSE.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sdcvalidator-4.1.0.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sdcvalidator-4.1.0-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file sdcvalidator-4.1.0.tar.gz.

File metadata

  • Download URL: sdcvalidator-4.1.0.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for sdcvalidator-4.1.0.tar.gz
Algorithm Hash digest
SHA256 aec6c27dd0e2b39a5a9c8e77f8d7f096a08029926ba1b19b88d078f8a7eb24fd
MD5 194dc9f4a9a4f979fcc42004b07e6fcb
BLAKE2b-256 9045d7a38e330ab2fb57b23bf09297201344e0faf0d31efcbc557274c75c17f0

See more details on using hashes here.

File details

Details for the file sdcvalidator-4.1.0-py3-none-any.whl.

File metadata

  • Download URL: sdcvalidator-4.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for sdcvalidator-4.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ceb214320eab191b522cd5cb6d9fb12f996b630904893410a183b7363b0cb668
MD5 7c483cbb874a1640fca6e6117cdc7524
BLAKE2b-256 44aa73af9a9457f6b5564b04b485af210efcbed3999ec6d2ba87ac790131901b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page