PureXML/Sources/Parsing
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
..
Big5Decoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
Big5Table1.swift feat(parsing): Big5 (Traditional Chinese / HKSCS) 2026-06-09 08:30:57 +02:00
Big5Table2.swift feat(parsing): Big5 (Traditional Chinese / HKSCS) 2026-06-09 08:30:57 +02:00
Big5Table3.swift feat(parsing): Big5 (Traditional Chinese / HKSCS) 2026-06-09 08:30:57 +02:00
Big5Table4.swift feat(parsing): Big5 (Traditional Chinese / HKSCS) 2026-06-09 08:30:57 +02:00
Big5Table5.swift feat(parsing): Big5 (Traditional Chinese / HKSCS) 2026-06-09 08:30:57 +02:00
Big5Table6.swift feat(parsing): Big5 (Traditional Chinese / HKSCS) 2026-06-09 08:30:57 +02:00
Big5Table.swift feat(parsing): Big5 (Traditional Chinese / HKSCS) 2026-06-09 08:30:57 +02:00
ByteDecoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ByteEncoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ByteStorage.swift perf(parsing): byte-backed Reader and bulk content runs 2026-06-10 18:48:57 +02:00
CharacterClassification.swift perf(parsing): byte-level scanning fast paths halve parse time vs libxml2 (#275) 2026-06-24 18:46:58 +02:00
CJKByteEncoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
Diagnostic.swift feat(parsing): Namespaces 1.0 constraint enforcement 2026-06-10 08:06:45 +02:00
DoctypeScanner.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
DoctypeScannerConditional.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
DoctypeScannerEntities.swift refactor(validation): located structured validity findings 2026-06-10 10:45:17 +02:00
DoctypeScannerStrict.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
DocumentType.swift refactor(validation): located structured validity findings 2026-06-10 10:45:17 +02:00
DTDAttListGrammar.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
DTDContentModelGrammar.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
EntityDecoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
EntityReplacementGrammar.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
EntityResolver.swift feat(dtd): external and parameter entities, secure by default 2026-06-08 03:08:20 +02:00
EUCJPDecoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
EUCKRDecoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
EUCKRTable1.swift feat(parsing): EUC-KR (CP949) decoding with vendored index (#99) 2026-06-09 08:02:14 +02:00
EUCKRTable2.swift feat(parsing): EUC-KR (CP949) decoding with vendored index (#99) 2026-06-09 08:02:14 +02:00
EUCKRTable3.swift feat(parsing): EUC-KR (CP949) decoding with vendored index (#99) 2026-06-09 08:02:14 +02:00
EUCKRTable4.swift feat(parsing): EUC-KR (CP949) decoding with vendored index (#99) 2026-06-09 08:02:14 +02:00
EUCKRTable5.swift feat(parsing): EUC-KR (CP949) decoding with vendored index (#99) 2026-06-09 08:02:14 +02:00
EUCKRTable6.swift feat(parsing): EUC-KR (CP949) decoding with vendored index (#99) 2026-06-09 08:02:14 +02:00
EUCTWDecoder.swift refactor(parsing): drop slice copies; document the expansion bounds 2026-06-10 04:01:16 +02:00
EUCTWPlane11.swift feat(parsing): EUC-TW (CNS 11643) decoding, closing #108 2026-06-09 17:44:22 +02:00
EUCTWPlane12.swift feat(parsing): EUC-TW (CNS 11643) decoding, closing #108 2026-06-09 17:44:22 +02:00
EUCTWPlane13.swift feat(parsing): EUC-TW (CNS 11643) decoding, closing #108 2026-06-09 17:44:22 +02:00
EUCTWPlane21.swift feat(parsing): EUC-TW (CNS 11643) decoding, closing #108 2026-06-09 17:44:22 +02:00
EUCTWPlane22.swift feat(parsing): EUC-TW (CNS 11643) decoding, closing #108 2026-06-09 17:44:22 +02:00
EUCTWPlane23.swift feat(parsing): EUC-TW (CNS 11643) decoding, closing #108 2026-06-09 17:44:22 +02:00
EUCTWTable.swift feat(parsing): EUC-TW (CNS 11643) decoding, closing #108 2026-06-09 17:44:22 +02:00
Event.swift feat(parser): add a streaming, iterative XML parser 2026-06-08 00:10:50 +02:00
EventReader.swift perf(parsing): reuse one scratch set for the attribute duplicate-name check 2026-07-12 12:56:12 +02:00
EventReaderAttributes.swift perf(parsing): reuse one scratch set for the attribute duplicate-name check 2026-07-12 12:56:12 +02:00
EventReaderContent.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
EventReaderEndTag.swift feat(xpath,parsing): public streaming surface, linear document-order at scale 2026-06-11 06:06:31 +02:00
EventReaderRecovery.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
EventReaderValidity.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ExternalID.swift feat(parsing): per-entity base-URI tracking for nested external entities 2026-06-10 08:24:17 +02:00
GB18030Decoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
GB18030Ranges.swift feat(parsing): full GB18030 four-byte sequences 2026-06-09 08:24:00 +02:00
GBKDecoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
GBKTable1.swift feat(parsing): GBK/GB2312 decoding completes the CJK encodings (#99) 2026-06-09 08:08:52 +02:00
GBKTable2.swift feat(parsing): GBK/GB2312 decoding completes the CJK encodings (#99) 2026-06-09 08:08:52 +02:00
GBKTable3.swift feat(parsing): GBK/GB2312 decoding completes the CJK encodings (#99) 2026-06-09 08:08:52 +02:00
GBKTable4.swift feat(parsing): GBK/GB2312 decoding completes the CJK encodings (#99) 2026-06-09 08:08:52 +02:00
GBKTable5.swift feat(parsing): GBK/GB2312 decoding completes the CJK encodings (#99) 2026-06-09 08:08:52 +02:00
GBKTable6.swift feat(parsing): GBK/GB2312 decoding completes the CJK encodings (#99) 2026-06-09 08:08:52 +02:00
InputEncoding.swift docs: align stale figures with code and the enforced XSTS gate 2026-06-19 23:32:04 +02:00
ISO2022JPDecoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
JIS0208Table1.swift feat(parsing): Shift-JIS decoding with vendored JIS X 0208 index (#99) 2026-06-09 07:54:05 +02:00
JIS0208Table2.swift feat(parsing): Shift-JIS decoding with vendored JIS X 0208 index (#99) 2026-06-09 07:54:05 +02:00
JIS0208Table3.swift feat(parsing): Shift-JIS decoding with vendored JIS X 0208 index (#99) 2026-06-09 07:54:05 +02:00
JIS0212Table1.swift feat(parsing): EUC-JP decoding with vendored JIS X 0212 index (#99) 2026-06-09 07:57:52 +02:00
JIS0212Table2.swift feat(parsing): EUC-JP decoding with vendored JIS X 0212 index (#99) 2026-06-09 07:57:52 +02:00
Limits.swift feat(parsing): strict internal-subset profile, xmltest 185 of 186 2026-06-10 08:29:54 +02:00
Mark.swift chore: scaffold PureXML pure-Swift XML package 2026-06-07 23:20:20 +02:00
NamespaceContext.swift perf(parsing): byte-path quote handling, lazy expanded-name check, byte-scan entity guard 2026-07-12 12:27:00 +02:00
ParsedDocument.swift feat(parsing): surface the XML declaration (version, encoding, standalone) 2026-06-08 14:53:04 +02:00
ParseError.swift feat(parsing): Namespaces 1.0 constraint enforcement 2026-06-10 08:06:45 +02:00
Parser.swift feat(parsing): IBM section clean, entity-declared WFC/VC split, declaration recursion 2026-06-10 07:26:50 +02:00
ParserTreeBuild.swift perf(parse): build the TreeNode tree directly from the event stream (#295) 2026-06-25 14:15:57 +02:00
PseudoAttributeScanner.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
PushAsync.swift feat(parsing): resumable push / feed streaming API 2026-06-08 07:21:22 +02:00
PushParser.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
PushScanner.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
Reader.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ReaderByteRuns.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
ReadResult.swift feat(parsing): recovering reader that never crashes on invalid input 2026-06-08 12:15:18 +02:00
SAXHandler.swift feat(parsing): add SAX2 push-callback API 2026-06-08 02:26:04 +02:00
ShiftJISDecoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
SingleByteEncodings.swift feat(parsing): Windows-1255/1256/1258, KOI8-U complete the single-byte set (#97) 2026-06-09 07:29:25 +02:00
SingleByteTables.swift feat(parsing): Windows-1255/1256/1258, KOI8-U complete the single-byte set (#97) 2026-06-09 07:29:25 +02:00
SourceRange.swift feat(editor): source spans on the tree, mapping findings to positions 2026-06-08 13:14:29 +02:00
StreamingDecoder.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
StreamingDecoderEUCTW.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
StreamingDecoderISO2022JP.swift feat(parsing): streaming honors the declared encoding; streaming ISO-2022-JP 2026-06-09 17:33:52 +02:00
TextReader.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
UnparsedEntity.swift feat(dtd): conditional sections, notations, NDATA, external parameter entities 2026-06-08 14:39:42 +02:00
ValidityFinding.swift refactor(validation): located structured validity findings 2026-06-10 10:45:17 +02:00
XMLCharacter.swift refactor(validation): decompose XSD instance validation into composable rules 2026-07-12 14:12:17 +02:00
XMLDeclaration.swift feat(parsing): strict DTD subset grammar, oasis section of xmlconf fully clean 2026-06-10 06:29:13 +02:00