I forgot it, sorry about that. I don't know why, the last time I checked, I memorized all these and deleted permanently expat from my brain. I would not always go in for expat, though. Well... Depends on what are you working on. The problem is, if you deal with xml encoded in utf, libparsifal does the same work of expat with more than half the lines of code (parsifal draws less than 5K sloc, opposed to the circa 12K of expat). On the other hand, expat detects any well-formedness error and has built-in support for a lot of character encodings, without calling in gnu iconv, while parsifal is tolerant to some errors and depends on iconv to deal with any enc which is not utf-8/16/16be. Ignoring here mcax, because it does nothing at all in both the validation and multi-encoding fields.
Stated that XML is bad to the bone, one should decide where the suckless is. For a official-ous, popular, stallman sheds a tear for your FOSS, or for a project where I earn money, I would find more reliable expat. For something done for me and whom it may concerns, I would prefer libparsifal and pipe it to iconv when needed. For a personal hack that I had fun to turn in C, I'd include the headers of nunnimcax. -- Teodoro Santoni