SELECT Id, Repertoire_No, Niveau, Niveau2, Niveau4, Niveau5, Titre, Titre2, Actif, Attachement,Attachement_Poid,Attachement_Texte, Description, Extrait, web, Photo, Photo_mini, Photo_texte, Classement, Secteur, Entree, Modification, Divers1_t, Divers1, Divers2_t, Divers2, Divers3_t, Divers3, Divers4_t, Divers4, Divers5_t, Divers5, Divers6_t, Divers6, Divers7_t, Divers7, Divers8_t, Divers8, Divers9_t, Divers9, Divers10_t, Divers10, Url1, Url2, Url3, Url4, Url5, Url6, Url7, Url8, Url9, Url10, Width, Height, background FROM Sections WHERE #PreserveSingleQuotes(QryMenuActif)##SectionsQuery#Repertoire_No=#attributes.Repertoire_No# ORDER BY Tri, Titre SELECT Id,Repertoire_No,Categorie_No,Sequence_No,Niveau,Titre,Actif,Attachement,Description,Extrait,Niveau5,Web,Classement FROM Sections_Pages WHERE #PreserveSingleQuotes(ActifQuery)##CategorieQuery#Repertoire_No=#attributes.Repertoire_No# AND Niveau='1' ORDER BY Tri, Titre SELECT Id,Repertoire_No,Categorie_No,Sequence_No,Niveau,Titre,Actif,Attachement,Description,Extrait,Niveau5,Web FROM Sections_Pages WHERE #PreserveSingleQuotes(ActifQuery)#Repertoire_No=#attributes.Repertoire_No# AND Niveau='2' ORDER BY Tri, Titre SELECT Id,Repertoire_No,Categorie_No,Sequence_No,Niveau,Titre,Actif,Attachement,Description,Extrait,Niveau5,Web FROM Sections_Pages WHERE #PreserveSingleQuotes(ActifQuery)#Repertoire_No=#attributes.Repertoire_No# AND Niveau='3' ORDER BY Tri, Titre Aucune presentation de disponible
slanted W3C logo


#titre2##titre#

#titre2##titre#

#titre2##titre#

Hit the space bar for next slide

#Titre#

#sections.description#

#Titre#

#Sous_Sections.description#

#Titre#

#Article.description#

MERCI!

Slide Shows in XHTML

  • You can now create accessible slide shows with ease
  • Works across browsers and is operated like PowerPoint
    • Advance to next slide with mouse click or space bar
    • Move forward/backward between slides with Cursor Left, Cursor Right, Pg Up and Pg Dn keys
    • Home key for first slide, End key for last slide
    • The "C" key for an automatically generated table of contents (or click on "contents" on the toolbar)
    • Function F11 to go full screen and back
    • The "F" key toggles the display of the footer
    • The "A" key toggles display of current vs all slides
      • Use the "A" key when you want to view or print all slides
      • Try it now to see how to include notes for handouts (this is explained in the notes following this slide)
    • Font sizes automatically adapt to browser window size
      • use < and > keys for additional control (or - and + keys on number pad)
    • Switching off JavaScript reveals all slides
  • Now move to next slide to see how it works

For handouts, its often useful to include extra notes using a div element with class="handout" following each slide, as in:

<div class="slide"> 
 ... your slide content ...
</div>

<div class="handout">
 ... stuff that only appears in the handouts ...
</div>

What you need to do

<?xml version="1.0" encoding="utf-8"?>
<!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" lang="en" xml:lang="en"> 
<head> 
  <title>Slide Shows in XHTML</title> 
  <meta name="copyright" 
   content="Copyright &#169; 2005 your copyright notice" /> 
  <link rel="stylesheet" type="text/css" media="screen, projection, print" 
   href="http://www.w3.org/Talks/Tools/Slidy/slidy.css" /> 
  <script src="http://www.w3.org/Talks/Tools/Slidy/slidy.js" 
   type="text/javascript"></script> 
  <style type="text/css"> 
    <!-- your custom style rules --> 
  </style> 
</head>
<body>
   ... your slides marked up in XHTML ...
</body>
</html>

To get the W3C Blue Style

The head element should include the following link to the style sheet:

<link rel="stylesheet" type="text/css" media="screen, projection, print"
 href="http://www.w3.org/Talks/Tools/Slidy/w3c-blue.css" /> 

The body element's content should start with the following markup:

<div class="background"> 
  <img id="head-icon" alt="graphic with four colored squares"
    src="http://www.w3.org/Talks/Tools/Slidy/icon-blue.png" /> 
  <object id="head-logo" title="W3C logo" type="image/svg+xml"
    data="http://www.w3.org/Talks/Tools/Slidy/w3c-logo-blue.svg"><img
   src="http://www.w3.org/Talks/Tools/Slidy/w3c-logo-blue.gif" 
   alt="W3C logo" id="head-logo-fallback" /></object>
</div> 

This adds the logos on the top left and right corners of the slide.

You are of course welcome to create your own slide designs. You can provide different styles and backgrounds for different slides (more details later).

Use the meta element with name="copyright" for use in the slide show footer:

