Vous êtes sur la page 1sur 8

Srie dexercices ASPNET, XML, DTD, XSD, XSLT, XPATH TDI 2me A 2016-2017

Srie dexercices ASPNET, XML, DTD, XSD, XSLT, XPATH


Exercice 1 :
Une Application de gestion des emplois du temps a gnr le fichier XML suivant :
<?xml version="1.0"?>
<seances>
<seance jour="lundi" debut=08:00 fin=10:30>
<salle>S1</salle>
<module>SGBDR I</module>
<formateur>CHAKIR Said</formateur>
<groupe>TDI201</groupe>
</seance>
<seance jour=lundi debut=10:30 fin=13:00>
<salle>S2</salle>
<module>Reseaux </module>
<formateur>TAHIR Nadia</formateur>
<groupe>TDI201</groupe>
</seance>
<seance jour=mardi debut=08:00 fin=10:30>
<salle>S1</salle>
<module>SGBDR I</module>
<formateur>CHAKIR Said</formateur>
<groupe>TDI202</groupe>
</seance>

</seances>

1) Donner les expressions XPath appliquer ce document XML pour extraire :


a) Toutes les sances du formateur CHAKIR Said.
b) Toutes les salles utilises par le groupe TDI201.
c) Le nombre de sances qui commencent 08 :00 heure.
2) Soit le fichier XSL suivant :
<?xml version=1.0 ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<td>Formateurs</td>
<td>Groupes</td>
<td>Modules</td>
</tr>
<xsl:for-each select="seances/seance">
<tr>
<td>
<xsl:value-of select="formateur"/>
</td>
<td>
<xsl:value-of select="groupe"/>
</td>
<td>
<xsl:value-of select=module/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

a) Expliquer la syntaxe : <xsl:for-each select=seances/seance>.


b) Donner laffichage obtenu si on applique ce fichier XSL au document XML prcdent.
c) Ajouter une ligne ce fichier XSL pour inclure laffichage des jours des sances.

Exercice 2 :
Le fichier XML suivant enregistre les rsultats des matchs dun championnat de football :

HARCHI Abdellah & SERBOUT Sara 1


Srie dexercices ASPNET, XML, DTD, XSD, XSLT, XPATH TDI 2me A 2016-2017

<?xml version="1.0" ?>


<FOOT DIVISION="1">
<JOURNEE NUMERO="1" DATE="01/09/2013">
<MATCH LOCAUX="WAC" VISITEURS="RCA" BUTS_LOCAUX="1" BUTS_VISITEURS="2" />
<MATCH LOCAUX="DHJ" VISITEURS="OCK" BUTS_LOCAUX="2" BUTS_VISITEURS="1" />
<MATCH LOCAUX="HUSA" VISITEURS="MAS" BUTS_LOCAUX="0" BUTS_VISITEURS="0" />
<MATCH LOCAUX="FAR" VISITEURS="WAF" BUTS_LOCAUX="1" BUTS_VISITEURS="1" />
</JOURNEE>
<JOURNEE NUMERO="2" DATE="08/09/2013">
<MATCH LOCAUX="RCA" VISITEURS="FAR" BUTS_LOCAUX="3" BUTS_VISITEURS="2" />
<MATCH LOCAUX="WAF" VISITEURS="HUSA" BUTS_LOCAUX="0" BUTS_VISITEURS="1" />
<MATCH LOCAUX="MAS" VISITEURS="DHJ" BUTS_LOCAUX="0" BUTS_VISITEURS="1" />
<MATCH LOCAUX="KAC" VISITEURS="WAC" BUTS_LOCAUX="1" BUTS_VISITEURS="0" />
</JOURNEE>
<JOURNEE NUMERO="3" DATE="15/09/2013">
<MATCH LOCAUX="ASS" VISITEURS="MAT" BUTS_LOCAUX="1" BUTS_VISITEURS="3" />
<MATCH LOCAUX="WAC" VISITEURS="WAF" BUTS_LOCAUX="3" BUTS_VISITEURS="2" />
<MATCH LOCAUX="DHJ" VISITEURS="FUS" BUTS_LOCAUX="1" BUTS_VISITEURS="0" />
<MATCH LOCAUX="MAS" VISITEURS="RCA" BUTS_LOCAUX="1" BUTS_VISITEURS="2" />
</JOURNEE>
<JOURNEE NUMERO="4" DATE="22/09/2013">
<MATCH LOCAUX="FUS" VISITEURS="MAS" BUTS_LOCAUX="1" BUTS_VISITEURS="0" />
<MATCH LOCAUX="MAT" VISITEURS="WAC" BUTS_LOCAUX="2" BUTS_VISITEURS="0" />
<MATCH LOCAUX="KAC" VISITEURS="DHJ" BUTS_LOCAUX="1" BUTS_VISITEURS="1" />
<MATCH LOCAUX="ASS" VISITEURS="FAR" BUTS_LOCAUX="0" BUTS_VISITEURS="0" />
</JOURNEE>
</FOOT>

