PureXML/Sources/Schema
Mihaela Mihaljevic 380160cc2b refactor(validation): decompose XSD instance validation into composable rules
The two monolithic XSD content/identity rules only satisfied the OpenAPIKit
validation idiom at the wrong granularity: no per-constraint removability,
no isolable failing/near-miss tests. Split them into 32 named rules, each
finding tagged at its origin and cached per XSDContext so the walk still
runs once per document (the #101 decision against duplicating XSD's
recursive type resolution still holds). Wired the streaming path's ID/IDREF
and identity checks through the same framework instead of calling the
validators imperatively, and added the unwrapAndLookup combinator the rule
already named as required.

Also includes the mandated repo-wide swiftformat/swiftlint pass.
2026-07-12 14:12:17 +02:00
..
BuiltinType.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexType.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexValidator.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexValidatorAttributes.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexValidatorContentModel.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexValidatorDerivation.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexValidatorHelpers.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexValidatorIDs.swift fix(schema): enforce document-scoped xs:ID uniqueness and xs:IDREF resolution 2026-06-13 19:17:34 +02:00
ComplexValidatorNilFixed.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexValidatorStreaming.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexValidatorWildcards.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ComplexValidatorXSIType.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ContentMatcher.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ContentModelDeterminism.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ContentModelDeterminismCompositional.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ContentModelDeterminismConflict.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ContentModelEffectiveModel.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ContentModelGroupDependency.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ContentNFABuilder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ContentRTN.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ContentRTNMatcher.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
DateTimeParser.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
DateTimeValue.swift feat(schema): XSD simple-type datatype library with facets 2026-06-08 06:29:37 +02:00
DecimalValue.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
DerivationMethod.swift feat(schema): XSD derivation control (abstract, block, final, redefine) 2026-06-08 14:14:23 +02:00
DurationValue.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
GroupParticleMemo.swift feat(schema): carry a stable group-definition identity on shared expansions (#363) 2026-06-28 01:53:58 +02:00
IdentityConstraint.swift fix(schema): resolve identity-constraint XPath prefixes against the schema (#147) 2026-06-17 00:03:13 +02:00
IdentityFieldSimplicity.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
IdentityFieldType.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
IdentityFieldValue.swift fix(schema): default/fixed value for identity-constraint fields; invalid-instances-accepted 50 to 45 (#147) 2026-06-18 14:47:47 +02:00
IdentityTupleSet.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
IdentityValidator.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
IdentityValidatorDefaults.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
IdentityValidatorHelpers.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
IDTracker.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
Lexical.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
OccurrenceRange.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ParticleNormalization.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ParticleRestriction.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ParticleRestrictionChoice.swift fix(schema): literal RecurseAsIfGroup for a non-repeating base choice 2026-07-05 08:58:35 +02:00
ParticleRestrictionElement.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ParticleRestrictionHelpers.swift fix(schema): eliminate the last false positive (particlesZ001); false-positives = 0 (#148) 2026-06-17 19:56:57 +02:00
Primitive.swift fix(schema): match a NaN value against a NaN enumeration (value-space identity) (#376) 2026-06-29 05:20:07 +02:00
RelaxNGCompactHelpers.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGCompactLexer.swift feat(relaxng): add compact syntax (RNC) and include/externalRef 2026-06-08 09:13:09 +02:00
RelaxNGCompactParser.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGContentType.swift feat(relaxng): schema-correctness validation, spec suite complete 2026-06-10 11:38:45 +02:00
RelaxNGDerivative.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGDiagnostics.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGFacets.swift fix(schema): advance XSTS valid-instances-rejected to 4 (#146) 2026-06-16 22:22:05 +02:00
RelaxNGGrammarCheck.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGGrammarCheckSections.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGNameClasses.swift feat(relaxng): ns inheritance, QNames, include-start, combine, data-except 2026-06-10 10:24:46 +02:00
RelaxNGNode.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGParser.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGParserIncludes.swift feat(relaxng): schema-correctness validation, spec suite complete 2026-06-10 11:38:45 +02:00
RelaxNGPattern.swift feat(relaxng): QName values with dual-context resolution, instance level clean 2026-06-10 10:57:14 +02:00
RelaxNGRestrictionChecker.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGRestrictionOverlap.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGRestrictionPaths.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGRestrictions.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
RelaxNGSchema.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaAllGroupPlacement.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaAttributeApplicability.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaAttributeRestriction.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaAttributeUniqueness.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaCompileValidation.swift refactor(schema): remove unused [String] consistency wrappers (#317) 2026-06-26 08:02:09 +02:00
SchemaCompositionValidations.swift feat(schema): locate composition/redefine-pass schema diagnostics 2026-06-21 19:41:31 +02:00
SchemaContentDerivation.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaContentOrder.swift fix(schema): require a content derivation in simpleContent/complexContent (#145) 2026-06-17 14:58:58 +02:00
SchemaDerivationControl.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaDocument.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaDocumentHints.swift fix(schema): default/fixed value for identity-constraint fields; invalid-instances-accepted 50 to 45 (#147) 2026-06-18 14:47:47 +02:00
SchemaElementDeclarationsConsistent.swift refactor(schema): split Element-Declarations-Consistent out of SchemaStructure 2026-06-22 15:30:58 +02:00
SchemaExtensionAllGroup.swift feat(schema): locate extension/substitution-pass schema diagnostics 2026-06-21 18:35:38 +02:00
SchemaFacetApplicability.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaIDAttribute.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaIdentityXPath.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaIDValueConstraint.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaImportNamespace.swift feat(schema): locate reference-resolution schema diagnostics 2026-06-21 18:09:20 +02:00
SchemaNameUniqueness.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaNestedDefinition.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaNotationValidity.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaRedefineAttributeGroupRestriction.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaRedefineSelfReference.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaReferenceForeignPools.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaReferenceResolution.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaReferences.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaSimpleTypeFinal.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaSimpleTypeValidity.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaSimpleTypeVariety.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaStructure.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaStructureHelpers.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaSubstitutionType.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaUndeclaredNamespace.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaWildcardExpressibility.swift fix(schema): attribute-wildcard union/intersection per Errata E1-10 (#251) 2026-06-23 04:56:17 +02:00
SchemaWildcardNamespace.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SchemaXSIAttribute.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SimpleContentMemo.swift perf(schema): memoize simpleContent base resolution so a chain is linear, not cubic (#374) 2026-06-29 03:26:07 +02:00
SimpleType.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
StepSiblingIndex.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
StreamingXSDValidator.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
TypeDerivation.swift feat(schema): XSD derivation control (abstract, block, final, redefine) 2026-06-08 14:14:23 +02:00
XPathQueryCache.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDAttributeParser.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDCompiled.swift fix(schema): reject an identity-constraint field that selects a non-simple node (#381) 2026-06-29 09:08:25 +02:00
XSDCompletions.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDComplexContent.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDContext.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDDerivation.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDDerivationTables.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDFinding.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDFindingsCache.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDParser.swift fix(schema): reject an identity-constraint field that selects a non-simple node (#381) 2026-06-29 09:08:25 +02:00
XSDParserHelpers.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDParserParticles.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDParserTypeReferences.swift fix(schema): an untyped substitutionGroup member inherits its head's type 2026-06-20 02:47:07 +02:00
XSDParserUnion.swift docs: align stale figures with code and the enforced XSTS gate 2026-06-19 23:32:04 +02:00
XSDRuleToken.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDSchemaValidations.swift feat(validation,schema): composable validation framework and cross-document composition 2026-06-16 09:57:43 +02:00
XSDSimpleContentParser.swift perf(schema): memoize simpleContent base resolution so a chain is linear, not cubic (#374) 2026-06-29 03:26:07 +02:00
XSDSimpleParser.swift fix(schema): reject an unknown \p{...} category or block name (#248) 2026-06-23 02:15:26 +02:00
XSDSimpleParser+Facets.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDSimpleTypeOrder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDSubstitutionMembers.swift fix(schema): stop blocked substitution chaining 2026-06-19 08:37:19 +02:00
XSDValidations.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XSDWildcardParser.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00