The real fixes are: The first line specifies that it is an XML document and gives useful information about its encoding. However, if a tag is empty (no content), a single tag can serve as both the opening and closing tag if it ends with .
Then the rest of the document is a text format whose structure is specified by tags between brackets. XML can be applied successfully to a wide range of tasks, ranging from long term structured document maintenance (where it follows the steps of SGML) to simple data encoding mechanisms like configuration file formatting (glade), spreadsheets (gnumeric), or even shorter lived documents such as Web DAV where it is used to encode remote calls between a client and a server.
text language where semantic and structure are added to the content using extra "markup" information enclosed between angle brackets. Though the library is written in C a variety of language bindings make it available in other environments.
Libxml2 is known to be very portable, the library should build and work without serious troubles on a variety of systems (Linux, Unix, Windows, Cyg Win, Mac OS, Mac OS X, RISC Os, OS/2, VMS, QNX, MVS, Vx Works, ...) Libxml2 implements a number of existing standards related to markup languages: In most cases libxml2 tries to implement the specifications in a relatively strictly compliant way.
Note that some of the Python purist dislike the default set of Python bindings, rather than complaining I suggest they have a look at lxml the more pythonic bindings for libxml2 and libxslt and check the mailing-list.