<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by Erik Wilde (swiss federal institute of technology) -->
<!-- $Id: xslidy.xsd 208 2006-12-07 07:24:20Z dret $ -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xslidy="http://dret.net/xmlns/xslidy/1" targetNamespace="http://dret.net/xmlns/xslidy/1" elementFormDefault="qualified">
	<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
	<xs:element name="xslidy">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:group ref="xslidy:titleGroup"/>
					<xs:group ref="xslidy:topTitleGroup"/>
					<xs:element name="index">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="category" minOccurs="0" maxOccurs="unbounded">
									<xs:complexType>
										<xs:attribute name="element"/>
										<xs:attribute name="class"/>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
							<xs:attribute name="name" use="required">
								<xs:annotation>
									<xs:documentation>The name of the index file to be generated.</xs:documentation>
								</xs:annotation>
								<xs:simpleType>
									<xs:list itemType="xs:token"/>
								</xs:simpleType>
							</xs:attribute>
						</xs:complexType>
					</xs:element>
				</xs:choice>
				<xs:element name="presentation" type="xslidy:presentationType" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute ref="xml:lang"/>
			<xs:attribute name="version" default="0.5">
				<xs:annotation>
					<xs:documentation>This indicates the version of XSLidy that has been used when preparing the document. documenting the version makes it easier to detect problems caused by versioning issues.</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="\d+\.\d+"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
		<xs:unique name="partIDunique">
			<xs:selector xpath="presentation | part | slide"/>
			<xs:field xpath="@id"/>
		</xs:unique>
		<xs:keyref name="linkRef" refer="xslidy:partIDunique">
			<xs:selector xpath="link"/>
			<xs:field xpath="@href"/>
		</xs:keyref>
	</xs:element>
	<xs:group name="presentationGroup">
		<xs:choice>
			<xs:element name="part">
				<xs:complexType>
					<xs:sequence>
						<xs:group ref="xslidy:titleGroup" minOccurs="0" maxOccurs="unbounded"/>
						<xs:group ref="xslidy:presentationGroup" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="id" type="xs:token"/>
					<xs:attribute name="outline" default="yes">
						<xs:simpleType>
							<xs:restriction base="xs:token">
								<xs:enumeration value="yes"/>
								<xs:enumeration value="no"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element ref="xslidy:slide"/>
		</xs:choice>
	</xs:group>
	<xs:group name="titleGroup">
		<xs:choice>
			<xs:element ref="xslidy:title"/>
			<xs:element ref="xslidy:author"/>
			<xs:element ref="xslidy:affiliation"/>
			<xs:element ref="xslidy:date"/>
			<xs:element ref="xslidy:copyright"/>
			<xs:element ref="xslidy:location"/>
			<xs:element ref="xslidy:occasion"/>
		</xs:choice>
	</xs:group>
	<xs:group name="topTitleGroup">
		<xs:choice>
			<xs:element ref="xslidy:layout"/>
			<xs:element ref="xslidy:toc"/>
			<xs:element ref="xslidy:style"/>
			<xs:element ref="xslidy:script"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="presentationType">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:group ref="xslidy:titleGroup"/>
				<xs:group ref="xslidy:topTitleGroup"/>
			</xs:choice>
			<xs:group ref="xslidy:presentationGroup" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute ref="xml:lang"/>
		<xs:attribute name="id" type="xs:token"/>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>The name of the presentation, which will be used for the file name of the generated slidy html presentation. If there is no name, the @id will be used. If there also i no @id, a file name will be generated.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="cover" type="xs:token">
			<xs:annotation>
				<xs:documentation>If this attribute is set, it must point to an existing cover slide (as found in a layout/slide[@cover] element), which is then used as the cover slide for this presentation.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="external" type="xs:anyURI">
			<xs:annotation>
				<xs:documentation>Specifies the URI where the contents of an external presentation can be found. If this attribute is present, the @name and @cover attributes must be absent.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="titleType" mixed="true">
		<xs:sequence minOccurs="0" maxOccurs="unbounded">
			<xs:any namespace="##any" processContents="lax"/>
		</xs:sequence>
		<xs:attribute name="short" type="xs:string"/>
		<xs:attribute name="level">
			<xs:annotation>
				<xs:documentation>The default value for this attribute depends on where the element occurs in the context of an XSLidy presentation. Within layout elements, the default is "presentation" and anything other than "xslidy" will be mapped to "presentation". Elsewehere, the default is "slide" and all  values are accepted.</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:token">
					<xs:enumeration value="xslidy"/>
					<xs:enumeration value="presentation"/>
					<xs:enumeration value="part"/>
					<xs:enumeration value="slide"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="form" default="full">
			<xs:simpleType>
				<xs:restriction base="xs:token">
					<xs:enumeration value="full"/>
					<xs:enumeration value="text"/>
					<xs:enumeration value="short"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="author" type="xslidy:titleType"/>
	<xs:element name="affiliation" type="xslidy:titleType"/>
	<xs:element name="date">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="xslidy:titleType">
					<xs:attribute name="language">
						<xs:annotation>
							<xs:documentation>This is a date formatting attribute accepting the same values as the language attribute of XSLT 2.0's format-date() function.</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="calendar">
						<xs:annotation>
							<xs:documentation>This is a date formatting attribute accepting the same values as the calendar attribute of XSLT 2.0's format-date() function.</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="country">
						<xs:annotation>
							<xs:documentation>This is a date formatting attribute accepting the same values as the country attribute of XSLT 2.0's format-date() function.</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="copyright" type="xslidy:titleType"/>
	<xs:element name="title" type="xslidy:titleType"/>
	<xs:element name="location" type="xslidy:titleType"/>
	<xs:element name="occasion" type="xslidy:titleType"/>
	<xs:element name="style">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="type" type="xs:string" use="required"/>
					<xs:attribute name="src">
						<xs:annotation>
							<xs:documentation>This allows to use style in the same way as script for referencing external stylsheets. if a src attribute is present, the style element will be mapped to a &lt;link rel="stylesheet" .../> element.</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="media" type="xs:string"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="script">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="type" type="xs:string" use="required"/>
					<xs:attribute name="src" type="xs:anyURI"/>
					<xs:attribute name="charset" type="xs:string"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="ptitle" type="xslidy:titleType"/>
	<xs:element name="layout" type="xslidy:layoutType"/>
	<xs:complexType name="layoutType">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element ref="xslidy:class"/>
			<xs:element ref="xslidy:slide" minOccurs="0"/>
		</xs:choice>
		<xs:attribute name="src" type="xs:anyURI"/>
	</xs:complexType>
	<xs:element name="class" type="xslidy:classType"/>
	<xs:complexType name="classType">
		<xs:sequence minOccurs="0" maxOccurs="unbounded">
			<xs:any namespace="##any" processContents="lax"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:token"/>
	</xs:complexType>
	<xs:element name="list">
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:any namespace="##any" processContents="lax"/>
			</xs:sequence>
			<xs:attribute name="type" default="ul">
				<xs:simpleType>
					<xs:restriction base="xs:token">
						<xs:enumeration value="ul"/>
						<xs:enumeration value="ol"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="listing">
		<xs:complexType>
			<xs:attribute name="src" type="xs:anyURI" use="required"/>
			<xs:attribute name="class">
				<xs:simpleType>
					<xs:list itemType="xs:token"/>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="href">
				<xs:annotation>
					<xs:documentation>Specifies the target of the location the listing should link to. If set to the empty string, the listing will link to nothing (not even the source of the listing).</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:list itemType="xs:anyURI"/>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="lines">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="\d+\-\d+"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="encoding" type="xs:token" default="UTF-8"/>
			<xs:attribute name="title"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="for-each-presentation">
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:any namespace="##any" processContents="lax"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="presentation-link">
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:any namespace="##any" processContents="lax"/>
			</xs:sequence>
			<xs:attribute name="element" type="xs:token" default="a"/>
			<xs:attribute name="attribute" type="xs:token" default="href"/>
			<xs:attribute name="prefix" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="slide">
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:any namespace="##any" processContents="lax"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:token"/>
			<xs:attribute name="class">
				<xs:annotation>
					<xs:documentation>If a slide should have a class other than the default class, this has to be specified in the class attribute. The attribute contains a list of values, for each value there must be a corresponding class (as a xslidy class element and/or in the css code).</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:list itemType="xs:token"/>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="cover" type="xs:token">
				<xs:annotation>
					<xs:documentation>Only allowed in layout/slide elements. Used to identify the slide as a cover slide which is then referenced in presentation/@cover.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="toc">
		<xs:complexType mixed="true">
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:any namespace="##any" processContents="lax"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:token">
				<xs:annotation>
					<xs:documentation>The name of the toc file to be generated. This must be present for xslidy/toc, and must not be present for presentation/toc.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="id" type="xs:token"/>
		</xs:complexType>
	</xs:element>
</xs:schema>

