An event is a change of one or more of Book’s time-varying properties. A
state is the property set valid over a time period. An event occurs at the transition between states. [1]

In 1974 the cost of the book rose, from $14.95 to $16.95. That change in cost is an event.

In 1980 the binding was changed to softcover and the cost dropped to $8.95. That’s a second event.

This graphic depicts the events (and states):

The time varying properties of Book are encapsulated in a container called
Time Slice. The following graphic shows the Book’s two time-varying properties (Binding and Cost) embedded inside a Time Slice container:

ValidTime = the time period for which the Time Slice is valid.

Here is an XML document; the time slices show the history of changes:

Now let’s see how to implement this using XML Schema.

Create a schema file for TimeSlice. Declare a TimeSlice element. Inside TimeSlice declare ValidTime, which is to contain the Start and End elements. After ValidTime is where the time-varying
properties are to be placed, so that is an extension point:

In a separate schema file, declare the Book element. The Book element contains Title and Author (non-time-varying properties). After that comes the time-varying properties, so reference the TimeSlice
element in the other schema file. Lastly, separate from the Book element declaration, declare the time-varying properties: Binding and Cost.

Here’s the arrangement of files:

Now let’s see the actual schema files. Here is the temporal schema file: