The LibX config.xml File

Each edition is described by an XML configuration file that contains all information an edition maintainer has configured. More precisely, each revision of an edition has a copy of that file. The config.xml file is stored in a directory along with other resources of that edition, such as images or logos. During the build process, the config.xml is bundled with the LibX core code into a downloadable image.

In a LibX installation, you will find the config.xml in the chrome/libx/content/libx folder.  You can also look at the file at chrome://libx/content/config.xml from your browser.

The XML in config.xml is valid according to the DTD published at http://libx.org/xml/libxconfig.dtd

Below is an example config.xml file.

{code src=http://libx.org/libx2/examples/vtconfig.xml lang=xml}

During startup, LibX parses this configuration file and makes it available for convenient access as a JavaScript object, libx.edition.

Hint: to explore this object, install the Chrome Explorer extension and type “about:chrome” in your FF browser. 

For example, libx.edition.name.short is a property that contains the value of the ‘short’ attribute of the <name> element under <edition> in config.xml.

<edition>
   <name short="LibX VT" .... />
   ...
</edition>

This property corresponds to the “Short Name” in the “Description” tab in the edition builder.

In this way, a simple examination of the config.xml will determine where to find a configuration element at runtime. Each element in the XML file is represented as a JavaScript object. The attributes of the XML element are copied as properties using the same name onto the JavaScript object. Note: if an attribute is given as the empty string “” in the XML file, the corresponding JavaScript property will be null. 

For instance,

libx.edition.catalogs[0].name

would refer to the ‘name’ attribute of the first catalog, here “Addison”.

The mapping between the XML and the JavaScript object is not 1:1 – for instance, the elements describing the immediate children of <catalogs> are not represented as JavaScript properties, but it is intuitive.