Developpement Des Applications Web Cote Client: Tp12: XML - XSD
Developpement Des Applications Web Cote Client: Tp12: XML - XSD
D E V E L O P P E M E N T D E S A P P L I C AT I O N S
WEB COTE CLIENT
TP12 : XML_XSD
Exercice 1:
Creer des schemas XML pour lesquels les documents XML suivants seront valides:
<examen code="coursXML"> <biblio>
<titre>Outils et documents <person xmlns:xlink="http://www.w3.or
XML</titre> g/1999/xlink">
<Type description="QCM"/> <name SSN="et-oui" ref="et-oui">
<questions> <first_name>Alan</first_name>
<question> <last_name>Turing</last_name>
<partie/> </name>
</question> <profession>computer
<question> scientist</profession>
<partie/> <profession>mathematician</profession
</question> >
<question> <profession>cryptographer</profession
<partie/> >
</question> <friend ref="a_7256"/>
<question> </person>
<partie/> <person xmlns:xlink="http://www.w3.or
</question> g/1999/xlink">
<question> <name SSN="a_17280313333">
<partie/> <first_name>Alonzo</first_name>
</question> <last_name>Church</last_name>
</questions> </name>
</examen> <profession>computer
scientist</profession>
<profession>logician</profession>
<friend ref="et-oui" img="pas de
photos"/>
</person>
<person xmlns:xlink="http://www.w3.or
g/1999/xlink">
<name SSN="a_7256">
<first_name>Lucien</first_name>
<last_name>21 janvier
1991</last_name>
</name>
<friend ref="a_7256"/>
</person>
</biblio>
Exercice 2:
Rédiger un Schema XML pour une bibliographie. Cette bibliographie :
contient des livres et des articles ;
les informations nécessaires pour un livre (élément livre) sont :
o son titre général (élément titre) ;
o les noms des auteurs (éléments auteur) ;
o ses tomes (élément tomes) et pour chaque tome (éléments tome), leur nombre de pages
(élément pages) ;
o des informations générales sur son édition (élément infosEdition) comme par exemple le
nom de l'éditeur (élément editeur), le lieu d'édition (élément lieuEdition), le lieu
d'impression (élément lieuImpression), son numéro ISBN (élément ISBN) ;
les informations nécessaires pour un article (élément article) sont :
o son titre (élément titre) ;
o les noms des auteurs (éléments auteur) ;
o ses références de publication (élément infosPublication) : nom du journal
(élément nomJournal), numéro des pages (élément pages), année de publication
(élément anneePublication) et numéro du journal (élément numéroJournal)
on réservera aussi un champ optionnel, pour chaque livre et chaque article, pour un avis
(élément avis) personnel.
Tester ce Schema XML avec un fichier XML que l'on écrira ex-nihilo et validera. 7
<balise_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="mon_schema.xsd">
<xs:element name="bibliographie">
<xs:complexType>
<xs:sequence>
<xs:element name="livre" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element ref="titre"/>
<xs:element ref="auteur" maxOccurs="unbounded"/>
<xs:element name="tomes">
<xs:complexType>
<xs:sequence>
<xs:element name="tome" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element ref="pages"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InfoEdition">
<xs:complexType>
<xs:sequence>
<xs:element name="editeur" type="xs:string"/>
<xs:element name="lieuEdition" type="xs:string"/>
<xs:element name="lieuImpression" type="xs:string"/>
<xs:element name="ISBN" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="avis" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="article">
<xs:complexType>
<xs:sequence>
<xs:element ref="titre"/>
<xs:element ref="auteur"/>
<xs:element name="infoPub">
<xs:complexType>
<xs:sequence>
<xs:element name="nomJ" type="xs:string"/>
<xs:element ref="pages"/>
<xs:element name="anneePub" type="xs:positiveInteger"/>
<xs:element name="numJ" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="avis" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="titre" type="xs:string"/>
OFFICE DE LA FORMATION PROFESSIONNELLE & DE LA PROMOTION DU TRAVAIL
INSTITUT SUPERIEUR DES TECHNOLOGIES DE L’INFORMATION ET DE LA COMMUNICATION DE SAFI
Exercice 3:
Creer un schema XML pour la DTD suivante:
<!ELEMENT scene (figure+)> <!ELEMENT graphe (sommet*) >
<!ATTLIST scene unite (mm | cm) <!ATTLIST graphe nbs CDATA #IMPLIED>
#REQUIRED <!-- nbs : nombre de sommets du
repere (ortho-direct | graphe : entier positif ou nul -->
ortho-inverse) #REQUIRED <!ELEMENT sommet (arc*) >
origine (haut-gauche | <!ATTLIST sommet snum ID #REQUIRED
bas-gauche) #REQUIRED> setiq CDATA #REQUIRED >
<!ELEMENT figure (rectangle | cercle | <!-- snum : identificateur du sommet
poly)> setiq : étiquette attachée au
<!ATTLIST figure couche CDATA #REQUIRED sommet : chaîne de caractères -->
couleur (blanc | noir <!ELEMENT arc (aetiq) >
| hachure) #REQUIRED> <!ATTLIST arc sbut IDREF #REQUIRED >
<!ELEMENT cercle (centre, rayon)> <!-- sbut : identifiant du sommet but
<!ELEMENT centre (abscisse, ordonnee)> -->
<!ELEMENT rayon (#PCDATA)> <!ELEMENT aetiq (#PCDATA) >
<!ELEMENT poly (sommet+)> <!-- aetiq : étiquette de l'arc :
<!ATTLIST poly nbsommet CDATA décimal -->
#REQUIRED>
<!ELEMENT rectangle (sommet, sommet)>
<!ELEMENT sommet (abscisse, ordonnee)>
<!ATTLIST sommet num CDATA #IMPLIED>
<!ELEMENT abscisse (#PCDATA)>
<!ELEMENT ordonnee (#PCDATA)>
<!-- fin de la DTD -->
<x:element name="scene">
<x:complexType>
<x:sequence>
<x:element ref="figure" minOccurs="1"
maxOccurs="unbounded"/>
</x:sequence>
<x:attribute name="unite"
use="required">
<x:simpleType>
<x:restriction base="x:string">
<x:enumeration value="mm"/>
<x:enumeration value="cm"/>
</x:restriction>
</x:simpleType>
</x:attribute>
<x:attribute name="repere"
use="required">
<x:simpleType>
<x:restriction base="x:string">
<x:enumeration value="ortho-
direct"/>
<x:enumeration value="ortho-
inverse"/>
</x:restriction>
</x:simpleType>
</x:attribute>
<x:attribute name="origine"
use="required">
<x:simpleType>
<x:restriction base="x:string">
OFFICE DE LA FORMATION PROFESSIONNELLE & DE LA PROMOTION DU TRAVAIL
INSTITUT SUPERIEUR DES TECHNOLOGIES DE L’INFORMATION ET DE LA COMMUNICATION DE SAFI
<x:enumeration value="haut-
gauche"/>
<x:enumeration value="bas-
gauche"/>
</x:restriction>
</x:simpleType>
</x:attribute>
</x:complexType>
</x:element>
<x:element name="figure">
<x:complexType>
<x:choice>
<x:element ref="rectangle"/>
<x:element ref="cercle"/>
<x:element ref="poly"/>
</x:choice>
<x:attribute name="couche" type
="x:string" use="required"/>
<x:attribute name="couleur">
<x:simpleType>
<x:restriction base="x:string">
<x:enumeration value="blanc"/>
<x:enumeration value="noir"/>
<x:enumeration value="hachure"/>
</x:restriction>
</x:simpleType>
</x:attribute>
</x:complexType>
</x:element>
<x:element name="rectangle">
<x:complexType>
<x:sequence>
<x:element ref="sommet" minOccurs="2"
maxOccurs="2"/>
</x:sequence>
</x:complexType>
</x:element>
<x:element name="cercle">
<x:complexType>
<x:sequence>
<x:element name="centre">
<x:complexType>
<x:sequence>
<x:element ref="abscisse"/>
<x:element ref="ordonnee"/>
</x:sequence>
</x:complexType>
</x:element>
<x:element name="rayon" type
="x:float"/>
</x:sequence>
</x:complexType>
</x:element>
<x:element name="poly">
<x:complexType>
<x:sequence>
<x:element ref="sommet" minOccurs="1"
maxOccurs="unbounded"/>
</x:sequence>
<x:attribute name="nbSommets"
OFFICE DE LA FORMATION PROFESSIONNELLE & DE LA PROMOTION DU TRAVAIL
INSTITUT SUPERIEUR DES TECHNOLOGIES DE L’INFORMATION ET DE LA COMMUNICATION DE SAFI
type="x:positiveInteger"/>
</x:complexType>
</x:element>
<x:element name="abscisse" type
="x:float"/>
<x:element name="ordonnee" type
="x:float"/>
<x:element name="sommet">
<x:complexType>
<x:sequence>
<x:element ref="abscisse"/>
<x:element ref="ordonnee"/>
</x:sequence>
<x:attribute name="num"
type="x:positiveInteger" use="optional"/>
</x:complexType>
</x:element>