Re: [xml] how to not save <?xml version="1.0">



On Mon, Aug 25, 2008 at 08:12:49PM +0100, Martin (gzlist) wrote:
On 25/08/2008, Boz <boz boz org uk> wrote:
2008/8/25 Steven é <huangxin52 hotmail com>:

I am a xml beginnner, and I am using libxml2 to edit some data for a system
 > configuration file which doesn't contain <?xml version="1.0">(all elements
 > in this xml are quite standard). Even Though adding this tag to the file has
 > no effect on anything, I still don't like to add it.


As per http://xmlsoft.org/html/libxml-xmlsave.html#xmlSaveOption

 You can pass XML_SAVE_NO_DECL to prevent the xml declaration being output

This is what I was going to say too, but also note you should only use
unicode encodings (like the default, UTF-8) if you do this, as the
encoding declaration goes in the XML prologue as well, and libxml2
will happily omit it if instructed - even in cases where it's required
for a well-formed document.

  There are reasons for this:
    - first the environment can provide an encoding so even if
      you save to an non UTF-8 or non UTF-16 encoding, it is possible
      to parse it back, assuming the environment (like an HTTP header
      or filesystem metadata) provides it and it's given as an argument
      to the parser (see appendix F)
    - it's needed if you want to embbed a document fragment in another
      because an XMLDecl found in the middle of a document is a
      well-formedness error.
    - it's also needed for XSLT, because <xsl:output> requires that
      capability (not mandatory but everyone expects it)

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel veillard com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]