PureXML/Sources/Validation
Mihaela Mihaljevic 7f1aada240 feat(dtd): conditional sections, notations, NDATA, external parameter entities
Deepen DTD processing in the doctype scanner:

- Conditional sections are processed, not skipped: INCLUDE sections have
  their declarations scanned, IGNORE sections are discarded, the keyword
  may be a parameter-entity reference, and nested sections are handled.
- <!NOTATION> declarations are parsed and stored on DocumentType.
- Unparsed entities (<!ENTITY ... NDATA n>) are parsed and stored with
  their notation, distinct from general entities.
- External parameter entities are loaded through the injected resolver so
  their declarations expand; the default refusing resolver loads nothing,
  keeping XXE closed.
- NOTATION attributes are a distinct type, validated against the declared
  notations (value must be listed and the notation declared).

Tracking unparsed entities also lets ENTITY/ENTITIES attribute values be
validated against the declared NDATA entities, closing the gap left when
#73 could only check name syntax.

Closes #72
2026-06-08 14:39:42 +02:00
..
AttributeDeclaration.swift
AttributeDefault.swift
AttributeListParser.swift feat(dtd): conditional sections, notations, NDATA, external parameter entities 2026-06-08 14:39:42 +02:00
AttributeType.swift feat(dtd): conditional sections, notations, NDATA, external parameter entities 2026-06-08 14:39:42 +02:00
ContentModel.swift
ContentModelMatcher.swift
ContentModelParser.swift
DTDDefaults.swift feat(dtd): attribute defaulting, tokenized types, value normalization 2026-06-08 14:31:42 +02:00
DTDSchema.swift feat(dtd): conditional sections, notations, NDATA, external parameter entities 2026-06-08 14:39:42 +02:00
DTDValidationHelpers.swift feat(dtd): conditional sections, notations, NDATA, external parameter entities 2026-06-08 14:39:42 +02:00
DTDValidations.swift feat(dtd): conditional sections, notations, NDATA, external parameter entities 2026-06-08 14:39:42 +02:00
Occurrence.swift
Particle.swift
Schematron.swift refactor(validation): migrate Schematron, retire Issue 2026-06-08 12:49:19 +02:00
SchematronModel.swift
SchematronParser.swift
Severity.swift
StructuralValidations.swift feat(validation): composable validation framework + structural rule 2026-06-08 12:00:34 +02:00
Validation.swift feat(validation): composable validation framework + structural rule 2026-06-08 12:00:34 +02:00
ValidationCombinators.swift feat(validation): composable validation framework + structural rule 2026-06-08 12:00:34 +02:00
ValidationCore.swift refactor(validation): migrate Schematron, retire Issue 2026-06-08 12:49:19 +02:00
Validator.swift feat(validation): composable validation framework + structural rule 2026-06-08 12:00:34 +02:00