<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="Slides2HplusT.xsl"?>
<slideset xmlns:t="urn:schemas-microsoft-com:time">
	<info>
		<title>XHTML+SMIL, SVG and SVG-Animation Generation with XSLT</title>
		<subtitle></subtitle>
		<event>
			<name>SMIL Europe</name>
			<location>Paris, France</location>
		</event>
		<author>
			<name>Patrick Schmitz</name>
			<email>cogit@ludicrum.org</email>
		</author>
		<update>10:00 AM PT Feb 6, 2003</update>
		<summary>Title slide for talk at SMIL Europe 2003</summary>
		<background-img id="bg1">Waterman_destiny-l2.jpg</background-img>
		<background-img id="bg3">clocks2.gif</background-img>
		<background-img id="bg2">bandh3.jpg</background-img>
	</info>

	<style>
	  .demoFrame { 
		 position:absolute; top:10%; left:0%; width:90%; height:70%; z-index:5; 
		 }

	  .demoButtonSet { 
		 position:absolute; bottom:5%; left:0%; z-index:10; 
		 }

	  #simpleBounceFrame { 
		 position:absolute; top:0%; left:-50px; width:840px; height:480px; z-index:5; 
		 }

	  #OrbitFrame { 
		 position:absolute; top:0%; left:0%; width:100%; height:100%; z-index:5; 
		 }

	  #demoSrc{ 
		 position:absolute; top:15%; left:0%; width:90%; z-index:5; 
		 padding:10px;
		 background-color:black; font-size:1.6em; font-weight:bold; color:cyan;
		 }

	  #cycleDemoSrc{ 
		 position:absolute; top:15%; left:0%; width:90%; z-index:5; 
		 padding:10px;
		 background-color:black; font-size:1.6em; font-weight:bold; color:cyan;
		 }

	  #cycleDemo{ 
		 position:absolute; top:10%; left:0%; width:90%; height:70%; z-index:5; 
		 background-color:white; 
		 }

	  #animDemoSrc{ 
		 position:absolute; top:15%; left:-20px; width:90%; z-index:5; 
		 padding:10px;
		 background-color:black; font-size:1em; font-weight:bold; color:cyan;
		 }

	  #animDemo{ 
		 position:absolute; top:10%; left:0%; width:100%; z-index:5; 
		 background-color:white; font-family:Times New Roman; 
		 }

	  #simpleDemoSrc{ 
		 position:absolute; top:0%; left:-20px; width:90%; z-index:5; 
		 padding:10px;
		 background-color:black; font-size:1em; font-weight:bold; color:cyan;
		 }

	  #simpleDemo2{ 
		 position:absolute; top:10%; left:0%; width:100%; height:50%; z-index:5; 
		 padding:10px;
		 background-color:white; font-family:Times New Roman; font-size:1.5em; color:black;
		 }

	  div.cycleDemo{ 
		 position:relative; 
		 }

	  #cycleDemo h2 { 
		 color:black; 
		 }

	  .big { position: absolute; font-family:Comic Sans MS; font-weight:bold; font-size:72; }

	  input.animCtrlButton { 
		 z-index:10; 
		 }
	</style>

	<slide>
        <title>Introduction</title>
        <pointset>
			<point>Not a general XSLT tutorial 
				<subpoints>
					<point>Specific to timing and animation</point>
				</subpoints>
			</point>
			<point>Broad range of use-cases and approaches
				<subpoints>
					<point>trivial effects: hover, transitions</point>
					<point>slideshows like this one</point>
					<point>synchronized presentations</point>
				</subpoints>
			</point>
			<point>IE6 and SVG viewers assumed target
				<subpoints>
					<point>I use mostly client-side XSLT, but most of 
						talk applies to server side as well
					</point>
				</subpoints>
			</point>
		</pointset>
		<notes>Assume some knowledge of involved technologies. Can ask, but people really
				need to know basics of SMIL, SVG and XSLT.<br/>
				Can mention that this is a slide show example, but perhaps want to
				wait until get to that slide.
		</notes>
    </slide>

	<slide>	
		<title>Motivation and Applications</title>
        <pointset>
			<point>Multiple output formats
				<subpoints>
					<point>For different rendering agents</point>
					<point>For different cases: screen versus print</point>
					<point>For adaptation to users or content</point>
				</subpoints>
			</point>
			<point>Data-driven content (of course)</point>
			<point>Templates and parameterization</point>
		</pointset>
		<notes>
			Just for quick discussion - do not get bogged down.
			Can mention research work with Peter and Simon on Templates and P14N
		</notes>
	</slide>

	<slide>	
		<title>Basic example - these slides</title>
        <pointset>
			<point>Trivial slideset schema
				<subpoints>
					<point>One stylesheet produces this presentation in XHTML+SMIL</point>
					<point>Another produced the handouts</point>
					<point>Others can produce SVG, static HTML etc.</point>
				</subpoints>
			</point>
			<point>Much cheaper (smaller, simpler) than PowerPoint</point>
			<point>No WYSIWYG editor 
				<span class="time" begin="2s" style="font-family:Wingdings;color:#0000FF">L</span>
			</point>
		</pointset>
	</slide>

	<slide>	
		<title>Main issues to consider</title>
        <pointset>
			<point>Target language support for inline timing (XHTML+SMIL versus SVG)</point>
			<point>Pure XML (XHTML or SVG) output as well as output plus script/stylesheets, etc.
				<subpoints>
					<point>Pure XML easier to use in data islands</point>
					<point>Full document output simpler for ancillary files</point>
				</subpoints>
			</point>
			<point>Authoring and process model for timing and animation</point>
		</pointset>
		<notes>
			Can hint at some of the issues, but take care not to talk about Nervana work.
			The real point is that if you need to add script or external CSS, data islands
			can be a pain - need to work around with script to inject stylesheets, into parent etc.
			OTOH, full doc makes it hard to switch and swap views within a framework (nicer not to
			refresh the boilerplate).
			Next slide talks about process model so just transition...
		</notes>
	</slide>


	<slide>	
		<title>Processing model: Styled Timing</title>
        <pointset>
			<point>Apply animations, transitions, consistent durations, etc. like style</point>
			<point>Can use static expressions as well, with some tools</point>
			<point>Good for presentation-class effects, but not for broad synchronization</point>
			<point>Prototype in an HTML editor and then convert to XSLT</point>
		</pointset>
		<notes>
			Describe some of the use cases for this approach. Emphasize the comparison to styling.
			Note that can process elements with addition timing markup - just setting consistent
			duration, e.g.
		</notes>
	</slide>

	<slide>	
		<title>Processing model: Template</title>
        <pointset>
			<point>Synthesize content from a pattern with more flexibility than symbol/use
				<subpoints>
					<point>SVG does not allow animation of instances</point>
					<point>No way to vary animations within instances</point>
					<point>For XHTML+SMIL, can generate animated tables, etc.</point>
				</subpoints>
			</point>
			<point>Needed for varying animation and timing on instances</point>
			<point>Parameterization really needed to make this useful</point>
		</pointset>
		<notes>
			Template-based content is what XSLT is all about. But can make the source xml effectively
			invoke a content-generation template with parameters.
			When calling from script or code, can directly use parameters to XSLT to achieve 
			P14N on instatiation.
			Note that script generation of content common in HTML world (doc.write).
		</notes>
	</slide>


	<slide>	
		<title>Processing model: Timesheet</title>
        <pointset>
			<point>Describe timing on content, and impose complete control
				<subpoints>
					<point>Easy way to produce slide sequence like these</point>
					<point>Convert MMDB query results into a synchronized presentation</point>
					<point>Simplifies cases like exclusive menus, popups, etc.</point>
				</subpoints>
			</point>
			<point>Adapt layout transformations to add timing, e.g. for zooming table
				<subpoints>
					<point>Facilitates better navigation and orientation models</point>
				</subpoints>
			</point>
		</pointset>
		<notes>
			Reiterate this application and approach
			Mention Cuypers as a case for generated presentations
			Exclusive menus: talked about this in the morning. Can say that author 
				will put *semantics* of interrupt or layering model in XML, and then
				stylesheet can deal with applying the timing.
			Talk about problem of scaling script or other solutions for things like
				orientation outline.
		</notes>
	</slide>

	<slide>	
		<title>TNT #1 - Generating XHTML+SMIL for IE6</title>
        <pointset>
			<point>Namespace and behavior binding
				<subpoints>
					<point>Namespace and extension prefixes in stylesheet<br/>
						<code style="font-size:0.75em">
							<![CDATA[xmlns:t="time" extension-element-prefixes="t"]]></code>
					</point>
					<point>Namespace on output html element<br/>
						<code style="font-size:0.75em">
							<![CDATA[<html xmlns:t="urn:schemas-microsoft-com:time">]]></code>
					</point>
					<point>When using data-island model, do not bind time behavior with IMPORT</point>
				</subpoints>
			</point>
		</pointset>
		<notes>
			Talk about the fudge on the namespaces and imports
		</notes>
	</slide>

	<slide>	
		<title>TNT #2 - 2 Bugs and a hint</title>
        <pointset>
			<point>Event-base defaults do not work in IE
				<subpoints>
					<point>use explicit targets
					(<code style="font-size:1em">generate-id()</code>)</point>
				</subpoints>
			</point>
			<point>No negative begin times in ASV3
				<subpoints>
					<point>Generate 2 animations (sometimes)</point>
				</subpoints>
			</point>
			<point>Watch origins with <code style="font-size:0.9em">animateTransform</code>
				<subpoints>
					<point>E.g. a bunch of rotating logos</point>
					<point>Add the extra SVG to simplify the transforms
						<subpoints>
							<point>Position at 0, rotate and translate</point>
							<point>Add the extra SVG to move origin</point>
						</subpoints>
			</point>
				</subpoints>
			</point>
		</pointset>
		<notes>
			Talk about sync-arcs and the problems of ids in general - and note that can synthesize ids with
				prefix or suffix to a unique-id (for regular dependents/animation elements, etc.).
			Same principles apply to proxies (to keep naming a little more sane).
		</notes>
	</slide>

	<slide>	
		<title>TNT #3 - Authoring issues</title>
        <pointset>
			<point>Hand-editing XML not as nice as WYSIWYG
				<subpoints>
					<point>Professional xml tools like xmlspy can help</point>
					<point>PowerPoint plug-in to generate XHTML+SMIL needed (good research project!)</point>
				</subpoints>
			</point>
			<point>Would be interesting to try inverse XSLT transform tools</point>
			<point>Stylesheets should allow inline timing</point>
			<point>Use CSS (not HTML) for presentation</point>
		</pointset>
		<notes>
			Mention Nabil's work on incremental editing with XHTML inversion
			Talk about why need to allow inline work (template gets working and then gets reused,
				but authors will need escaping mechanism or additinal tools.
				Mention "extra" nodes in slideset
			Pound the drum for "Separation of Content and Presentation"
		</notes>
	</slide>

	<slide>	
		<title>TNT #4 - See TNT's 1-4 from my XHTML+SMIL talk</title>
        <pointset>
			<point>Don't overdo animation - it reduces comprehension</point>
			<point>Don't scale or rotate text (or do it fast!)</point>
			<point>Use motion for transitions, etc.</point>
			<point>Use color animations - cheaper than filters</point>
		</pointset>
		<notes>
			Just whip through these
		</notes>
	</slide>


	<slide>	
		<title>TNT #5 - Combining XHTML+SMIL and SVG</title>
        <pointset>
			<point>Animate SVG island in XHTML+SMIL
				<subpoints>
					<point>E.g. use SVG in place of an image</point>
					<point>Do motion, transitions, etc. in XHTML+SMIL</point>
					<point>Allow margins to deal with drawing bugs</point>
				</subpoints>
			</point>
			<point>In IE6 with ASV3, can target XHTML+SMIL animations at svg elements
				<subpoints>
					<point>Coordinate SVG effects with host document</point>
					<point>Leverage time manipulations support</point>
				</subpoints>
			</point>
			<point>Take care with namespaces</point>
		</pointset>
		<notes>
			Mention bugs in drawing - e.g. transitions and opacity-filters
			Use for TimeManips: Can 'fix' color animations with accel/decel
		</notes>
	</slide>

	<slide>	
		<title>TNT #6a - Combining XHTML+SMIL and SVG <em>Timing</em></title>
        <pointset>
			<point>Coordinating the timelines - approach 1
				<subpoints>
					<point>Define SVG animations relative to a dummy</point>
					<point>Begin dummy when the SVG element begins in the parent doc<br/>
						<code style="font-size:0.8em">svgEl.window.document.getElementById('dummy').beginElement();</code>
					</point>
				</subpoints>
			</point>
		</pointset>
		<notes>
			Qualify as current experiments.
			This is like the iframe bridge described in my other talk
		</notes>
	</slide>

	<slide>	
		<title>TNT #6b - Combining XHTML+SMIL and SVG <em>Timing</em></title>
        <pointset>
			<point>Coordinating the timelines - approach 2
				<subpoints>
					<point>Hide SVG element in parent doc</point>
					<point><code style="font-size:1em">pauseAnimations</code> and <code style="font-size:1em">setCurrentTime(0)</code></point>
					<point><code style="font-size:1em">unpauseAnimations</code> when the SVG element begins in the parent doc</point>
				</subpoints>
			</point>
		</pointset>
		<notes>
			Qualify as current experiments.
			This is like the iframe bridge described in my other talk
		</notes>
	</slide>

	<slide>	
		<title>TNT #7 - Performance issues</title>
        <pointset>
			<point>Client side transforms
				<subpoints>
					<point>For simple cases (e.g. client-side sorting), cache output HTML</point>
					<point>For complex or longer documents, consider model that allows incremental
						(local) transformation and insertion.</point>
				</subpoints>
			</point>
			<point>Client and server - MSXML
				<subpoints>
					<point>Cache stylesheets <code>(MSXML::IXSLTemplate)</code></point>
				</subpoints>
			</point>
		</pointset>
		<notes>
			For incremental tip, mention something like a side-bar display that supports variants,
				and then just reprocess in that mode and inject into HTML, rather than reprocessing whole 
				page (or whole data-island output).
			Mention that IXSLTemplate and IXSLProcessor
		</notes>
	</slide>

	<slide>
        <title>Thanks for coming!</title>
    </slide>

</slideset>
