FleXML
FleXML is an XML transformation language originally developed by Kristofer Rose. It allows a programmer to specify actions in C programming language or C++, and associate those actions with element definitions in an XML DTD. It is similar in philosophy to Yacc and the Lex programming tool in that it is a syntax-directed driver; one could establish the analogies Yacc:LR(1) grammar::Lex:Regular grammar::FleXML::XML.
The implementation is in Perl. A programmer supplied action file is input to FleXML; the output is a file suitable for input to Flex lexical analyser.
Another project named FleXML is a flexible XML parser which can use a bad XML document. This Java library is under BSD licence.