I'd like to get a real XSLT processor working with erlang. Which would be the best interface, nif or port driver? According to the nif documentation, nif calls block the runtime, so they should not take long. Is processing a long xml document too long?
Also, I'd like to allow erlang callbacks during the transformation. Does that seem possible? Possible with nif but not port drivers or vice versa?
I've never written any C, so I figured this would be good introduction. Xalan is C++. I assume nif can work with that, right?
I would recommend building a port driver.
The NIF facility is a way to add new built-in functions to the language
and speed up things that would be too slow to implement in pure Erlang.
NIFs are considered experimental anyway, so the interface might
change radically in future releases.
Writing a port driver means implementing
a C (or C++) shared library that behaves like a whole erlang process.
This allows for greater flexibility as you can communicate with
other processes while transforming a document (callbacks...), etc.
It doesn't even have to be a driver. If you don't pass lots of
data between your port program and other Erlang code you might
consider writing a plain port instead (it's easier).