Speaking as a user of Xerces (in Java) and now a handful of other parsers on perl, in general this stuff is best to hand off to someone else unless you're willing to go and produce a complete implementation. Eventually you look at long-term maintenance or feature creep and eventually you just end up reimplementing one of the already complete packages.
To make a generalization anyway.