S5 1.0 Reference

This document provides a full reference to the S5 presentation file format. The following conventions are used:

S5 1.0 is compatible with the Opera Show Format 1.0 (hereafter OSF 1.0).

A complete example file can be found at the end of this document.

Document Skeleton

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head> </head>

<body>
  <div class="layout"> </div>
  <div class="presentation"> </div>
</body>

</html>

This is the basic top-level skeleton for an article file. Most of these top-level elements all have descendent elements, which are explained by the rest of this document.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
The document type used for S5 slide shows. XHTML 1.0 Strict was chosen to allow compatibility with OSF 1.0.
<html xmlns="http://www.w3.org/1999/xhtml"> </html>
The root element of the document, which contains pretty much everything else. Required by the DOCTYPE.
<head> </head>
This element contains the header information for the presentation, such as title of the presentation, metadata about the presentation's author, links to style sheets and scripts, and so on.
<body> </body>
The actual body of the presentation, containing all of the content and components that will be displayed to the viewer. Not required by the DOCTYPE, but required for S5 compliance.
<div class="layout"> </div>
This element contains all of the bits of layout that appear on every slide, including the header and footer and the navigation controls.
<div class="presentation"> </div>
A container for all of the individual slides.

head — The Document's Metadata

<head>
<title>[slide show title]</title>
<meta name="version" content="S5 1.0" />
<meta name="generator" content="[generating program]" />
<meta name="presdate" content="[presentation date]" />
<meta name="author" content="[author's name]" />
<meta name="company" content="[author's employer]" />
<meta http-equiv="Content-Type" content="[content-type]" />
<link rel="stylesheet" href="ui/slides.css" type="text/css" media="projection" id="slideProj" />
<link rel="stylesheet" href="ui/opera.css" type="text/css" media="projection" id="operaFix" />
<link rel="stylesheet" href="ui/print.css" type="text/css" media="print" id="slidePrint" />
<script src="ui/slides.js" type="text/javascript"></script>
</head>

intro

<title>[slide show title]</title>
Contains the title of the presentation.
<meta name="version" content="S5 1.0" />
Provides the exact markup format being used for the presentation file. Copied from OSF 1.0.
<meta name="generator" content="[generating program]" />
Indicates the tool that was used to create the presentation file. If a tool was used, this element is required. If the presentation was authored by hand, the value can be set to the author's name or the text editor they used; otherwise, the element can be omitted. Copied from OSF 1.0.
<meta name="presdate" content="[presentation date]" />
The date on which the presentation was (or is to be) delivered. Copied from OSF 1.0.
<meta name="author" content="[author's name]" />
The name of the presentation's primary author. There is currently no ability to designate secondary authors. Copied from OSF 1.0.
<meta name="company" content="[author's employer]" />
The company for which the primary presenter works. This could be more broadly construed to be the author's primary affiliation, whether or not it is a corporate entity. Copied from OSF 1.0.
<meta http-equiv="Content-Type" content="[content-type]" />
Indicates the presentation file's content type. One possible value is application/xhtml+xml;charset=utf-8.
<link rel="stylesheet" href="ui/slides.css" type="text/css" media="projection" id="slideProj" />
This links to the CSS that drives the visual presentation of the slide show. The referenced file consists of three @import directives that point to still other style sheets; see the file map for more details.
<link rel="stylesheet" href="ui/opera.css" type="text/css" media="projection" id="operaFix" />
This links to the style sheet that allows Opera to run the slide show through Opera Show.
<link rel="stylesheet" href="ui/print.css" type="text/css" media="print" id="slidePrint" />
This links to the print-medium style sheet, which contains directives that format the presentation for printing.
<script src="ui/slides.js" type="text/javascript"></script>
This references the JavaScript file that make the slide show work.

Layout Information

<div class="layout">

  <div id="currentSlide"></div>
  <div id="header">[any header content]</div>
  <div id="footer">[any footer content]
  <div id="controls"></div>
  </div>
  <div class="topleft">[top left layout bit]</div>
  <div class="topright">[top right layout bit]</div>
  <div class="bottomleft">[bottom left layout bit]</div>
  <div class="bottomright">[bottom right layout bit]</div>

