<?xml version="1.0"?>
<!--
 * Copyright (C) 2005-2010 Alfresco Software Limited.
 *
 * This file is part of Alfresco
 *
 * Alfresco is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Alfresco is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:nav="http://www.alfresco.org/alfresco/navigation"
	targetNamespace="http://www.alfresco.org/alfresco/navigation"
	elementFormDefault="qualified">

  	<!-- defines type for content link type -->
	<xs:simpleType name="category">
	    <xs:restriction base="xs:string">
	      <xs:enumeration value="Normal"/>
	      <xs:enumeration value="Feature"/>
	    </xs:restriction>
	  </xs:simpleType>

  	<!-- defines type for content link -->
	<xs:complexType name="link">
	    <xs:sequence>
	      <xs:element name="path" type="xs:anyURI" />
	      <xs:element name="type" type="nav:category" default="Normal"/>
	    </xs:sequence>
	</xs:complexType>

  	<!-- defines type for third level channel -->
	<xs:complexType name="channel">
		<xs:sequence>
			<xs:element name="name" type="xs:normalizedString" />
			<xs:element name="description" type="xs:normalizedString"/>
			<xs:element name="content_link" type="nav:link" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>	
	</xs:complexType>
	
  	<!-- defines type for second level channel -->
	<xs:complexType name="sub_channel">
		<xs:sequence>
			<xs:element name="name" type="xs:normalizedString" />
			<xs:element name="description" type="xs:normalizedString"/>
			<xs:element name="sub_sub_channel" type="nav:channel" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="content_link" type="nav:link" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>	
	</xs:complexType>

  	<!-- defines type for first level channel -->
	<xs:complexType name="main_channel">
		<xs:sequence>
			<xs:element name="name" type="xs:normalizedString" />
			<xs:element name="description" type="xs:normalizedString"/>
			<xs:element name="sub_channel" type="nav:sub_channel" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="content_link" type="nav:link" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>	
	</xs:complexType>

	<!-- defines the form for creating a navigation hierarchy -->
	<xs:element name="navigation">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="name" type="xs:normalizedString" />
				<xs:element name="description" type="xs:normalizedString"/>
				<xs:element name="main_channel" type="nav:main_channel" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="content_link" type="nav:link" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
