## S5 1.1 Reference

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

- Content styled in this manner indicates something that is required by the S5 1.1 format.
- Content styled in this manner indicates something that is recommended in the S5 1.1 format.
- Content styled in this manner indicates something that is optional in the S5 1.1 format.
- Content styled in this manner indicates something that is generated by the S5 1.1 JavaScript. These are not provided in the code listings.

S5 1.1 is compatible with the Opera Show Format 1.0 (hereafter OSF 1.0). It is also capable of conforming to the XOXO microformat.

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.1" />
    <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]" />
    <meta name="defaultView" content="[value]" />
    <meta name="controlVis" content="[value]" />
    <link rel="stylesheet" href="v11b1/slides.css" type="text/css" media="projection" id="slideProj" />
    <link rel="stylesheet" href="v11b1/outline.css" type="text/css" media="screen" id="outlineStyle" />
    <link rel="stylesheet" href="v11b1/print.css" type="text/css" media="print" id="slidePrint" />
    <link rel="stylesheet" href="v11b1/opera.css" type="text/css" media="projection" id="operaFix" />
    <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.1" />
  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`.
<meta name="defaultView" content="[value]" />
  Sets the initial view for the presentation using one of two values: `slideshow` and `outline`. The default value is `slideshow`.
<meta name="controlVis" content="[value]" />
  Sets the default presentation of the controls to be either `visible` or `hidden`. The default value is `visible`.
<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/outline.css" type="text/css" media="print" id="outlineStyle" />
  This links to the style sheet used to present the outline view of the slide 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.
<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.
<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="controls"></div>
      <div id="currentSlide"></div>
      <div id="header">[any header content]</div>
      <div id="footer">[any footer content]</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="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. 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 id="navLinks"> </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 id="navList"> </div>
      <select id="jumplist"></select>
        The foundation of the slide navigation list. The JavaScript generates a number of `option` elements within this `select`.
  <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 visual effects are placed inside this element.
<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.
  <h1>[slide title]</h1>
    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.1" />
    <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]" />
    <meta name="defaultView" content="[value]" />
    <meta name="controlVis" content="[value]" />
    <link rel="stylesheet" href="v11b1/slides.css" type="text/css" media="projection" id="slideProj" />
    <link rel="stylesheet" href="v11b1/outline.css" type="text/css" media="screen" id="outlineStyle" />
    <link rel="stylesheet" href="v11b1/print.css" type="text/css" media="print" id="slidePrint" />
    <link rel="stylesheet" href="v11b1/opera.css" type="text/css" media="projection" id="operaFix" />
    <script src="ui/slides.js" type="text/javascript"></script>
    </head>
    <body>

    <div class="layout">

      <div id="controls"></div>
      <div id="currentSlide"></div>
      <div id="header">[any header content]</div>
      <div id="footer">[any footer content]</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>