<!--
	Copyright (c) 2007 Martin Junghans, Dirk Riehle, SAP Labs LLC. 
	Taken from: Martin Junghans, Dirk Riehle, and Umit Yalcinalp. 
	An XML interchange format for Wiki Creole 1.0 
	In ACM SIGWEB Newsletter, Volume 2007, 
	Issue Winter (Winter 2007), Article No. 5. 
-->

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://www.wikicreole.org/ns/creole"
	targetNamespace="http://www.wikicreole.org/ns/creole"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified">

	<xsd:element name="wiki">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:choice minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="wikipage">
						<xsd:complexType>
							<xsd:choice minOccurs="0" maxOccurs="unbounded">
								<xsd:element name="textparagraph" type="textType"/>
								<xsd:element name="table" type="tableType"/>
								<xsd:element name="unorderedlist" type="unorderedlistType"/>
								<xsd:element name="orderedlist" type="orderedlistType"/>
								<xsd:element name="nowikiblock" type="xsd:string"/>
								<xsd:element name="horizontalrule"/>
								<xsd:element name="heading">
									<xsd:complexType mixed="true">
										<xsd:attribute name="level" use="required"/>
									</xsd:complexType>
								</xsd:element>
							</xsd:choice>
							<xsd:attribute name="name" use="required"/>
						</xsd:complexType>
					</xsd:element>
				</xsd:choice>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>

	<xsd:complexType name="unorderedlistType" mixed="true">
		<xsd:choice minOccurs="1" maxOccurs="unbounded">
			<xsd:element name="listelem" type="textType"/>
			<xsd:element name="unorderedlist" type="unorderedlistType"/>
			<xsd:element name="orderedlist" type="orderedlistType"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="orderedlistType" mixed="true">
		<xsd:choice minOccurs="1" maxOccurs="unbounded">
			<xsd:element name="listelem" type="textType"/>
			<xsd:element name="unorderedlist" type="unorderedlistType"/>
			<xsd:element name="orderedlist" type="orderedlistType"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="tableType">
		<xsd:sequence>
			<xsd:element name="tablerow" minOccurs="1" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="tablecell" minOccurs="1" maxOccurs="unbounded">
							<xsd:complexType mixed="true">
								<xsd:choice minOccurs="0" maxOccurs="unbounded">
									<xsd:element name="bold" type="boldtextType"/>
									<xsd:element name="italic" type="italictextType"/>
									<xsd:element name="image" type="imageType"/>
									<xsd:element name="link" type="linkType"/>
									<xsd:element name="nowiki" type="xsd:string"/>
									<xsd:element name="textlinebreak"/>
								</xsd:choice>
								<xsd:attribute name="header" type="xsd:boolean" use="required"/>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="boldtextType" mixed="true">
		<xsd:choice minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="italic" type="bolditalictextType"/>
			<xsd:element name="link" type="linkType"/>
			<xsd:element name="nowiki" type="xsd:string"/>
			<xsd:element name="image" type="imageType"/>
			<xsd:element name="textlinebreak"/>
			<xsd:element name="extension" type="extensionType"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="italictextType" mixed="true">
		<xsd:choice minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="bold" type="bolditalictextType"/>
			<xsd:element name="link" type="linkType"/>
			<xsd:element name="nowiki" type="xsd:string"/>
			<xsd:element name="image" type="imageType"/>
			<xsd:element name="textlinebreak"/>
			<xsd:element name="extension" type="extensionType"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="bolditalictextType" mixed="true">
		<xsd:choice minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="link" type="linkType"/>
			<xsd:element name="nowiki" type="xsd:string"/>
			<xsd:element name="image" type="imageType"/>
			<xsd:element name="textlinebreak"/>
			<xsd:element name="extension" type="extensionType"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="linkType">
		<xsd:sequence>
			<xsd:element name="uri" type="xsd:string"/>
			<xsd:element name="description" type="simpletextType" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="imageType">
		<xsd:sequence>
			<xsd:element name="uri" type="xsd:string"/>
			<xsd:element name="alternative" type="simpletextType" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="textType" mixed="true">
		<xsd:choice minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="bold" type="boldtextType"/>
			<xsd:element name="italic" type="italictextType"/>
			<xsd:element name="textlinebreak"/>
			<xsd:element name="link" type="linkType"/>
			<xsd:element name="nowiki" type="xsd:string"/>
			<xsd:element name="image" type="imageType"/>
			<xsd:element name="extension" type="extensionType"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="simpletextType" mixed="true">
		<xsd:choice minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="bold" type="boldtextType"/>
			<xsd:element name="italic" type="italictextType"/>
			<xsd:element name="image" type="imageType"/>
			<xsd:element name="textlinebreak"/>
		</xsd:choice>
	</xsd:complexType>
</xsd:schema>