1) Proposer un fichier XSD pour valider le fichier XML.


2) Que donnent les requtes XPath suivantes :
a) count(//MATCH[@BUTS_LOCAUX =@ BUTS_VISITEURS]).
b) //JOURNEE[@NUMERO < 3].
c) //MATCH[@LOCAUX='DHJ']/@VISITEURS | //MATCH[@VISITEURS=DHJ]/@LOCAUX.
3) Ecrire les requtes XPath permettant de slectionner :
a) la liste des matches de la 4me journe.
b) la premire rencontre de chacune des journes.
c) les matches nuls de lquipe KAC jouant en locaux.

Exercice 3
On souhaite crer un fichier XML qui regroupe la liste des stagiaires (cours du soir, cours du jour et la formation
qualifiante) dune cole de formation, on veut conserver les informations suivantes :
1) Cours du soir
Filire dote dun nom et un nombre de personnes.
- Employer (Socit, matricule, datedebut, grade)
2) Cours du jour
Filire dote dun nom et un nombre de stagiaires.
- Stagiaire (N inscription, nom, prnom, ge)
3) Formation qualifiante
formation dote dun nom et un identifiant.
- Participant (nom, Tel)
Questions :
1. Ecrire une DTD pour cette application.
2. Ecrire un fichier valide pour cette DTD, comportant au moins deux stagiaires et faisant apparatre
toutes les possibilits de la DTD.
3. Ecrire une XSD pour cette application.

Exercice 4 :
L'auteur du document XML suivant a cru pouvoir rdiger son document en se passant d'un diteur XML. Aidez-
le corriger les erreurs quil contient pour quil puisse tre bien form.

Rpondez sur la feuille : entourez chaque erreur par un numro et annotez-la.

<?xml version="1.0" encoding="iso-8859-1" standalone="standalone"?>


<?xml-stylesheet type="text/xsl" href="fg.xsl"?>
<!-- relire -->
<document>
<titre style="bold" style="big">Mes mmoires</titre>
<auteur>

HARCHI Abdellah & SERBOUT Sara 2


Srie dexercices ASPNET, XML, DTD, XSD, XSLT, XPATH TDI 2me A 2016-2017

<nom>Gump</nom>
<prnom>Forrest</prnom>
<auteur>
<description xmlns="http://www.w3.org/1999/xhtml"
style="bold" Style="big" >
<!-- partir d'ici, on peut utiliser des lments HTML c'est pratique pour du contenu
documentaire -->
<p align="center">
Ma maman disait
toujours : "<i>
la vie c'est comme une
boite de <b>chocolat</i>, on ne sait jamais
sur quoi on va tomber</b>".
</p>
<hr width=""/>
<script language="JavaScript">
<![CDATA[
function check() {
for (int i=10; i>0; i++) {
if ( a[b[i]]>5 ) break;
}
}
]]>
<!-- vrifier si la boucle doit s'crire
avec ++i et pas i++ -->
</script>
<p>La suite, je ne m'en souviens plus...
</description>
</document>
<remarques>
Mon document ne parse pas
</remarques> <!-- il y a quelques erreurs -->fin du document

