Closed BernhardPosselt closed 6 years ago
If you feel up to the task, we would be super happy to get a PR with an initial stab at the functionality to include in the crate. I think traditionally wrappers package libxslt separately from libxml, so this may also be out of scope for this specific crate?
Happy to help figure this out either way, and I will myself be needing a Rust binding for libxslt, although I am not yet at that stage of the project I am porting over.
Just starting out with Rust and I also want to port code over from Python. I don't really know enough C to feel like I could do this safely
Well, I think it is safe to say we won't get close to implementing the xslt wrapper ourselves soon - we're in the middle of reworking the libxml parts to more Rust-like ergonomics right now.
Happy to leave this issue open until someone comes around and takes a stab at the libxslt side of things (the basic transform
looks to be quite direct to implement actually), or until we get to it. Just letting you know realistically it may take a while.
And thanks for the cython pointers!
Hi @BernhardPosselt ! I have made good progress with using bindgen for the libxml crate (see #39 ), and consequently a brief experiment for a new libxslt
crate worked quite nicely - I could extract the libxslt specific low-level bindings via bindgen again, while depending on the libxml crate for the base XML layer.
So once we release a bindgen-based 0.2.1 for the libxml crate I can release a first 0.1.0 experiment for the libxslt crate. I don't think I have enough experience with XSD to try the same there, but would be easy to repeat the bindgen steps, and then flesh out a basic Rust API on top.
Recording here, also for any interested onlookers that may want to try their hand at writing a Rust wrapper and are looking for a low-hanging fruit type of task.
Here is the proof-of-concept libxslt crate with the bare minimum of transformation functionality: https://crates.io/crates/libxslt
I will close the issue, but feel free to both continue the discussion here, as well as at the new crate's repository issues.
Unfortunately no single crate out there supports either one, however libxml supports both. I can't find docs on them yet. Maybe take inspiration from lxml?