The IDPF standards documents make frequent reference to these other standards, and they all work together to make it possible for content providers - authors and publishers - to ensure that their publications are available on the widest range of reading devices. All they have to do is to create documents that conform to the standards. Likewise, hardware and software developers know that if they also follow the standards their reading devices will be able to display all conforming publications.
Three Standards
If you looked at the IDPF website you might be wondering why there are three standards documents for epub publications. The reason is that they address different aspects of an electronic publication. It's widely recognised in the industry that features like content and presentation should be stored separately. Just as content is stored in XML and presentation is stored in CSS, what is packaged in an epub document is described separately from how it is packaged.
Book Analogy
Imagine for a moment that you have in your hand a first edition copy of The Curious Case of Benjamin Button. The words that Fitzgerald used belong to a vocabulary - the English language. The Open Publication Structure defines the 'Preferred Vocabulary' of epub Content Documents - not the words you use to write a book, rather the XHTML elements that you use to create the structure of the book, building it into sections, chapters, and parts.
The paper book has several chapters that are printed in order (we hope). The book also has a title page and other items that are not part of the story but which book designers call Front Matter (Foreword, Preface, Acknowledgements etc.). The book may also have a Table of Contents in the Front Matter which helps the reader find their way around the content. The Open Packaging Format defines how all of these parts of an epub document should be described.
Finally, the book has a cover which binds the content into a single entity, as opposed to loose pages or separately bound chapters. The Open Container Format specifies how the electronic Package, which is all of the necessary information for the book to comply with the epub standards, is held as a unit. In abstract terms the output of this bundling together is called a Container. On your computer it might be represented as a folder in your file system or, as in our case, a Zip archive held in one file with the .epub extension.
Open Publication Structure
The Open Publication Structure is mostly concerned with which XHTML elements you can use to build a content document. Let's take a look at what we mean by a content document. The following image shows one of the shorter chapters from our sample ebook The Curious Case of Benjamin Button.

Figure 1. Sample Content Document
You can see from the first line that a content document is an XML document. The next declaration says that it contains an XHTML document which means it contains a version of HTML that can be held as valid XML.
If you're not sure about XML, take a look at the XML Tutorial at W3Schools
This is followd by the XHTML content itself. You can see the usual <html>, <head>, and <body> elements that make up an XHTML document. Let's look at the contents of the <head> element first:
<link rel="stylesheet" href="css/book.css" type="text/css"/>The <head> contains a <link> element that points to the external stylesheet called 'body.css' which can be found in the css folder. It also contains a <meta> element which declares that the content type of the document is 'application/xhtml+xml' and that the character encoding is UTF-8.
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
<meta name="EPB-UUID" content="CBC56AFC-6C29-1014-8672-...">
Now take a look at the <body> of the document:
<div class="body">The <body> element contains two <div> elements, each with a different class, so that appropriate CSS styling will be applied. It contains a chapter title with <h3> styling, and four paragraphs elements (<p>).
<div class="chapter">
<h3 class="chapter-title">6</h3>
<p>When, six months later, the...</p>
<p>The Sunday supplements of...</p>
<p>However, every one agreed with...</p>
<p>On the part of the two people most...</p>
</div>
</div>
What the Open Publication Structure tells you is which XHTML elements you can use to build a content document. The following extract from the standard shows how the elements we've just seen are defined as required elements that all conforming epub reading software must accept and render.
| XHTML 1.1 Module Name | Elements |
| Structure | body, head, html, title |
| Text | abbr, acronym, address, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, var |
| Meta-information | meta |
| Link | link |
The standard refers to XHTML Module Names because XHTML can be subdivided into areas of functionality called Modules. This allows designers and developers to know what they can use and what they might find in a document that allows or requires the use of a given Module.
There is a lot more to write about Open Publication Structure, but this introduction serves to show that, at its simplest, it specifies what can go into a content document.
Open Packaging Format
The Open Packaging Format is a standard that defines how the contents of an epub electronic publication are identified and specifies how they should be presented. Recalling the post First look Inside an epub ebook, there's a file in the Zip archive called 'ebp.opf'. That .opf extension indicates that the file contains Open Packaging Format information.
In Figure 2. I've extracted ebp.opf from the Zip and renamed it as ebp_opf.xml. Then I've loaded the XML file into Visual Web Developer 2008 Express Edition and collapsed all but the root node and the first level of child nodes. This gives an overview of the package document.

Figure 2. Package Overview
The <package> node has three child nodes:
- A <metadata> node which holds a range of information about the publication as a whole. This list is quite long and includes such information as: title, creator, subject, description, publisher, creator.
- A <manifest> node which holds descriptions of every file making up the publication. The manifest lists all of the content files, style sheets that are referenced, and all images that are included in the content.
- A <spine> node that includes an ordered list of the content documents, effectively defining their reading order or the order in which they will be displayed by a reading device.
Open Container Format
Finally in this post giving an overview of how the IDPF standards work together, we'll take a quick look at the Open Container Format. Remember from the book analogy how the container binds all of the package contents together. The OCF defines how this should be done by defining a container system analagous to a set of folders in your file system.
The standard defines that there must be a file called 'mimetype' at the root level of the container and the mimetype file should comprise the ASCII string: "application/epub+zip". By so doing, reader software can confirm that the file it's been asked to open with extension .epub is intended to be an epub publication. There may be other problems that make it invalid, but the mimetype file is an assertion that the container and its contents should be handled as an epub document.
To further qualify as valid epub, the container file system must include a folder called 'META-INF' and that folder must contain a file called 'container.xml'. It may contain other files, which will be the subject of later posts in the blog, but it must have container.xml.
Figure 2. shows the contents of our container.xml, again opened in Visual Web Developer 2008 Express Edition.

Figure 3. OCF Container
container.xml has a root node called <rootfiles>. In our example there is only one <rootfile> and that points to the package file: 'OPS/ebp.opf'.
The standards working together
We've seen that our sample epub, The Curious Case of Benjamin Button, has satisfied the requirements of the Open Container Format - it has a valid mimetype file and a META-INF folder with a valid container.xml.
Reading software accessing the epub will open container.xml and use it to locate and open the Open Package Format information in the indicated .opf file. Typically, the Table of Contents will be opened and displayed and the first content document will be displayed in a viewing area.
The vocabulary of the content documents should hold no surprises for the reading software and it should be able to render the text with the structure and style indicated, including the display of any referenced images.
In this simple example, that is how the different IDPF standards work together. In subsequent posts we'll look at these features in greater detail, show how their scope is wider than I've shown so far, and also start looking at C# Class modelling of epub entities.