<meta name="copyright" 
content="Copyright &#169; 2005 W3C (MIT, ERCIM, Keio)" /> 

To use it off-line

  • You can download slidy.zip and unzip it to create a Slidy directory on your machine
  • If you have cvs access to the W3C site you can check out the Slidy directory
  • Remember to periodically check for updates
  • You then have two choices:
    1. Use relative URIs depending on your local setup to access the appropriate files. Use the same directory structure as on the W3C server, ie, ".../2005/Talks/...".
    2. Run a Web server on your machine so that the directory above can be accessed via http://localhost/Talks/Tools/Slidy and use the URIs of the form "/Talks/Tools/Slidy/slidy.css", "/Talks/Tools/Slidy/slidy.js".
  • In both cases you can then publish your files on the W3C server unchanged.
  • Please feel free to create your own designs, and help us to build a gallery of Slidy styles.
  • Here is a variant on the W3C Blue style.

Generate a Title Page

If you want a separate title page with the W3C blue style, the first slide should be as follows:

<div class="slide cover"> 
 <img src="http://www.w3.org/Talks/Tools/Slidy/keys.jpg" 
  alt="Cover page images (keys)" class="cover" /> 
 <br clear="all" />            
 <h1>HTML Slidy: Slide Shows in XHTML</h1> 
 <p><a href="http://www.w3.org/People/Raggett/">Dave Raggett,</a> 
 <a href="mailto:dsr@w3.org">dsr@w3.org</a></p> 
</div> 

The w3c-blue.css style sheet looks for the classes "slide" and "cover" on div and img elements using the CSS selector div.slide.cover

This technique can be used to assign your slides to different classes with a different appearence for each such class.

Slidy also allows you to use different background markup for different slides, based upon shared class names, as in "foo" below. Backgrounds without additional class names are always shown except when the slide isn't transparent. You may need to tweak your custom style sheet.

<div class="background foo">
   ... background content ...
<div>

...

<div class="slide foo">
   ... slide content ...
<div>

Incremental display of slide contents

For incremental display, use class="incremental", for instance:

  • First bullet point
  • Second bullet point
  • Third bullet point

which is marked up as follows:

<ul class="incremental"> 
  <li>First bullet point</li> 
  <li>Second bullet point</li> 
  <li>Third bullet point</li> 
</ul> 
 
<p class="incremental">which is marked up as follows:</p> 
 
<pre class="incremental"> 
 ... 
</pre> 

An element is incrementally revealed if its parent element has class="incremental" or if itself has that attribute. Text nodes are not elements and are revealed when their parent element is revealed. You can use class="incremental" on any element except for <br />. Use class="non-incremental" to override the effect of setting the parent element's class to incremental.

Note: you will see a red asterisk on the left of the toolbar when there is still something more to reveal.

Create outline lists with hidden content

You can make your bullet points or numbered list items into outlines that you can expand or collapse

  • Just add class="outline" to the ul or ol element. Click on this list item for more details.
    • The Slidy script will then treat the list as an outline list.
    • Clicking on outline list items will expand/collapse block-level elements within that list item.
    • Click on the above to make this list item collapse again.
  • Users will then see expand/collapse icons as appropriate and may click anywhere on the list item to change its state. This particular list item can't be expanded or collapsed.
  • Add class="expand" to any li elements that you want to start in an expanded state.
    • By default Slidy hides all the block level elements within the outline list items unless you have specified class="expand".
    • Such pre-expanded items can be collapsed by clicking on them.
  • Note expand/collapse icon highlighting requires browser support for :hover which isn't supported by IE6.
    • Microsoft says it will be supported by IE7 along with many fixes for other CSS woes in IE6.
<ol class='outline'>
  <!-- topic 1 starts collapsed -->
  <li>Topic 1
    <ol>
        <li>subtopic a</li>
        <li>subtopic b</li>
    </ol>
  </li>
  <!-- topic 2 starts expanded -->
  <li class="expand">Topic 2
    <ol>
        <li>subtopic c</li>
        <li>subtopic d</li>
    </ol>
  </li>
</ol>

Make your images scale with the browser window size

For adaptive layout, use percentage widths on images, together with CSS positioning:

  • CSS positioning is simpler and more reliable than using tables
<div class="slide"> 
  <h1>Analysts - "Open standards programming will become 
  mainstream, focused around VoiceXML"</h1> 
  <!-- use CSS positioning and scaling for adaptive layout --> 
  <img src="trends.png" width="50%" style="float:left" 
   alt="projected growth of VoiceXML" /> 

  <blockquote style="float:right;width: 35%"> 
    VoiceXML will dominate the voice environment, due to its 
    flexibility and eventual multimodal capabilities 
  </blockquote><br clear="all" /> 
 
  <p style="text-align:center">Source Data Monitor, March 
  2004</p> 
</div> 

Incremental display of layered images

These can be marked up using CSS relative positioning, e.g.

<div class="incremental" 
 style="margin-left: 4em; position: relative"> 
  <img src="face1.gif" alt="face" 
   style="position: static; vertical-align: bottom"/> 
  <img src="face2.gif" alt="eyes" 
    style="position: absolute; left: 0; top: 0" /> 
  <img src="face3.gif" alt="nose" 
    style="position: absolute; left: 0; top: 0" /> 
  <img src="face4.gif" alt="mouth" 
    style="position: absolute; left: 0; top: 0" /> 
