1. A method for storing multiple versions of a structured document, the method comprising: receiving by a server a first version of a structured document comprising a plurality of objects hierarchically related to one another; generating by the server a plurality of versioned nodes (vNodes) representing the plurality of objects of the first version of the structured document, wherein each of the plurality of vNodes includes versioning information associated with the first version of the structured document; storing by the server the plurality of vNodes in a data store, wherein the plurality of vNodes collectively represent the first version of the structured document; receiving by the server a next version of the structured document including a modification to a first object of the first version of the structured document; identifying by the server a sharable object of the first version of the structured document based on a hierarchical relationship between the sharable object and an ancestor of the modified first object; and updating by the server a vNode representing the identified sharable object to include versioning information associated with the next version of the structured document, wherein the updated vNode is shared between the first version and the next version of the structured document by including versioning information associated with the first version and the next version of the structured document.
3. The method of claim 1 wherein each of the plurality of vNodes further includes information identifying at least one of a parent node of a vNode, a first child node of the vNode, and a next sibling node of the vNode.