XML::Validate is a generic interface to different XML validation backends. For a list of backend included with this distribution see the README. . If you want to write your own backends, the easiest way is probably to subclass XML::Validate::Base. Look at the existing backends for examples.