1.3.1 Data Spaces
The data spaces structure describes a consistent method of storing content in OLE compound files that has been transformed in some way. The structure stores both the protected content and information about the transforms that have been applied to the content. By storing all of this information inside an OLE compound file, client software has all of the information required to read, write, or manipulate the content. A standard structure of streams and storages allows various software components to interact with the data in a consistent manner.
The data spaces structure allows client applications to describe one or more arbitrary transforms. Each transform represents a single arbitrary operation to be performed on a set of storages or streams in the original document content. One or more transforms can then be composited into a data space definition. Data space definitions can then be applied to arbitrary storages or streams in the original document content in the data space map (section 2.1).
Because of the layers of indirection between transforms and document content, different transforms can be applied to different parts of the document content, and transforms can be composited in any order.
The following figure illustrates the relationships between the DataSpaceMap stream, the DataSpaceInfo storage, the TransformInfo storages, and the protected content. Note that other streams and storages exist in this file format; this figure describes only the relationships between these storages and streams.
Figure 1: Relationships among the DataSpaceMap stream, the DataSpaceInfo storage, the TransformInfo storages, and the protected content