chadpath
========
This crate (`chadpath`) is a fork of `xrust` (https://gitlab.gnome.org/World/Rust/markup-rs/xrust),
copyright the original xrust authors (Steve Ball, Daniel Murphy), licensed under
the Apache License, Version 2.0. The original license is retained in the LICENSE
file and applies to this derived work.
Modifications in this fork (relative to xrust 2.1.0):
- XPath positional-predicate semantics fixed to be per-context-node, so numeric
predicates (`[N]`), `[last()]`, multi-parent grouping (`//a/b[1]`), and
positional predicates on the following-sibling / preceding-sibling / etc. axes
evaluate per XPath 1.0 (src/transform/navigate.rs, context.rs, mod.rs,
functions.rs; src/parser/xpath/nodes.rs, predicates.rs).
- XPath parser performance: the recursive grammar build is memoized
(src/parser/xpath/mod.rs) and the parser state is reference-counted with
copy-on-write (src/parser/mod.rs and the XML DTD parser).
See the git history for details.