<?xml version="1.0" ?><!-- -*- coding: utf-8 -*- -->


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">


  <!-- Les types simples -->

  <xs:simpleType name="TexteCourt">
    <xs:restriction base="xs:string">
      <xs:minLength value="2" />
      <xs:maxLength value="110" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="idstring">
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="30" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="adresseurl">
    <xs:restriction base="xs:string">
      <xs:maxLength value="120" />
      <xs:pattern value="http://.*" />
    </xs:restriction>
  </xs:simpleType>


  
  <!-- les éléments principaux -->

  <xs:element name="url">
    <xs:complexType>
      <xs:simpleContent>
	<xs:extension base="TexteCourt">
	  <xs:attribute name="href" type="adresseurl" use="required" />
	</xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="p">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
	<xs:element name="em" type="xs:string" />
	<xs:element name="strong" type="xs:string" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
      
  <xs:element name="description">
    <xs:complexType>
      <xs:sequence>
	<xs:element ref="p" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
      
  <xs:element name="sujet">
    <xs:complexType>
      <xs:sequence>
	<xs:element ref="description" minOccurs="0" />
	<xs:element ref="url"         minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="id"    type="idstring"   use="required"/>
      <xs:attribute name="pere"  type="idstring"   use="optional"/>
      <xs:attribute name="titre" type="TexteCourt" use="required"/>
    </xs:complexType>
  </xs:element>


  <!-- le document principal -->
      
  <xs:element name="sujets">

    <xs:complexType>
      <xs:sequence>
	<xs:element ref="sujet" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
    
    <xs:key name="clefsujets">
      <xs:selector xpath="sujet" />
      <xs:field xpath="@id" />
    </xs:key>
    
    <xs:unique name="uniquesujets">
      <xs:selector xpath="sujet" />
      <xs:field xpath="@titre" />
    </xs:unique>

    <xs:keyref name="refsujets" refer="clefsujets">
      <xs:selector xpath="sujet" />
      <xs:field xpath="@pere" />
    </xs:keyref>
	
  </xs:element>
  

</xs:schema>




