I tried and finally gave up on Brannigan. Wonderful idea, sort of like what happens when YACC meets XSLT. But it is so generalized that I could never get it to a point where I was confident that it was doing what I wanted. It seems better suited for checking what data
but not so much for detecting when extraneous data exists (which seems to be your use-case). I cut my losses and did it the hard way.