validate_instance
Validate an XML instance against its SDC4 XSD schema. Returns pass/fail with error count and classified errors.
schema_path必填instance_path必填check_compliance
io.github.SemanticDataCharter由 GitHub 帳號 SemanticDataCharter 發布v4.6.3更新於 Nov 1, 2026
SDC4 structural validator with ExceptionalValue recovery; thin wrapper over xmlschema.
本機 MCP 伺服器,依 SDC4 XSD 結構定義驗證 XML 實例,並將錯誤分為結構性與語意性兩類。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
參照 儲存庫 中的啟動說明。
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.A semantic (Tier 2) error does not have to reject a record. Recovery keeps the value and inserts an ISO 21090 ExceptionalValue beside it (Invalid, for a value that fails its type, pattern, range or enumeration), so the record says which value is unusable and why, and the rest of it stays usable.
remove_existing_ev=True removes them first.unrecoverable by recover(), and raised as
SDC4UnrecoverableError by validate_with_recovery(); it is never skipped.SDC4StructuralValidationError.XMLResource when the record carries prefixed QNames in content (xsi:type="sdc4:...").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.
A client configuration needs only "command": "uvx", "args": ["sdcvalidator"].
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.
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.
來源:README.md,提交 68923c1
Validate an XML instance against its SDC4 XSD schema. Returns pass/fail with error count and classified errors.
schema_path必填instance_path必填check_complianceValidate an XML instance and return a detailed report with two-tier error classification (structural vs semantic).
schema_path必填instance_path必填check_complianceCheck if an XSD schema follows SDC4 principles (no xsd:extension, restriction only). Does not validate instances.
schema_path必填已滿足適用檢查項的 90%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
pip install sdcvalidatorgit clone https://github.com/SemanticDataCharter/sdcvalidator.gitcd sdcvalidatorpip install -e .from sdcvalidator import SDC4Validator, ErrorTier
# Validate an XML instance (strict mode by default)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}")# Explicit lax mode for legacy schemasvalidator = SDC4Validator("legacy_schema.xsd", validation='lax')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 exceptionassert_sdc4_schema_compliance("schema.xsd")from sdcvalidator import ErrorClassifier, ErrorTier
classifier = ErrorClassifier()tier = classifier.classify(some_xmlschema_error)# ErrorTier.STRUCTURAL or ErrorTier.SEMANTICfrom sdcvalidator import SDC4Validator, SDC4UnrecoverableError
v = SDC4Validator("dm-xxxx.xsd", validation="lax")result = v.recover("record.xml") # RecoveryResult; the source is never mutatedfor r in result.recoveries: # Recovery: path, code ("INV"), name, reason, inserted print(r.code, r.reason, r.path)if not result.ok: # an error no ExceptionalValue covers print(result.unrecoverable)
tree = v.validate_with_recovery("record.xml", save=False) # raises SDC4UnrecoverableError insteadfrom sdcvalidator.converters import xml_to_json, json_to_xml
# XML -> JSON (schema-aware)data = xml_to_json("instance.xml", schema_path="schema.xsd")
# JSON -> XMLjson_to_xml(data, "schema.xsd", "output.xml")# Basic validationsdcvalidate schema.xsd instance.xml
# JSON outputsdcvalidate schema.xsd instance.xml --json
# Skip SDC4 compliance checksdcvalidate --no-compliance-check schema.xsd instance.xmlsdcvalidator-xml2json instance.xml --schema schema.xsdsdcvalidator-xml2json instance.xml -o output.jsonsdcvalidator-json2xml data.json schema.xsd -o output.xmlsdcvalidator # what an MCP registry client runs (uvx sdcvalidator)sdcvalidator mcp # the same, spelled like the other Semantic Data Charter serverssdcvalidator-mcp serve --mcp # still works for existing client configurations