Chapter 7. Configuration File Format Reference

1. General format description

In this chapter, the file format of the preferences.plist or, more general, the configuration files (see Section 2, “Working with Configurations”) is described which contain the application's configuration settings.

1. General format description

downCast may offer very specific configuration options in the future for which we will not provide a UI widget to not clutter the interface and confuse the average user. However, you may set that specific preference manually in the preferences file, which is XML based and must be valid according to the following DTD:

<ENTITY % plistObject "( date | dict | real | integer | string | true | false )" >
<ELEMENT plist %plistObject;>
<ATTLIST plist version CDATA "1.0" >

<-- Collections -->
<ELEMENT dict (key, %plistObject;)*>
<ELEMENT key (#PCDATA)>

<--- Primitive types -->
<ELEMENT string (#PCDATA)>
<ELEMENT date (#PCDATA)> <-- Contents should conform to a subset of ISO 8601 -->

<-- Numerical primitives -->
<ELEMENT true EMPTY>  <-- Boolean constant true -->
<ELEMENT false EMPTY> <-- Boolean constant false -->
<ELEMENT real (#PCDATA)> <-- Contents should represent a floating point 
                             number matching ("+" | "-")? d+ ("."d*)? ("E" ("+" | "-") d+)? 
                             where d is a digit 0-9.  -->
<ELEMENT integer (#PCDATA)> <-- Contents should represent a (possibly 
                                 signed) integer number in base 10 -->

Preference keys are hierarchically structured similar to the package names in the Java language, except that the internal hierarchy separator character is the SECTION SIGN '§'. This allows us to use URLs as key names, which may contain the dot character. The hierarchy separator character is only visible from within the application; on writing the preferences file, it is resolved into a hierarchy of key/dict element pairs.

An internal preference key/value pair (global§application§version, 1.0.0) will be resolved to

<key>global</key>
<dict>
  <key>application</key>
  <dict>
    <key>version</key>
    <string>1.0.0</string>
  </dict>
</dict>