From: "Sean E. Russell" Date: 2008-01-19T01:16:23+09:00 Subject: Re: REXML::Element.write is deprecated. See REXML::Formatters On Wednesday 16 January 2008, Phlip wrote: > > I guess I'll let Sean take it from here, other than to note that > > .to_s on an element still works... > > I understand you only mean that's a workaround - it is indeed already > deployed. But the complete rationale is useful here. Your rationale, or mine? write() was deprecated because a large number of tickets were about pretty-printing: how it didn't do what people thought it would do, how it could be improved, and (as much as anything else) how the hell to use it. The API was confusing and was only getting worse with age, and any attempt to make the formatting more "logical" for one person generated any number of complaints by other people. The worst part, for me, was that formatting was adding significant bloat to the code. Ultimately, the right thing to do was to rip it out of the nodal classes and create its own infrastructure. However, write() should still work; it *should* just call a default formatter to do the work. That it doesn't is a bug. As far as the missing Formatters class goes, any problems with REXML in the Ruby repository are my fault; ironically, Ruby moving to Subversion introduced some trouble on my end, as I had to start working with a new tool (svk) which (a) I discovered that I didn't like very much, and (b) my lack of knowledge about inevitably led to usage errors on my part. Consequently, it looks like the Formatters class didn't make it into the Ruby repository. All of this should be fixed, assuming I don't make any more mistakes (don't hold your breath on that) with the next minor revision release this weekend. Sam has been doing a huge amount of work with the repository, and I'm creating a point release just to propegate his fixes. Hopefully, this will resolve your issues, and you should still be able to use to_s() and write(). In case I haven't been clear, for simple, dumb dumping of XML, with no promises about formatting, in the future you should use to_s(). This is the convenience method. If you want control about how the XML is formatted, then use the Formatter API which -- I freely admit -- is poorly (if at all) documented. > The goal of indent_xml() is to pretty-print tested XHTML so we can > rapidly read it. It could have come from a human (icky formatting), One benefit of the new Formatter API is that it is now vastly more easy to write your own formatters. > or from some HTML generator (even ickier formatting!). And because > HTML is not space-sensitive, the best solution is to format it as > beautifully as possible, to help you see its structure and > attributes. > > assert_xpath needs all this in its diagnostics, so you can rapidly > see why an XPath was not found. -- --- SER Confidentiality Notice This e-mail (including any attachments) is intended only for the recipients named above. It may contain confidential or privileged information and should not be read, copied or otherwise used by any other person. If you are not a named recipient, please notify the sender of that fact and delete the e-mail from your system.