Beefy Boxes and Bandwidth Generously Provided by pair Networks RobOMonk
laziness, impatience, and hubris
 
PerlMonks  

Re: XML::Twig generating invalid XHTML output??

by mirod (Canon)
on Feb 14, 2005 at 13:52 UTC ( [id://430885]=note: print w/replies, xml ) Need Help??

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


in reply to XML::Twig generating invalid XHTML output??

As noted before, you should be using either twig_roots/twig_print_outside_roots OR print at the end of the processing.

I'll try to explain:

You use twig_roots/twig_print_outside_roots to write filters: anything you are not interested in is output as you parse the document. The elements you are interested in are processed in the handler. But then you have to output them, once processed, at the end of the handler. Then they are output at the proper time. So in your exemple you would have a $body->print at the end of insert_form_tags(), and you would remove the $xml->print at the end of your main code.

OTOH, if your documents are small (ie likely to fit in memory), then there is really no need to use twig_roots/twig_print_outside_roots. You can either load the entire document in memory and then go from here (the body would be $xml->root->first->child( 'body') or $xml->first_elt( 'body')), or use twig_handlers to process elements "in place" during the parsing and then output the entire document in the end (you can also use this mode and then flush the twig at the end of the handler and then again at the end of the parsing if memory is an issue).

Does this make sense? If yes I will probably add this to the FAQ.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://430885]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.