2.23 Property Set Stream and Storage Names

A stream or storage representing a property set might be an element of a storage. For example, the standard binding for property set streams or storages in a compound file requires each to be an element of the root storage of the file. This section specifies a standard mapping between a property set's FMTID and the name for the stream or storage element representing the property set, so that property sets stored in this way are discoverable.

 An OLEPS implementation SHOULD provide a mechanism by which elements with names derived according to this standard mapping are used for property sets, although the implementation MAY<7> additionally provide one or more other mechanisms that do not follow this convention. For example, the implementation might provide a mechanism by which a property set can be stored in an arbitrary application-provided stream container or storage container.

The following ABNF [RFC4234] syntax specifies the standard names for property set streams and storages.

 PropertySetStreamOrStorageName  =  %x05 ("SummaryInformation" / 
 "DocumentSummaryInformation" / "GlobalInfo" / "ImageContents" / 
 "ImageInfo" / 26(ALPHA / "0" / "1" / "2" / "3" / "4" / "5") )
  

The special-case FMTID values listed in the following table MUST be mapped to the names as specified in the table.

 FMTID

 Stream or storage name

FMTID_SummaryInformation {F29F85E0-4FF9-1068-AB91-08002B27B3D9}

 "\005SummaryInformation"

FMTID_DocSummaryInformation {D5CDD502-2E9C-101B-9397-08002B2CF9AE}

 "\005DocumentSummaryInformation"

FMTID_UserDefinedProperties {D5CDD505-2E9C-101B-9397-08002B2CF9AE}

 "\005DocumentSummaryInformation"

FMTID_GlobalInfo {56616F00-C154-11CE-8553-00AA00A1F95B}

 "\005GlobalInfo"

FMTID_ImageContents {56616400-C154-11CE-8553-00AA00A1F95B}

 "\005ImageContents"

FMTID_ImageInfo {56616500-C154-11CE-8553-00AA00A1F95B}

 "\005ImageInfo"

All other FMTID values MUST be mapped to names as follows:

  1. Start with the 128-bit GUID (Packet Version) representation of the FMTID and append 2 zero bits for a total of 130 bits.

  2. Split the 130 bits into 26 groups of 5 consecutive bits each.

  3. Map each group to a character as specified in the following table. Character mappings are case-insensitive, and an implementation MAY<8> convert characters to uppercase.

     Bits

     Character

     Bits

     Character

     Bits

     Character

     Bits

     Character

    00000

    a

    01000

    i

    10000

    q

    11000

    y

    00001

    b

    01001

    j

    10001

    r

    11001

    z

    00010

    c

    01010

    k

    10010

    s

    11010

    0

    00011

    d

    01011

    l

    10011

    t

    11011

    1

    00100

    e

    01100

    m

    10100

    u

    11100

    2

    00101

    f

    01101

    n

    10101

    v

    11101

    3

    00110

    g

    01110

    o

    10110

    w

    11110

    4

    00111

    h

    01111

    p

    10111

    x

    11111

    5

  4. The stream or storage name is the character "\005" followed by the 26 characters obtained from this mapping.