--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+<xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Filesystem Database schema writen by Olivier Poitrey on 4/20/2004
+ Version $Id: configuration.xsd,v 1.1 2004/04/22 19:24:05 ensc Exp $
+ </xsd:documentation>
+</xsd:annotation>
+
+<xsd:group name="commonElements">
+ <xsd:sequence>
+ <xsd:element name="description" type="xsd:normalizedString" minOccurs="0"/>
+ </xsd:sequence>
+</xsd:group>
+
+<xsd:attributeGroup name="commonAttributes">
+ <xsd:attribute name="name" type="xsd:token" use="required"/>
+ <xsd:attribute name="type" default="fixed">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="fixed"/>
+ <xsd:enumeration value="symbolic"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="use" default="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="optional"/>
+ <xsd:enumeration value="required"/>
+ <xsd:enumeration value="prohibited"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+</xsd:attributeGroup>
+
+<xsd:simpleType name="quantityType">
+ <xsd:union memberTypes="xsd:unsignedInt">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="unbounded"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:union>
+</xsd:simpleType>
+
+<xsd:complexType name="baseItem" abstract="true">
+ <xsd:sequence>
+ <xsd:group ref="commonElements"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="commonAttributes"/>
+</xsd:complexType>
+
+<xsd:complexType name="baseNode" abstract="true">
+ <xsd:sequence>
+ <xsd:group ref="commonElements"/>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="collection" type="collectionType">
+ <xsd:unique name="collection">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Avoid duplicate element with same name attribute on the same level tree
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="*"/>
+ <xsd:field xpath="@name"/>
+ </xsd:unique>
+ </xsd:element>
+ <xsd:element name="scalar" type="scalarType"/>
+ <xsd:element name="list" type="listType"/>
+ <xsd:element name="hash" type="hashType"/>
+ <xsd:element name="boolean" type="booleanType"/>
+ <xsd:element name="data" type="dataType"/>
+ <xsd:element name="link" type="linkType"/>
+ <xsd:element name="program" type="programType"/>
+ </xsd:choice>
+ </xsd:sequence>
+</xsd:complexType>
+
+<xsd:complexType name="collectionType">
+ <xsd:complexContent>
+ <xsd:extension base="baseNode">
+ <xsd:attributeGroup ref="commonAttributes"/>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="scalarType">
+ <xsd:complexContent>
+ <xsd:extension base="baseItem">
+ <xsd:sequence>
+ <xsd:element name="default" type="xsd:normalizedString" minOccurs="0"/>
+ <xsd:element name="restriction" minOccurs="0">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:element name="enumeration" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:attribute name="value" type="xsd:normalizedString"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="listType">
+ <xsd:complexContent>
+ <xsd:extension base="baseItem">
+ <xsd:sequence>
+ <xsd:element name="minElements" type="quantityType" minOccurs="0" default="0"/>
+ <xsd:element name="maxElements" type="quantityType" minOccurs="0" default="unbounded"/>
+ <xsd:element name="elements" minOccurs="0">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="element" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:group ref="commonElements"/>
+ <xsd:element name="default" type="xsd:boolean" minOccurs="0" default="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:normalizedString" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="hashType">
+ <xsd:complexContent>
+ <xsd:extension base="baseItem">
+ <xsd:sequence>
+ <xsd:element name="keys" minOccurs="0">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="key" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:group ref="commonElements"/>
+ <xsd:element name="default" type="xsd:normalizedString" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:normalizedString" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="booleanType">
+ <xsd:complexContent>
+ <xsd:extension base="baseItem">
+ <xsd:sequence>
+ <xsd:element name="default" type="xsd:boolean" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="dataType">
+ <xsd:complexContent>
+ <xsd:extension base="baseItem">
+ <xsd:sequence>
+ <xsd:element name="default" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="linkType">
+ <xsd:complexContent>
+ <xsd:extension base="baseItem">
+ <xsd:sequence>
+ <xsd:element name="default" type="xsd:token" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="programType">
+ <xsd:complexContent>
+ <xsd:extension base="baseItem">
+ <xsd:sequence>
+ <xsd:element name="parameterList" minOccurs="0">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="parameter" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:group ref="commonElements"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:normalizedString" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<!-- root element -->
+<xsd:element name="database">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="baseNode"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:unique name="database">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Avoid duplicate element with same name attribute on the same level tree
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="*"/>
+ <xsd:field xpath="@name"/>
+ </xsd:unique>
+</xsd:element>
+
+</xsd:schema>