PureXML/Tests
Mihaela Mihaljevic 1ae6680d94 feat(xpath): add an XPath 1.0 location-path subset
Add PureXML.XPath: a compiled location-path query engine reimplemented from the
XPath 1.0 specification; no upstream code copied.

- Compiler parses a path into steps; Evaluator walks the tree returning a
  Selection node-set (node or attribute) in document order.
- Forward axes only (child, descendant //, self ., attribute @), since the value
  model has no parent pointers. Node tests: name, *, text(), node(), comment().
  Predicates: [n], [@a], [@a='v'], [child], [child='v'].
- Public surface: XPath.Query (init compiles, evaluate/elements/strings), the
  Selection enum (element / stringValue), QueryError, and the one-shot
  PureXML.xpath(_:over:). Upward/sibling axes and the full expression language
  are explicitly out of scope.
- 12 XPath tests; 61 total.
2026-06-08 01:32:23 +02:00
..
Fixtures chore: scaffold PureXML pure-Swift XML package 2026-06-07 23:20:20 +02:00
DTDTests.swift feat(parser): optional DTD with internal entities and billion-laughs defense 2026-06-08 01:17:09 +02:00
EncodingTests.swift feat(parser): streaming byte decode (incremental UTF-8/UTF-16) 2026-06-08 01:07:24 +02:00
ModelTests.swift chore: scaffold PureXML pure-Swift XML package 2026-06-07 23:20:20 +02:00
NamespaceTests.swift feat(parser): resolve XML namespaces at the start-element boundary 2026-06-08 01:03:29 +02:00
ParsingTests.swift feat(parser): add bounded-by-default limits (depth, name, content) 2026-06-08 00:40:34 +02:00
SerializerTests.swift refactor(emitter): make the serializer iterative and fix mixed content 2026-06-08 00:31:05 +02:00
ValidationTests.swift chore: scaffold PureXML pure-Swift XML package 2026-06-07 23:20:20 +02:00
XPathTests.swift feat(xpath): add an XPath 1.0 location-path subset 2026-06-08 01:32:23 +02:00