in reply to Re: XML::Twig and Processing Instructions
in thread XML::Twig and Processing Instructions
They are hidden because they are not described in the DTD (are described in W3C Schemas?). So when you make assumptions about the kind of XML you're going to process based on the DTD, PIs (and comments) can trip you up, by splitting up text nodes, or showing up as child/sibling when you don't expect it. Using XPath (or XPath-like navigation in XML::Twig) mitigates the risk, but doesn't eliminate it. So I thought it would be safer to get them out of the way. Especially as in the old days, when XML::DOM and XML::Parser were at the cutting-edge of XML technology, I saw way too many examples in books and "serious" web sites that would not have dealt properly with random comments or PIs.
This way, if you're concerned about PIs and/or comments you can access them, and otherwise you can safely ignore them. They will still be preserved as much as possible: comments or PIs before a start tag will follow the element if it is moved around, they will be preserved properly even when outside the root or inside the text... if you want to be scared look for cpi (comments and PI's) or extra_data (that's how I used to call them before I got lazy) in the source.