The storage format specifies the format of the XML to be saved as an attachment in the mail.
The fields in the XML file are written like this:
<field>(type, default)</field>
If a field entry is the same as the default, then it's optional whether to write it or not - exception from this is the creation and last modification dates. If there are attributes with a limited amount of options, these are specified after the text.
All tag names, attribute names, and attribute values are case sensitive.
If a client sees a tag it does not understand, this tag must be preserved and saved back to the file. This allows for client specific tags. Outlook writes it client specific tags directly in a tnef file that is saved as an unreferenced attachment.
Each type of folder has it's own subclass of the specification. They all share this same and very simple XML header:
<?xml version="1.0" encoding="UTF-8"?>
After this, we have a single node with the content of the file. One file can only hold one instance of the events, contacts, ... This looks like:
<type version="1.0">
Entry fields go here
</type>where <type> can be note, event, task, journal, or contact. If a client has a new type, it is allowed to implement this, but then other clients will not be able to handle the folder entry.
The version attribute denotes the version of this specification. Until a stable version is released, the number "1.0" is used.
Here is a short example of a note:
<?xml version="1.0" encoding="UTF-8"?>
<note version="1.0">
Note stuff goes here
</note>The types that each entry can be are:
String (utf8 encoded, can be multiple lines)
Number (actually an int)
Date YYYY-MM-DD
Datetime YYYY-MM-DDThh:mm:ssZ. The T is the literal char, and always needs to be between the date and the time. The Z is also the literal char, and shows that the datetime is UTC. The format does not allow for other time settings than UTC. An example could be 2004-05-04T15:00:00Z.
Color #RRGGBB -- The rgb values are case insensitive, so for example #00aaFF is allowed.
Bool (true or false)