2.2.5.1 Dictionaries

A message with a dictionary stream MUST have the PidTagRoamingDatatypes property (section 2.2.2.1) set. The value of the property MUST be a bitmask that includes the value 0x00000004.

The message MUST have the PidTagRoamingDictionary property (section 2.2.2.2) set. The value of the property is a binary stream that contains a Unicode XML document using UTF-8 encoding. The XML document MUST conform to the following XML schema definition (XSD) in addition to the limitations specified in section 2.2.3.

 <?xml version="1.0" encoding="utf-8"?>
 <xs:schema targetNamespace="dictionary.xsd"
            xmlns="dictionary.xsd"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="UserConfiguration">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="Info">
           <xs:complexType>
             <xs:sequence />
             <xs:attribute name="version"
                           type="VersionString">
             </xs:attribute>
           </xs:complexType>
         </xs:element>
         <xs:element name="Data">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="e"
                           minOccurs="0"
                           maxOccurs="unbounded"
                           type="EntryType">
               </xs:element>
             </xs:sequence>
           </xs:complexType>
           <xs:unique name="uniqueKey">
             <xs:selector xpath="e" />
             <xs:field xpath="@k" />
           </xs:unique>
         </xs:element>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
   <xs:simpleType name="VersionString">
     <xs:restriction base="xs:string">
       <xs:pattern value=".+\.\d+" />
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="EntryType">
     <xs:sequence />
     <xs:attribute name="k"
                   type="ValueString" />
     <xs:attribute name="v"
                   type="ValueString" />
   </xs:complexType>
   <xs:simpleType name="ValueString">
   
  
     <xs:restriction>
       <xs:simpleType>
         <xs:restriction base="xs:string">
           <xs:pattern value="\d+\-.*" />
         </xs:restriction>
       </xs:simpleType>
     </xs:restriction>
   </xs:simpleType>
 </xs:schema>

UserConfiguration: A top-level element that MUST exist. It contains the Info and Data elements.

Info: An element that MUST exist. It contains information about the application that created the XML document in the version attribute.

version: An attribute on the Info element that specifies the name and version of the application that created the XML document. The type of this attribute MUST be VersionString.

VersionString: A simpleType based on a string. The name and version of the application that created this document is encoded in the version string.<3> The data is not validated; it is provided for future reference. The format of the version string is as follows.

  
 <name>.<major version number>

Data: An element that MUST contain all the dictionary name-value pair entries.

e: An element of type EntryType that contains a name-value pair. There can be an unbounded number of e elements inside the top-level Data element.

EntryType: A complexType that represents a name-value pair. This type contains the following attributes:

  • k: An attribute of the EntryType type that contains the name portion of the name-value pair. The type of this attribute is ValueString. The value of this attribute MUST be unique within the dictionary.

  • v: An attribute of the EntryType type that contains the value portion of the name-value pair. The type of this attribute is ValueString.

ValueString: A simpleType that is based on a string. Different value types MUST be encoded in this simpleType as a string. The format of the string MUST be as follows.

  
 <data type>-<string encoded value>

The data type MUST be an integer type code from the following table.

Type

Type code

Encoding

Boolean

3

"True" or "False"

32-bit signed integer

9

Decimal characters, prefixed with an optional "-" to denote a negative number

String

18

Unicode string

There is one reserved name-value pair that the client SHOULD include in every dictionary XML document. If the dictionary XML document does not include this name-value pair, the client MUST behave as though the default value were set:

  • OLPrefsVersion

    • Name: (string) "OLPrefsVersion"

    • Value: (32-bit integer) The client uses this setting to determine whether to prefer the settings in the XML document or its own locally stored settings.

      • "0" or any negative integer: The client MUST prefer its own default or locally stored settings, and it MUST rewrite the XML document with those settings.

      • "1" or any positive integer: The client MUST prefer the settings in the XML document.

      • Default: (32-bit integer) "0"