1. A computer-readable storage medium having computer-executable instructions for synchronizing data that is associated with a computer-generated document and that is shared across data consumers, comprising: storing elements represented by Extensible Markup Language (XML) that are associated with a document in a data store, wherein the data store is maintained separately from a presentation storage representing the presentation view of the document; wherein the document is edited by one or more data consuming applications and wherein a same piece of data within the data store is editable by multiple data consumers concurrently; initiating a change to an XML element by a first data consumer; determining when there are other data consumers that are interested in the change to the XML element; wherein the determination is based on whether the other data consumers called an application programming interface (API) to register for a notification to a change of the XML element associated with the document, the XML element stored in the data store, and wherein the API provides the ability to specify the other data consumers are not notified in response to a change of other XML elements that are associated with the document, wherein all of the data consumers are data consuming applications; notifying the other data consumers of the change, wherein the other data consumers may perform at least one of: accepting either the change; rejecting the change; and initiating a side-effect change as a result of the original change; and in response to acceptance of the change by all of the other data consumers notified of the change: committing the change to a plurality of application undo stacks, wherein each application undo stack is associated with each data consumer; and committing the change to the data store; in response to initiation of the side-effect change by any one of the other data consumers notified of the change: delaying the side-effect change from being processed until each of the other data consumers receive notification of the change; and in response to rejection of the change by any one of the other data consumers notified of the change: rolling back the change from the plurality of application undo stacks; and rolling back the data store to a state before a time when the change was initiated.