</div>
<div id="currentSlide"></div>
This is the structural hook into which the current progress indicator (e.g., "5 / 21") is filled in by the JavaScript. If no progress information is desired, leave the markup in place and suppress its display via CSS. It is strongly recommended that this element be left unfilled, since any content in the XHTML file will be overwritten by the JavaScript. The markup generated by the JavaScript includes three elements:
<span id="csHere">[current slide number]</span>
The number of the slide currently being displayed.
<span id="csSep">/</span>
The separator character between the current slide number and the total slides number; the character currently is a forward slash. A future version of S5 may allow this to be changed by a means other than editing the JavaScript file.
<span id="csTotal">[total slides]</span>
The total number of slides in the slide show. This count does not include the first slide in the presentation, which is numbered zero.
<div id="header">[any header content]</div>
Any header content or effects are placed inside this element. Even if the header has no content, it should remain as an unfilled element.
<div id="footer"> </div>
Any footer content or effects are placed inside this element. This element contains one required element.
<div id="controls"></div>
This is the structural hook into which the slide navigation controls are filled in by the JavaScript. This includes the popup navigation menu, the forward/backward links, and the "style toggle" link. If no controls are desired, leave the markup in place and suppress its display via CSS, although doing so is strongly discouraged. It is strongly recommended that this element be left unfilled, since any content in the XHTML file will be overwritten by the JavaScript. A future version of S5 may permit the structural relocation of the controls to another layout component, such as the header or one of the optional layout div elements. The markup generated by the JavaScript includes a few elements:
<form id="controlForm"> </form>
This element encloses all the of the slide controls. Within it are two div elements, each of which contains the actual controls.
<div> </div>
<a id="toggle">&#216;</a>
The link used to switch the slide styles off and on.
<a id="prev">&laquo;</a>
The link used to move to the previous slide.
<a id="next">&raquo;</a>
The link used to move to the next slide.
<div> </div>
<select id="jumplist"></select>
The foundation of the slide navigation list. The JavaScript generates a number of option elements within this select.
<div class="topleft">[top left layout bit]</div> <div class="topright">[top right layout bit]</div> <div class="bottomleft">[bottom left layout bit]</div> <div class="bottomright">[bottom right layout bit]</div>
These elements have a class attribute containing a value indicating their layout position, such as <div class="topleft">. They may also be given an optional id attribute that refers to the relevant meta element, so editors can determine what information was positioned and use this to their advantage in the editing UI. Copied from OSF 1.0.

The Slides

<div class="presentation">

  <div class="slide">
  <h1>[slide title]</h1>
  <div class="slidecontent">
  [slide content]
  </div>
  <div class="handout">
  [extra content not displayed in slide show]
  </div>
  </div>

</div>
<div class="slide"> </div>
The presentation section of the file contains one or more slides. The contents of each slide are obviously up to the author of the presentation. This element contains a number of descendants.
The contents of this element give the title of the individual slide. These contents are collected by the JavaScript and used to build the slide show's navigation menu. If the slide is untitled, it is recommended that an unfilled h1 element be left in place.
<div class="slidecontent"> </div>
The contents of the slide can optionally be wrapped in this div, although a slide can have content without having it placed inside this div. Note that while use of this element is optional, having actual content for a slide is highly recommended. The content of the slide can be any valid XHTML markup and content. A common slide would contain an unordered list of five or so talking points.
<div class="handout"> </div>
This is used to enclose any extra information that should be included in the printed version of the presentation, but should not appear in the slide show. The contents can be any valid XHTML markup and content, and there is no restriction on length. As an example, a presentation on CSS might place examples of CSS techniques in one of these handout sections.

Complete Example

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>[slide show title]</title>
<meta name="version" content="S5 1.0" />
<meta name="generator" content="[generating program]" />
<meta name="presdate" content="[presentation date]" />
<meta name="author" content="[author's name]" />
<meta name="company" content="[author's employer]" />
<meta http-equiv="Content-Type" content="[content-type]" />
<link rel="stylesheet" href="ui/slides.css" type="text/css" media="projection" id="slideProj" />
<link rel="stylesheet" href="ui/opera.css" type="text/css" media="projection" id="operaFix" />
<link rel="stylesheet" href="ui/print.css" type="text/css" media="print" id="slidePrint" />
<script src="ui/slides.js" type="text/javascript"></script>
</head>
<body>

<div class="layout">

  <div id="currentSlide"></div>
  <div id="header">[any header content]</div>
  <div id="footer">[any footer content]
  <div id="controls"></div>
  </div>
  <div class="topleft">[top left layout bit]</div>
  <div class="topright">[top right layout bit]</div>
  <div class="bottomleft">[bottom left layout bit]</div>
  <div class="bottomright">[bottom right layout bit]</div>

</div>
<div class="presentation">

  <div class="slide">
  <h1>[slide show title]</h1>
  <h2>[slide show subtitle]</h2>
  <h3>[author's name]</h3>
  <h4>[author's employer]</h4>
  </div>
  
  <div class="slide">
  <h1>[slide title]</h1>
  <div class="slidecontent">
  [slide content]
  </div>
  <div class="handout">
  [extra content not displayed in slide show]
  </div>
  </div>

</div>

</body>
</html>