Can you add the actual output and what you expect the output to be? For example, on my machine, I get:
#$ perl -MTest::More -e 'plan "no_plan";TODO:{local $TODO="foo bar"; f
+ail("blog");}'
not ok 1 - blog # TODO foo bar
# Failed (TODO) test 'blog'
# at -e line 1.
1..1
This is a valid TODO test (and a harness would mark the test suite as passed, even though it looks like it has failed). I don't have Test::XML::XPath installed, so just in case this is more of a case of improper expectations, pasting what you are seeing might help.