Yes, the normal rules work inside out. They are not meant to set global variables, they are supposed to extract, massage and return data. You should only change the global state once you are done with the branch. For example if the XML contains a list of articles, then the rules for the inner tags will massage the data into a convenient format and the rule for the articles will insert the accumulated data into the database.
XML::Rules is not a normal event based parser, one that would fire events at you and expect you to take care of any bookkeeping.
Enoch was right!
Enjoy the last years of Rome.