</div> 

You should also use transparent GIF images to avoid the IE/Win bug for alpha channel in PNG. A fix is expected in IE 7. A work around is available on skyzyx.com. My thanks to ACID2 for the graphics.

face eyes nose mouth

Include SVG Content

Inclusion of SVG content can be done using the object element, for example:

Indian Office logo

has been achieved by:

<object data="example.svg" type="image/svg+xml" 
  width="50%" height="10%" title="Indian Office logo"> 
    <img src="/edimage/album/slidy/bleu/example.png" width="50%" 
          alt="Indian Office logo" /> 
</object> 

This ensures that the enclosed png is displayed when the browser has no plugin installed or can't display SVG directly.

However, there are caveats, see the next slide!

Caveats with SVG+object

There is a serious bug in IE6+Adobe Plugin that can create problems. Namely:

  • IE6 makes a copy of the SVG file on the local disc when displaying it; but doesn't pass the original URI to the plugin
  • As a result relative references from within the SVG to external resources (scripts, CSS, images, other SVG) will break.
  • The work around is to use absolute references within your SVG.
  • This problem doesn't effect Mozilla/Firefox. No idea as to whether it will be fixed in IE7.

On Windows, the Adobe SVG plugin doesn't respect the CSS z-index property, and if used on backgrounds will always show through other content.

Some browsers (e.g. Opera 8) only support SVG Tiny, which doesn't support external style sheets or style elements within SVG. The work around is to set the properties via style attributes on the corresponding elements. In principle, browsers should honor the version attribute and fall back to the alternative within the object element if they don't support the version used by a given SVG file.

Are there any tools for downgrading SVG to SVG Tiny?

Additional Remarks

  • Slides are auto-numbered on the slide show footer
  • You can link into the middle of a slide show:
    • It works out which slide you want and hides the rest
    • You can even link between slides in the same slide show
    • Individual sides can be addressed with the syntax #(slide number),
      e.g. slide 3 of this presentation is: http://www.w3.org/Talks/Tools/Slidy#(3)
      • Previous versions of Slidy used square brackets, which will also work.
    • Note that the browser's back/forward buttons may not work as you might expect due to browser problems.
  • If your slides have more content than normal, use a meta element to request a smaller font
    • the following requests fonts to be one step smaller than the Slidy default for the current window width
    <meta name="font-size-adjustment" content="-1" /> 
    
  • You are encouraged to ensure your markup is valid. HTML Tidy can be used to find and correct common markup problems
  • The slide show script and style sheet can be used freely under W3C's software licensing and document use policies

Future Plans

Recent additions have included a table of contents, and a way to hide and reveal content in the spirit of outline lists. Further work is anticipated on the following:

  • Collecting a gallery of good looking slide themes
    • Opportunities for graphics designers!
  • Getting SVG Tiny to work on IE without need for SVG plugin
    • Using scripts to dynamically convert SVG Tiny to VML
  • Tweaks for working with IE7 when that becomes available
  • Alpha version of wysiwyg slide editor (see screenshot)
    • Using contentEditable when available, otherwise falling back to textarea and plain text conventions
    • Using XMLHttpRequest to dynamically reflect changes to server
  • Mechanism for remotely driving Slidy as part of distributed meetings
    • Using XMLHttpRequest to listen for navigation commands
    • Using VoIP for accompanying audio and teleconferencing
    • Synchronizing recorded spoken presentation with currently viewed slide
  • Filters from PowerPoint and Open Office

If you have comments, suggestions for improvements, or would like to volunteer your help with further work on Slidy, please contact Dave Raggett <dsr@w3.org>

Acknowledgements

  • My thanks to everyone who sent in bug reports and feature requests
  • Opera Software for implementing CSS @media projection and promoting the idea of using the Web for presentations with Opera Show
  • Tantek Çelik for his pioneering work on applying JavaScript for slide presentations on other browsers
  • Eric Meyer for taking this further with the excellent S5
  • W3C's slidemaker tool, which uses a perl script to split an html file up into one file per slide with navigation buttons
  • Early versions of HTML Tidy which supported a means to create presentations via splitting html files on h2 elements
  • Many sites with advice on JavaScript work arounds for browser variations
  • Microsoft for pioneering contentEditable and XMLHTTP which both provide tremendous opportunities for Web applications
  • Microsoft Office which provided the impetus for creating Slidy as a Web-based alternative to the ubiquitous use of PowerPoint

Note that while Slidy and S5 were developed independently, both support the use of the class values "slide" and "handout" for div elements. Slidy doesn't support the "layout" class featured in S5 and Opera Show, but instead provides a more flexible alternative with the "background" class, which enables different backgrounds on different slides.

#chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#">#chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#"> ]*>","","ALL"),150)#"">#chr(13)##chr(10)#">#chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#">#chr(13)##chr(10)#"> #chr(13)##chr(10)#"> #chr(13)##chr(10)#">