<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

	<!-- définition d'un email avec une expresion régulière -->
	<xsd:simpleType name="typeEmail">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[a-z0-9]+@[a-z0-9]+.([a-z]{2}|[a-z]{3})"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- définition d'un numéro de téléphone sur 10 chiffres -->
	<xsd:simpleType name="typePhoneNumber">
		<xsd:restriction base="xsd:integer">
			<xsd:totalDigits value="10"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- définitions pour le type résumé composé de texte nature, souligné ou en gras -->

	<!-- définition de l'élément 'texte' utilisé dans différents contextes -->
	<xsd:element name="texte" type="xsd:string" />

	<xsd:complexType name="typeTexte">
		<xsd:sequence>
			<xsd:element ref="texte" /> <!-- réf �  l'élément texte défini plus haut -->
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="typeResume">
		<xsd:choice>
			<xsd:element ref="texte" /> <!-- réf �  l'élément texte défini plus haut -->
			<xsd:element name="souligne" type="typeTexte" />
			<xsd:element name="italique" type="typeTexte" />
			<xsd:element name="gras" type="typeTexte" />
		</xsd:choice>
	</xsd:complexType>

	<!-- définition d'un auteur -->
	<xsd:complexType name="typeAuteur">
		<xsd:sequence>
			<xsd:element name="nom" type="xsd:string" />
			<xsd:element name="prenom" type="xsd:string" />
			<xsd:element name="email" type="typeEmail" minOccurs="0"/>
			<xsd:element name="siteWeb" type="xsd:anyURI" minOccurs="0"/>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="telMobile" type="typePhoneNumber" />
				<xsd:element name="telBureau" type="typePhoneNumber" />
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>

	<!-- définition d'un livre" -->
	<xsd:complexType name="typeLivre">
			<!-- une séquence de 3 sous-éléments dont le 2e peut-être répété -->
			<xsd:sequence>
				<xsd:element name="titre" type="xsd:string" />
				<xsd:element name="auteur" type="typeAuteur" maxOccurs="unbounded" />
				<xsd:element name="resume" type="typeResume" />
			</xsd:sequence>
			<!-- un attribut facultatif -->
			<xsd:attribute name="datePub" type="xsd:date" />
	</xsd:complexType>

	<!-- définition d'une bibliographie -->
	<xsd:complexType name="typeBiblio">
		<xsd:sequence>
			<xsd:element name="Livre" type="typeLivre" 
					minOccurs="0" maxOccurs="unbounded" />
		</xsd:sequence>
	</xsd:complexType>
	
	<!-- élément racine d'une bibliographie -->
	<xsd:element name="Bibliographie" type="typeBiblio" />
</xsd:schema>