+This library is specially designed for reading xml configuration files and
+to be as low on memory management as possible. Modifying or writing xml files
+is not planned for the future. In most situations being able to gather data
+by reading an xml file is more than enough and the read-only decision
+provides a number of advantages over a one-size fits all approach. For isntance
+the memory footprint can be kept low and the library can be kept simple.
+
+To achieve these goals the mmap function is used to map the configuration file
+to a memory region. The only places where memory is allocated is when creating
+a new XML-id, when requesting a string from a node, when requesting the node
+name or when a request is made to copy a node into a new memory region.
+
+Using this library should be pretty simple for most tasks; just open a file,
+read every parameter one by one and close the id again.
+{
+ void *xid;
+
+ xid = xmlOpen("/tmp/file.xml");
+ xpos = xmlGetNodeDouble(xid, "/configuration/x-pos");
+ ypos = xmlGetNodeDouble(xid, "/configuration/y-pos");
+ zpos = xmlGetNodeDouble(xid, "/configuration/z-pos");
+ xmlClose(xid);
+}
+
+While it is certainly possible to access every node directly by calling the
+xmlGetNode(Int/Double/String) functions, when more than one node need to be
+gathered from a parent node it is advised to get the id of the parent node
+and work from there since the XML-id holds the boundaries of the (parent)node
+which limits the searching area resulting in improved searching speed.
+{
+ void *xnid;
+ char *s;
+
+ xnid = xmlGetNode(id, "/configuration/setup/");
+ version = xmlGetNodeDouble(xnid, "version");
+ s = xmlGetNodeString(xnid, "author");
+ if (s) author = s;
+ free(s);
+ free(xnid);
+}
+
+Overview of the available functions:
+ -----------------------------------------------------------------------------