Exercice 5 :
Pour chacun des documents 1, 2, et 3, indiquez sil est valide ou pas. Quand le document nest pas valide,
indiquez la nature de lerreur (ou des erreurs). Les documents sont indpendants les uns des autres.
1.
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE a [
<!ELEMENT a (b*, c)>
<!ELEMENT b EMPTY>
<!ELEMENT c (#PCDATA)>
<!ATTLIST c
x CDATA #FIXED "bold">
]>
<a>
<b/>
<b/>
<c x= "medium"> du texte </c>
</a>

2.
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE a [
<!ELEMENT a (b*, c*, d?)>
<!ELEMENT d EMPTY>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>

]>
<a>
<b>ljs sldjf sljd </b>
<b>mmmqmm qqq mmm qq </b>
<d/>
</a>

3.
<?xml version="1.0" encoding="iso-8859-1" ?>

HARCHI Abdellah & SERBOUT Sara 3


Srie dexercices ASPNET, XML, DTD, XSD, XSLT, XPATH TDI 2me A 2016-2017

<!DOCTYPE a [
<!ELEMENT a (b*, c)>
<!ELEMENT b EMPTY>
<!ELEMENT c (#PCDATA)>
<!ATTLIST b
truc CDATA #IMPLIED>
]>
<a>
<b/>
<b truc="bidule"/>
<c>Et voil`</c>
<b/>
</a>

4.
crivez une DTD pour des documents XML de type examen. Un examen contient un code de cours, un titre et
une date qui contient uniquement le mois et l'anne. Ces lments sont suivis par une liste de questions. Un
examen a entre 5 et 6 questions et chaque question a une ou plusieurs parties.
Une partie peut tre vide ou bien avoir du texte ou bien encore avoir du texte mlang avec d'autres parties.
Le code ainsi que lanne doivent tre des chanes de caractres valides (ie caractres autoriss par xml), le
mois est une chaine parmi la liste suivante : (jan, fev, mar, avr, mai, ju, jui, aou, sep, oct, nov, dec).

Exemple dinstance :
<?xml version="1.0" encoding="iso-8859-1" ?>
<examen code="coursXML">
<titre>Outils et documents XML</titre>
<date mois="sep" annee="2004" />
<questions>
<question> <partie/> </question>
<question> <partie/> </question>
<question> <partie/> </question>
<question> <partie> ma partie </partie> </question>
<question> <partie > <partie/> une autre partie </partie>
<partie > <partie> encore du texte une </partie> autre partie </partie>
<partie >autre partie </partie>
</question>
</questions>
</examen>

Ou bien
<?xml version="1.0" encoding="iso-8859-1" ?>
<examen code="coursXML">
<titre>Outils et documents XML</titre>
<date mois="sep" annee="2004" />
<questions>
<question> <partie/> </question>
<question> <partie/> </question>
<question> <partie/> </question>
<question> <partie> ma partie </partie> </question>
<question> <partie/> </question>
<question> <partie/> </question>
</questions>
</examen>

Exercice 6 :
Objectif : Les schmas permettent de dcrire les modles de donnes de faon plus prcise.
Transposez la DTD Livres.dtd en un schma XSD avec les caractristiques suivantes :
Une anne est une chane de 4 caractres compris dans l'espace 0...9
Un livre contient exactement un titre, un prix, une anne et au moins un auteur. De plus, on associe
des lments de ce type l'attribut "edition" qui prcise si il s'agit d'un paperback ou d'une dition relie.
Un prix est un type complexe, on lui associe deux attributs: "valeur" et "monnaie" ("monnaie" a un type
qui drive de "string", son champs de valeur se limite aux chanes "USD" et "EUR")

Livres.dtd
<!ELEMENT livres (livre*)>
<!ELEMENT livre (titre, auteur+, anne, prix)>
<!ATTLIST livre edition CDATA #REQUIRED>
<!ELEMENT titre (#PCDATA)>

HARCHI Abdellah & SERBOUT Sara 4


Srie dexercices ASPNET, XML, DTD, XSD, XSLT, XPATH TDI 2me A 2016-2017

<!ELEMENT auteur (prenom, nom, laboratoire?, pays)>


<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT anne (#PCDATA)>
<!ELEMENT prix EMPTY>
<!ATTLIST prix
monnaie CDATA #REQUIRED
valeur CDATA #REQUIRED>
<!ELEMENT pays (#PCDATA)>

Exercice 7 :
Voici un extrait du fichier qui contient la liste des gagnants du booker prize (liste de livres avec leur auteur
et l'anne de l'obtention du prix).
<?xml version="1.0"?>
<booker>
<award>
<author>Kingsley Amis</author>
<title>The Old Devils</title>
<year>1986</year>
</award>
<award>
[]
</award>
[]
</booker>

Trouvez les expressions XPath qui retournent les informations suivantes :


a) l'auteur du sixime livre dans la liste
b) le titre du livre qui a gagn en 2000
c) le nom de l'auteur du livre intitul "Possession"
d) le titre des livres dont "J M Coetzee" est l'auteur
e) le nom de tous les auteurs dont le livre a gagn depuis 1995
f) le nombre total de prix dcerns

Exercice 8 :
1. Dans cet exercice on travaille sur un document XML : Cours.xml qui contient des informations sur
des cours en informatique comme indiqu en annexe. Donnez le rsultat de la transformation du
document suivant appliqu Cours.xml

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">


<xsl:output method="html" />

<xsl:template match="/">
<xsl:apply-templates select="ENSEIGNEMENT/COURS"/>
</xsl:template>

<xsl:template match="COURS">
<xsl:text> -------------------------------------------------</xsl:text>
<br/>
<xsl:value-of select="@INTITULE"/>
<br/>
<xsl:text> Salle: </xsl:text>
<xsl:value-of select="SALLE"/>
<br/>
<xsl:text> Modules : </xsl:text>
<xsl:apply-templates select="MODULE"/>
<br/>
<xsl:text> Inscrits (note): </xsl:text>
<br/>
<xsl:for-each select="ETUDIANT">
<xsl:value-of select="@NUMERO"/>
<xsl:if test="NOTE">
(<xsl:value-of select="NOTE"/>)
</xsl:if>
<br/>
</xsl:for-each>
</xsl:template>
<xsl:template match="MODULE">

HARCHI Abdellah & SERBOUT Sara 5


Srie dexercices ASPNET, XML, DTD, XSD, XSLT, XPATH TDI 2me A 2016-2017

<xsl:value-of select="@INTITULE"/>
<xsl:if test="position() &lt; last()">
<xsl:text> , </xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

2. Modifiez le programme afin quil affiche dune part, uniquement les numros des tudiants qui
possdent une note, et dautre part, les enseignants pour chaque module (entre parenthses aprs
le nom du module) ;
3. Proposer un fichier xsl qui permet dobtenir un document xml ne contenant que les lments
MODULE. Ajouter ensuite chacun de ces lments, un lment fils OPTION contenant le texte :
venir : (voir ci-dessous)

<MODULE INTITULE="PHP et MySQL">


<OPTION> venir...</OPTION>
<ENSEIGNANT>Enseignant1</ENSEIGNANT>
</MODULE>
<MODULE INTITULE="XML">
<OPTION> venir...</OPTION>
<ENSEIGNANT>Enseignant2</ENSEIGNANT>
<ENSEIGNANT>Enseignant3</ENSEIGNANT>
</MODULE>
<MODULE INTITULE="SQL">
<OPTION> venir...</OPTION>
<ENSEIGNANT>Enseignant2</ENSEIGNANT>
</MODULE>
<MODULE INTITULE="Optimisation">
<OPTION> venir...</OPTION>
<ENSEIGNANT>Enseignant4</ENSEIGNANT>
</MODULE>

4. Obtenir un document xml contenant les mmes informations que le document initial en annexe
(Cours.xml), mais qui na pas recours aux attributs (les attributs deviennent des lments). (voir ci-
dessous)
<?xml version="1.0" encoding="utf-16"?>
<ENSEIGNEMENT>
<COURS>
<INTITULE>Commerce Electronique</INTITULE>
<SALLE>Amphi A</SALLE>
<MODULE>
<INTITULE>PHP et MySQL</INTITULE>
<ENSEIGNANT>Enseignant1</ENSEIGNANT>
</MODULE>
<MODULE>
<INTITULE>XML</INTITULE>
<ENSEIGNANT>Enseignant2</ENSEIGNANT>
<ENSEIGNANT>Enseignant3</ENSEIGNANT>
</MODULE>
<ETUDIANT>
<NUMERO>I235678</NUMERO>
<NOTE>16</NOTE>
</ETUDIANT>
<ETUDIANT>
<NUMERO>I784451</NUMERO>
</ETUDIANT>
<ETUDIANT>
<NUMERO>F569834</NUMERO>
</ETUDIANT>
</COURS>

Remarque :
En XSL, llment <xsl:element> permet la cration dynamique dlments et dont la syntaxe est la
suivante :
<xsl:element name= "nom_element">

HARCHI Abdellah & SERBOUT Sara 6


Srie dexercices ASPNET, XML, DTD, XSD, XSLT, XPATH TDI 2me A 2016-2017

Exemple :<xsl:element name= "table">Mon texte</xsl:element>


produit llement : <table>Mon texte</table>.

Annexe, Cours.xml
<?xml version="1.0" encoding="iso-8859-1" ?>
<ENSEIGNEMENT>
<COURS INTITULE="Commerce Electronique">
<SALLE>Amphi A</SALLE>
<MODULE INTITULE="PHP et MySQL">
<ENSEIGNANT> Enseignant1 </ENSEIGNANT>
</MODULE>
<MODULE INTITULE="XML">
<ENSEIGNANT> Enseignant2 </ENSEIGNANT>
<ENSEIGNANT> Enseignant3 </ENSEIGNANT>
</MODULE>
<ETUDIANT NUMERO="I235678">
<NOTE>16</NOTE>
</ETUDIANT>
<ETUDIANT NUMERO="I784451" />
<ETUDIANT NUMERO="F569834" />
</COURS>
<COURS INTITULE="Bases de donnes">
<SALLE>Painlev</SALLE>
<MODULE INTITULE="SQL">
<ENSEIGNANT> Enseignant2 </ENSEIGNANT>
</MODULE>
<MODULE INTITULE="Optimisation">
<ENSEIGNANT> Enseignant4 </ENSEIGNANT>
</MODULE>
<ETUDIANT NUMERO="A675432">
<NOTE>14</NOTE>
</ETUDIANT>
<ETUDIANT NUMERO="B455978" />
<ETUDIANT NUMERO="B568709">
<NOTE>12</NOTE>
</ETUDIANT>
</COURS>
</ENSEIGNEMENT>

Exercice 9 :
Soit le programme suivant :
void Session_Start(object sender, EventArgs e)
{
// Code qui s'excute lorsqu'une nouvelle session dmarre
Application.Lock();
if (Application["Nombre"] == null)
Application["Nombre"] = 1;
else
Application["Nombre"] = Convert.ToInt16(Application["Nombre"]) + 1;
Application .UnLock ();
}
a) Expliquer la signification de chaque ligne du programme et quel est son utilit.
b) Comment diminuer le nombre dans le cas dune fermeture de session et o doit-on crire le
programme ?

Exercice 10 :
Que fait ce programme :
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
Label1.ForeColor = Color.Red;
else
Label1.ForeColor = Color.Green;
}

Exercice 11 :
Quel validateur utilise-t-on pour vrifier si 2 mot de passes sont les mmes ? et quelles sont les proprits
dfinir ?

HARCHI Abdellah & SERBOUT Sara 7


Srie dexercices ASPNET, XML, DTD, XSD, XSLT, XPATH TDI 2me A 2016-2017

Exercice 12 :
Quel est le rle de lobjet Response et quelle est la signification des mthodes Write et Redirect ?

Exercice 13 :
Quelle est la diffrence entre Cookie, Application et Session et donner un exemple.

Exercice 14 :
Ecrire le code pour rcuprer les variables suivantes :
Enregistrement Rcupration
Session["section"]="TDI" ; ?
Response.Cookies["Groupe"].Vakue="A" ; ?

Exercice 15 :
Quel validateur utilise-t-on pour vrifier si la valeur dune date est comprise entre 2 dates ?
Et quelle sont les proprits dfinir ?

Exercice 16 :
Pour positionner lauthentification par formulaire, les lignes de programme suivant ont t crites :
<authentification mode="Forms">
<forms loginUrl="login.aspx" timeout="20">
<credentials passwordFormat="MD5">
<user name="TEST" password="AZERTY"/>
</credentials>
</forms>
</authentification>
<authorization>
<deny user="?"/>
</authorization>
Expliquer la signification de ce programme et o doit-on lcrire ?

Exercice 17:
Quelle est la directive qui prcise au compilateur et lanalyseur ASP.Net quelle sagit dune page matre ?
- @MasterType
- @Master
- @PageType
- @MasterPage

Exercice 18 :
Soit le fichier courrier.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE something>
<courrier>
<lettre>
<adrexp numero="123">
<nom>Mr abd</nom>
<appartement>23</appartement>
<rue>Sebou</rue>
<codepost>14000</codepost>
<ville>Knitra</ville>
</adrexp>
<adrdest numero="122">
<nom>Mlle f</nom>
<appartement>23</appartement>
<rue>Challah</rue>
<codepost>14200</codepost>
<ville>Rabat</ville>
<pays>Maroc</pays>
</adrdest>
</lettre>
</courrier>
a) Ecrire la DTD correspondante au fichier XML prcdent.
b) Proposer un fichier XSD pour valider le fichier XML.
c) Ecrire le code XPath pour rpondre aux questions suivantes :
a. Les codes postaux des lettres dont la ville de ladresse de destination est Rabat
b. Les noms commenant par Mlle.
c. Le nombre de lettre.
d. Les lments rue et code postal des villes.

HARCHI Abdellah & SERBOUT Sara 8