[XML-SIG] PrettyPrint
Uche Ogbuji
uche.ogbuji@fourthought.com
Tue, 17 Dec 2002 09:26:23 -0700
> On Tue, 17 Dec 2002, Anders Bruun Olsen wrote:
>
> > On Tue, Dec 17, 2002 at 04:54:30PM +0100, JS wrote:
> > > I've got the following problem:
> > > If I save the following xml file using PrettyPrint()
> > > <?xml version="1.0"?>
> > > <doc><raw><![CDATA[foo]]></raw><raw>bar</raw></doc>
> > > I get:
> > > ##################PrettyPrint
> > > <?xml version='1.0' encoding='UTF-8'?>
> > > <doc>
> > > <raw>
> > > <![CDATA[foo]]>
> > > </raw>
> > > <raw>bar</raw>
> > > </doc>
> > > Now next time I read in the xml, a new text node is created in the DOM tree
> > > due to the indent an newline behind the first <raw> element.
> > > I could use Print since it doesn't add any additional data. But Pretty is more
> > > pretty ;-)
> > > I'm not sure about ignorable whitespace in xml, but I think, it is not
> > > correct.
> > > Shouldn't the output be ...<raw><![CDATA[foo]]></raw>...?
> >
> > I haven't tried this myself, but it sounds like what you are looking for
> > is a normalize function - that way you should be able to rid yourself of
> > the extra whitespace and linebreaks.
> >
> > Please correct me if I am wrong :)
>
> normalize will not get rid of extra white space and line breaks, it will
> combine adjacent ones into a single text node. This won't fix this
> problem as there still will be a text node before the "raw" element.
I think he means XPath normalize, which removes leading & trailing white
space, as well as combining internal whitespace.
This used to be a stand-alone function in Ft/Xml/Xslt/XmlWriter.py as well,
but I think Jeremy or I merged it into TranslateCdataAttr.
--
Uche Ogbuji Fourthought, Inc.
http://uche.ogbuji.net http://4Suite.org http://fourthought.com
A Python & XML Companion - http://www.xml.com/pub/a/2002/12/11/py-xml.html
XML class warfare - http://www.adtmag.com/article.asp?id=6965
MusicBrainz metadata - http://www-106.ibm.com/developerworks/xml/library/x-thi
nk14.html