text: [/
   / Copyright (c) 2008 Marcin Kalicinski (kalita <at> poczta dot onet dot pl)
   / Copyright (c) 2009 Sebastian Redl (sebastian dot redl <at> getdesigned dot at)
   /
   / Distributed under the Boost Software License, Version 1.0. (See accompanying
   / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
   /]
  [section XML Parser]
  [def __xml__ [@http://en.wikipedia.org/wiki/XML XML format]]
  [def __xml_parser.hpp__ [headerref boost/property_tree/xml_parser.hpp xml_parser.hpp]]
  [def __RapidXML__ [@http://rapidxml.sourceforge.net/ RapidXML]]
  [def __boost__ [@http://www.boost.org Boost]]
  The __xml__ is an industry standard for storing information in textual
  form. Unfortunately, there is no XML parser in __boost__ as of the
  time of this writing. The library therefore contains the fast and tiny
  __RapidXML__ parser (currently in version 1.13) to provide XML parsing support.
  RapidXML does not fully support the XML standard; it is not capable of parsing
  DTDs and therefore cannot do full entity substitution.
  
  By default, the parser will preserve most whitespace, but remove element content
  that consists only of whitespace. Encoded whitespaces (e.g. &#32;) does not
  count as whitespace in this regard. You can pass the trim_whitespace flag if you
  want all leading and trailing whitespace trimmed and all continuous whitespace
  collapsed into a single space.
  
  Please note that RapidXML does not understand the encoding specification. If
  you pass it a character buffer, it assumes the data is already correctly
  encoded; if you pass it a filename, it will read the file using the character
  conversion of the locale you give it (or the global locale if you give it none).
  This means that, in order to parse a UTF-8-encoded XML file into a wptree, you
  have to supply an alternate locale, either directly or by replacing the global
  one.
  
  XML / property tree conversion schema (__read_xml__ and __write_xml__):
  
  * Each XML element corresponds to a property tree node. The child elements
    correspond to the children of the node.
  * The attributes of an XML element are stored in the subkey [^<xmlattr>]. There
    is one child node per attribute in the attribute node. Existence of the
    [^<xmlattr>] node is not guaranteed or necessary when there are no attributes.
  * XML comments are stored in nodes named [^<xmlcomment>], unless comment
    ignoring is enabled via the flags.
  * Text content is stored in one of two ways, depending on the flags. The default
    way concatenates all text nodes and stores them as the data of the element
    node. This way, the entire content can be conveniently read, but the
    relative ordering of text and child elements is lost. The other way stores
    each text content as a separate node, all called [^<xmltext>].
  
  The XML storage encoding does not round-trip perfectly. A read-write cycle loses
  trimmed whitespace, low-level formatting information, and the distinction
  between normal data and CDATA nodes. Comments are only preserved when enabled.
  A write-read cycle loses trimmed whitespace; that is, if the origin tree has
  string data that starts or ends with whitespace, that whitespace is lost.
  [endsect] [/xml_parser]
  