Honestly, I can't think of too many cases where being able to specify the top and lowest level tags only would make much sense. So maybe a more realistic example, or a quick explanation of why you need to do this, would probably get a more relevant answer.
Anyway, in general, when you get to the limit of the mini-language used to declare handlers, the solution is to "finish the job" in the handler itself. So filter first the regular way, and test the rest of the condition at the begining of the handler, returning if it is not met.
So you would have for example:
my $twig= XML::Twig->new( twig_handlers => { title => \&title }) ->parsefile( "foo.xml"); sub title { my( $twig, $title)= @_; # return 1 (true) if you can have other handlers on the # title, otherwise it doesn't matter what you return # see the doc for twig_handlers return 1 unless( $title->root->matches( 'gutbook'); $title->set_tag( 'tit'); }
Does it help?
In reply to Re^3: XML::Twig question
by mirod
in thread XML::Twig question
by anniyan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |