PureXML/Sources/Schema
Mihaela Mihaljevic c6dd0f7d2f feat(schema): locate extension/substitution-pass schema diagnostics
Convert the three extension/substitution-pass compile checkers to located
findings so each error attaches to its declaring node instead of the schema
root (#169): an xs:all group reached through an extension over a base that
already has content underlines the extension (extensionAllGroupFindings); an
anonymous complex-type restriction that is not a subset of its base
underlines the restriction (anonymousRestrictionFindings); and a
substitution-group member whose type is not validly derived from its head,
including the head's final-exclusion violations, underlines the member
element (substitutionTypeFindings).

Every predicate, iteration order, and reason string is unchanged; only the
location each finding carries differs, verified conformance-neutral by the
full XSTS suite (14383 groups, pinned counts unchanged). The
substitution checker's checkExclusions helper stays [String] and is wrapped
onto the member element at the call site. The three checkers had exactly one
caller each (their dispatch), so each is renamed in place and the .unlocated
wrap dropped. Adds a located-diagnostics test per checker.
2026-06-21 18:35:38 +02:00
..
BuiltinType.swift fix(schema): compare identity-constraint fields across the decimal value space; invalid-instances-accepted 95 to 94 (#147) 2026-06-18 11:01:05 +02:00
ComplexType.swift fix(schema): count content-model occurrences 2026-06-19 23:32:04 +02:00
ComplexValidator.swift fix(schema): compare simpleContent fixed value in value space 2026-06-20 18:08:32 +02:00
ComplexValidatorAttributes.swift fix(schema): exclude use="prohibited" attributes from effective uses at instance time; invalid-instances-accepted 43 to 39 (#147) 2026-06-18 15:28:35 +02:00
ComplexValidatorContentModel.swift fix(schema): count content-model occurrences 2026-06-19 23:32:04 +02:00
ComplexValidatorDerivation.swift fix(schema): reject xsi:type=anyType on an anySimpleType-declared element 2026-06-20 02:09:51 +02:00
ComplexValidatorHelpers.swift fix(schema): streaming validator applies default/fixed value constraints 2026-06-20 17:38:45 +02:00
ComplexValidatorIDs.swift
ComplexValidatorStreaming.swift fix(schema): compare simpleContent fixed value in value space 2026-06-20 18:08:32 +02:00
ComplexValidatorXSIType.swift
ContentMatcher.swift fix(schema): saturate effectively-unbounded content-model counters (#192, partial) 2026-06-21 13:16:24 +02:00
ContentModelDeterminism.swift
ContentNFABuilder.swift fix(schema): count content-model occurrences 2026-06-19 23:32:04 +02:00
DateTimeParser.swift fix(schema): reject year 0000 in dateTime, date, gYearMonth, gYear 2026-06-20 01:31:14 +02:00
DateTimeValue.swift
DecimalValue.swift
DerivationMethod.swift
DurationValue.swift
IdentityConstraint.swift
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
IdentityValidator.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
IdentityValidatorDefaults.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
IDTracker.swift
Lexical.swift
OccurrenceRange.swift fix(schema): count content-model occurrences 2026-06-19 23:32:04 +02:00
ParticleNormalization.swift
ParticleRestriction.swift fix(schema): eliminate the last false positive (particlesZ001); false-positives = 0 (#148) 2026-06-17 19:56:57 +02:00
ParticleRestrictionElement.swift fix(schema): restriction may not narrow an element to an extension-derived type 2026-06-20 18:34:50 +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
RelaxNGCompactHelpers.swift
RelaxNGCompactLexer.swift
RelaxNGCompactParser.swift
RelaxNGContentType.swift
RelaxNGDerivative.swift
RelaxNGDiagnostics.swift
RelaxNGFacets.swift
RelaxNGGrammarCheck.swift
RelaxNGGrammarCheckSections.swift
RelaxNGNameClasses.swift
RelaxNGNode.swift
RelaxNGParser.swift
RelaxNGParserIncludes.swift
RelaxNGPattern.swift
RelaxNGRestrictionChecker.swift
RelaxNGRestrictionOverlap.swift
RelaxNGRestrictionPaths.swift
RelaxNGRestrictions.swift
RelaxNGSchema.swift
SchemaAllGroupPlacement.swift feat(schema): locate derivation/cycle-pass schema diagnostics 2026-06-21 16:53:02 +02:00
SchemaAttributeApplicability.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaAttributeRestriction.swift feat(schema): locate attribute-pass schema diagnostics 2026-06-21 16:28:10 +02:00
SchemaAttributeUniqueness.swift feat(schema): locate attribute-pass schema diagnostics 2026-06-21 16:28:10 +02:00
SchemaCompileValidation.swift feat(schema): locate extension/substitution-pass schema diagnostics 2026-06-21 18:35:38 +02:00
SchemaCompositionValidations.swift fix(schema): enforce model-group redefine restriction (cos-group-restrict) 2026-06-18 18:24:58 +02:00
SchemaContentDerivation.swift feat(schema): locate content-derivation-pass schema diagnostics 2026-06-21 17:29:41 +02:00
SchemaContentOrder.swift fix(schema): require a content derivation in simpleContent/complexContent (#145) 2026-06-17 14:58:58 +02:00
SchemaDerivationControl.swift feat(schema): key the instance derivation/substitution backbone by namespaced identity; re-land blockDefault; invalid-instances-accepted 89 to 81 (#186, #147) 2026-06-18 12:41:18 +02:00
SchemaDocument.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
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
SchemaExtensionAllGroup.swift feat(schema): locate extension/substitution-pass schema diagnostics 2026-06-21 18:35:38 +02:00
SchemaFacetApplicability.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaIDAttribute.swift
SchemaIdentityXPath.swift fix(schema): an identity-constraint xpath may not use an undeclared prefix; invalid-schemas-accepted 77 to 75 (#145) 2026-06-18 01:01:12 +02:00
SchemaIDValueConstraint.swift feat(schema): locate ID-typed value-constraint errors 2026-06-21 14:37:29 +02:00
SchemaImportNamespace.swift feat(schema): locate reference-resolution schema diagnostics 2026-06-21 18:09:20 +02:00
SchemaNameUniqueness.swift fix(schema): a redefined schema's targetNamespace must match the redefiner (src-redefine); invalid-schemas-accepted 74 to 71 (#161) 2026-06-18 01:25:34 +02:00
SchemaNestedDefinition.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaNotationValidity.swift fix(schema): hold xsd:notation to its (annotation?) content model (#145) 2026-06-17 14:17:27 +02:00
SchemaRedefineSelfReference.swift refactor(schema): extract shared base-component resolution for redefines 2026-06-18 20:20:26 +02:00
SchemaReferenceForeignPools.swift
SchemaReferenceResolution.swift
SchemaReferences.swift feat(schema): locate reference-resolution schema diagnostics 2026-06-21 18:09:20 +02:00
SchemaSimpleTypeFinal.swift feat(schema): locate simple-type-pass schema diagnostics 2026-06-21 15:55:59 +02:00
SchemaSimpleTypeValidity.swift feat(schema): locate simple-type-pass schema diagnostics 2026-06-21 15:55:59 +02:00
SchemaStructure.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaStructureHelpers.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaSubstitutionType.swift feat(schema): locate extension/substitution-pass schema diagnostics 2026-06-21 18:35:38 +02:00
SchemaUndeclaredNamespace.swift feat(schema): locate reference-resolution schema diagnostics 2026-06-21 18:09:20 +02:00
SchemaWildcardNamespace.swift
SchemaXSIAttribute.swift feat(schema): locate attribute-pass schema diagnostics 2026-06-21 16:28:10 +02:00
SimpleType.swift
StreamingXSDValidator.swift fix(schema): streaming validator applies default/fixed value constraints 2026-06-20 17:38:45 +02:00
TypeDerivation.swift
XPathQueryCache.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
XSDAttributeParser.swift fix(schema): exclude use="prohibited" attributes from effective uses at instance time; invalid-instances-accepted 43 to 39 (#147) 2026-06-18 15:28:35 +02:00
XSDCompletions.swift fix(schema): enforce NameAndTypeOK nillable clause in particle restriction (#145) 2026-06-17 17:25:10 +02:00
XSDComplexContent.swift
XSDContext.swift fix(schema): count content-model occurrences 2026-06-19 23:32:04 +02:00
XSDDerivation.swift feat(schema): locate extension/substitution-pass schema diagnostics 2026-06-21 18:35:38 +02:00
XSDDerivationTables.swift fix(schema): key a local element's block by its effective instance namespace; invalid-instances-accepted 32 to 31 (#147) 2026-06-18 16:12:08 +02:00
XSDParser.swift fix(schema): make the container-location root fallback live 2026-06-19 23:32:04 +02:00
XSDParserHelpers.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
XSDParserParticles.swift fix(schema): count content-model occurrences 2026-06-19 23:32:04 +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
XSDSchemaValidations.swift
XSDSimpleContentParser.swift Reject invalid simpleContent inline restrictions 2026-06-18 22:01:01 +02:00
XSDSimpleParser.swift refactor(schema): surface facet/pattern validity as a Validation, not a parse-time report (#161) 2026-06-18 00:02:20 +02:00
XSDSimpleParser+Facets.swift
XSDSubstitutionMembers.swift fix(schema): stop blocked substitution chaining 2026-06-19 08:37:19 +02:00
XSDValidations.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
XSDWildcardParser.swift fix(schema): intersect a complex type's attribute wildcard sources; invalid-instances-accepted 94 to 89 (#147) 2026-06-18 11:21:32 +02:00