<?xml version="1.0" encoding="ISO-8859-1"?><opml version="1.0"><?xml-stylesheet type="text/xsl" href="outlineRedirect.xsl"?>	<head>		<title>presentation.xml</title>		<dateCreated>Mon, 02 Oct 2000 00:18:50 GMT</dateCreated>		<dateModified>Mon, 02 Oct 2000 00:47:50 GMT</dateModified>		<ownerName>Beta User</ownerName>		<ownerEmail></ownerEmail>		<expansionState>1,5,6,11,13,17,22,24,28,33,34,38,42,45,47</expansionState>		<vertScrollState>1</vertScrollState>		<windowTop>276</windowTop>		<windowLeft>545</windowLeft>		<windowBottom>679</windowBottom>		<windowRight>1002</windowRight>		</head>	<body>		<outline text="Introduction">			<outline text="Goals">				<outline text="Enough XSLT to get started"/>				<outline text="Getting XSLT running on your server"/>				<outline text="How to approach some canonical problems"/>				<outline text="Be ecumenical"/>				</outline>			<outline text="About instructor">				<outline text="Software engineer at 2Roam, Inc."/>				<outline text="Working with XSLT since January 2000"/>				<outline text="Five year's experience in web development"/>				</outline>			<outline text="Class Background">				<outline text="Platforms?"/>				<outline text="XSLT?"/>				<outline text="XML?"/>				</outline>			</outline>		<outline text="XSLT Review">			<outline text="The Canonical Transform: RSS">				<outline text="RSS (Rich Site Summary) is one of the most ubiquitious XML applications"/>				<outline text="Source File" type="link" url="http://www.xmlhack.com/rss.php"/>				<outline text="The Transform" type="link" url="source/rss/RSS91.xsl"/>				</outline>			<outline text="Some things to remember">				<outline text="Variables">					<outline text="They aren't."/>					<outline text="Once set, they cannot be updated."/>					<outline text="Instead, pass through as a parameter."/>					<outline text="Example" type="link" url="source/variables/variables.xsl"/>					</outline>				<outline text="Variables aren't limited to strings and numbers"/>				</outline>			</outline>		<outline text="Using XSLT to make a presentation from an outline">			<outline text="Instead of Powerpoint slides, it would be a good demonstration for a class on practical XSLT to show how XSLT is used to create a presentation."/>			<outline text="Goals">				<outline text="Creating HTML output"/>				<outline text="How to use recursion"/>				<outline text="How to use Xalan's redirect extension"/>				</outline>			<outline text="Outline Processing Markup Language">				<outline text="Internal file format used by the Radio Userland application"/>				<outline text="Created by Dave Winer: developer of More, Think Tank, and Frontier."/>				<outline text="http://radiodiscuss.userland.com/opmlSpec" type="link" url="http://radiodiscuss.userland.com/opmlSpec"/>				<outline text="Outline Element Contents">					<outline text="Text attribute"/>					<outline text="Type attribute"/>					<outline text="Outline elements"/>					<outline text="The outline" type="link" url="presentation.xml"/>					</outline>				</outline>			<outline text="Want to display while maintaining the hiearchical structure">				<outline text="Use recursion"/>				<outline text="Two states">					<outline text="The outline has child elements"/>					<outline text="The outline has no child elements"/>					</outline>				<outline text="The style sheet" type="link" url="source/outline/outline.xsl"/>				</outline>			<outline text="Want to break document up">				<outline text="Use the Xalan redirect extension function"/>				<outline text="At each major section, redirect output to a new file"/>				<outline text="Use the position() function to determine the file name"/>				<outline text="The style sheet" type="link" url="source/outline/outlineRedirect.xsl"/>				</outline>			</outline>		<outline text="Getting XSLT running on your server">			<outline text="Direct Approaches">				<outline text="Request XML from the server and get HTML/WML/HDML/etc. in return."/>				<outline text="HTTP GET http://www.server.com/document.xml and the server does the Right Thing, applying the appropriate XSL transform."/>				<outline text="We want a service that provides a transparent transformation of the data."/>				<outline text="Advantages">					<outline text="Easy to deploy"/>					<outline text="Programming focus shifts from scripting/compiled languages to XSLT"/>					<outline text="Off the shelf systems like Cocoon and XSLISAPI.dll cache compiled style sheets"/>					</outline>				<outline text="Disadvanges">					<outline text="You may only use 20% of the code base"/>					<outline text="May not handle non-trivial applications"/>					</outline>				</outline>			<outline text="Application Centric Approaches">				<outline text="Integrating XSLT into our own applications"/>				<outline text="Advantages">					<outline text="More control"/>					<outline text="Use only the code you need"/>					<outline text="Plenty of components to build systems"/>					</outline>				<outline text="Disadvangates">					<outline text="More original code to write"/>					</outline>				</outline>			</outline>		<outline text="Implementing the Direct Approach">			<outline text="The server examines the document requested and depending on its location, either looks up the appropriate style sheet to apply, applies some default sheet, and returns the transformed XML."/>			<outline text="Off-the-shelf Kits">				<outline text="Apache Cocoon">					<outline text="http://xml.apache.org/cocoon/" type="link" url="http://xml.apache.org/cocoon/"/>					<outline text="Cocoon is a servlet which plugs into any 2.0 servlet architecture"/>					</outline>				<outline text="AxKit">					<outline text="http://axkit.org" type="link" url="http://axkit.org/"/>					<outline text="AxKit is a Perl module for use with ModPerl under Apache"/>					<outline text="Supports Sablotron XSLT processor's Perl wrapper"/>					<outline text="And Perl XPath module"/>					</outline>				<outline text="XSLISAPI.dll">					<outline text="http://msdn.microsoft.com/Downloads/webtechnology/xml/xslisapi.asp" type="link" url="http://msdn.microsoft.com/Downloads/webtechnology/xml/xslisapi.asp"/>					<outline text="XSLISAPI installs as a filter in your management console"/>					</outline>				</outline>			<outline text="Setting Up">				<outline text="Specifying the path on the server to deliver docs from depends on the kit you use">					<outline text="XSLISAPI.dll -- the filter will reroute any XML file"/>					<outline text="Cocoon -- you specify the server paths for which the servlet will respond"/>					</outline>				<outline text="Specifying a style sheet">					<outline text="An XML processing instruction of the form: &lt;?xml-stylesheet type=&quot;text/xsl&quot; href=&quot;somestylesheet.xsl&quot;?&gt; is the canonical method for associating an XSLT style sheet with a document. All the server-side direct translation approaches use this 'hook.' "/>					<outline text="http://web3.w3.org/TR/xml-stylesheet/" type="link" url="http://web3.w3.org/TR/xml-stylesheet/"/>					</outline>				</outline>			<outline text="Additional Features: Microsoft XSLISAPI">				<outline text="Microsoft's XSLISAPI supports an additional value in the style sheet processing directive: ">					<outline text="&lt;?xml-stylesheet type=&quot;text/xsl&quot; server-config=&quot;myConfig.xml&quot; href=&quot;clientSS.xsl&quot; ?&gt;"/>					</outline>				<outline text="Where myConfig.xml is a file containing directives of two sorts:">					<outline text="Doctype -- governs the style sheet applied on the basis of the document's doctype"/>					<outline text="Device -- governs the style sheet applied on the basis of the user agent making the request."/>					<outline text="example code" type="link" url="xslisapi.html"/>					</outline>				<outline text="It can also chain style sheets together, and allows you to use Parsed ASP pages to generate XML dynamically."/>				<outline text="example code" type="link" url="xslisapi.html"/>				<outline text="However, before you use this as a general solution, you should be sure you are running the most recent version of the MSXML dynamic link library. "/>				<outline text="Suggested Readings">					<outline text="Microsoft Documentation"/>					<outline text="http://msdn.microsoft.com/Downloads/webtechnology/xml/xslisapi.asp" type="link" url="http://msdn.microsoft.com/Downloads/webtechnology/xml/xslisapi.asp"/>					<outline text="The 'unofficial MSXML faq'"/>					<outline text="http://www.netcrucible.com/xslt/msxml-faq.htm" type="link" url="http://www.netcrucible.com/xslt/msxml-faq.htm"/>					</outline>				</outline>			<outline text="Additional Features: Cocoon">				<outline text="Cocoon supports a similar set of features. The cocoon.properties file allows you to set by device style sheets to apply."/>				<outline text="Cocoon supports a mechanism to pass parameters from the request."/>				<outline text="Tiptree Award Example">					<outline text="Source XML file lists works published in 1999 considered for the Tiptree Award. They may fall into three groups: the winner(s), the short list, and the long list"/>					<outline text="works.xml" type="link" url="source/tiptree/works.xml"/>					<outline text="The style sheet for this XML file has a top level parameter corresponding to the list in which we're interested."/>					<outline text="works.xsl" type="link" url="source/tiptree/works.xsl"/>					<outline text="It's then possible to construct a simple web interface to the lists."/>					<outline text="http://honeybomb.dhs.org:81/cocoon/tiptree/index.html" type="link" url="http://honeybomb.dhs.org:81/cocoon/tiptree/index.html"/>					</outline>				<outline text="Cocoon also supports Cold Fusion-esque tag libraries. But that's another course."/>				</outline>			</outline>		<outline text="Implementing the Application Centric Approach">			<outline text="You build the XSLT transformation capacity into your application."/>			<outline text="Java: Apache Xalan">				<outline text="There are several XSLT processors written in Java. "/>				<outline text="http://xml.apache.org/xalan" type="link" url="http://xml.apache.org/xalan"/>				</outline>			<outline text="ASP: MSXML.dll">				<outline text="The September release of the Microsoft parser is supposed to bring it in compliance with the November 1999 W3C recommendation."/>				<outline text="It also includes a server-safe component of the XMLHTTP object."/>				<outline text="http://msdn.microsoft.com/xml/general/msxmlprev.asp" type="link" url="http://msdn.microsoft.com/xml/general/msxmlprev.asp"/>				</outline>			<outline text="PHP">				<outline text="PHP 4.0 has both SAX (via XT) and DOM (via Gnome) parsers"/>				<outline text="XSLT functions are available through add-ins">					<outline text="Stephen Li's PHP Sablotron extension" type="link" url="http://p4lib.hk-go.to/"/>					<outline text="Wrapper classes for Sablotron extension functions" type="link" url="http://www.whump.com/www/phpSablot.html"/>					</outline>				<outline text="The CVS tree at php.net has builds which integrate Sablotron."/>				<outline text="A php xpath module has been announced, but is in alpha status">					<outline text="http://www.subpop.com/~dietricha" type="link" url="http://www.subpop.com/~dietricha"/>					</outline>				</outline>			</outline>			<outline text="Headline Aggregation in PHP">			<outline text="This is an example of a 'classic' XML application. Read RSS files from several sources and render them onto one page."/>			<outline text="Goals">				<outline text="Demonstrate simple XSL application"/>				<outline text="Importing data from other sources"/>				</outline>			<outline text="http://honeybomb.dhs.org/demo.php" type="link" url="http://honeybomb.dhs.org/demo.php"/>			<outline text="Sablotron Example Code"  type="link" url="phpdemo.html"/>			</outline>		<outline text="Compiling a Style Sheet: ASP">			<outline text="Parsing and compiling an XSL style sheet is expensive. We'd like to be able to load a sheet once and use it repeatedly."/>			<outline text="Goals">				<outline text="Doing a transform using MSXML.dll and ASP"/>				<outline text="Compiling a style sheet ahead of time"/>				</outline>						<outline text="On 2Roam's web site XML data's used in two places, the front page, and the list of press releases."/>				<outline text="Both are generated from the same headlines file."/>				<outline text="The code" type="link" url="asp.html"/>			</outline>		<outline text="Compiling a Style Sheet: Java">			<outline text="Use eGroups RSS interface to get a list of recent posts to a hosted group"/>			<outline text="Goals">				<outline text="Doing a transform in Java"/>				<outline text="Compiling a style sheet ahead of time"/>				<outline text="Passing parameters"/>				</outline>			<outline text="http://honeybomb.dhs.org:81/egroups/RSS?group=syndication" type="link" url="http://honeybomb.dhs.org:81/egroups/RSS?group=syndication"/>			<outline text="Source Files">				<outline text="transformer.java" type="link" url="source/egroups/transformer.java"/>				<outline text="egroupsRequest.java" type="link" url="source/egroups/egroupsRequest.java"/>				</outline>			</outline>		</body>	</opml>