INSTITUT SUPERIEUR DES ETUDES TECHNOLOGIQUES DE JENDOUBA
DEPARTEMENT TECHNOLOGIE DE L’INFORMATIQUE
EXAMEN
Matière: PROGRAMMATION WEB 2 Documents: Non autorisés
Enseignants: B. Kalfi, H. Chorfi, S. Abidi et Y.Mbarek Durée: 1h30
Classes : TI1* Date: Juin 2014
Il vous est demandé d’apporter un soin particulier à la présentation de votre copie.
EXERCICE 1 : (5 POINTS)
On rappelle qu’un document est dit bien formé s’il est syntaxiquement correct, sans référence à une
quelconque DTD. Un document valide est bien formé et respecte les contraintes indiquées dans la
DTD qui lui correspond (la DTD est obligatoire).
I. Ce document xml n’est pas bien formé. Indiquez les lignes contenant les erreurs et les corrigez.
1. <?xml version="1.0" "?>
2. <bibliographie>
3. <TITRE>Calcul Quantique</titre>
4. <article type=non publié>
5. <titre>Quantum Proofs for Classical Theorem</titre>
6. <auteurs>
7. <nom>Drucker</nom><nom>de Wolf</nom>
8. </auteurs>
9. <uri>arxiv:quant-ph/0910.3376v1</uri>
10. </article>
11. <livre lang = "en">
12. <titre>Quantum Computation and Quantum Information</titre
13. <auteurs>
14. <nom>Nielsen</nom><nom>Chuang</nom>
15. <éditeur>Cambridge U. Press</éditeur>
16. <livre/>
17. </bibliographie>
Correction :
I.
Barème : ligne : 0.25+ correction 0.5
3. Casse : <titre>Calcul Quantique</titre> 0.25+0.5
4. apostrophes : <article type="non publié"> 0.25+0.5
<livre xml:lang = "en">
12. fermeture de balise : <titre>Quantum Computation and Quantum Information</titre>
0.25+0.5
13. </auteurs> 0.25+0.5
16. </livre> 0.25+0.5
II. Pour chacun des documents suivants, indiquez s’il est valide ou pas. Quand le document n’est pas
valide indiquez la nature de l’erreur (ou des erreurs).
1. document non valide (6. <c x="bold">du texte</c>) 0.5+0.25
2. document valide 0.5
Année Universitaire 2013/2014 Sem.2 Page 1/5
1. 1. <?xml version="1.0" ?> <!ELEMENT a (b*, c)>
2. <!DOCTYPE a SYSTEM "a.dtd"> <!ELEMENT b EMPTY>
3. <a> <!ELEMENT c (#PCDATA)>
4. <b/> <!ATTLIST c x CDATA #FIXED "bold">
5. <b/>
6. <c x="medium">du texte</c>
7. </a>
2. 1. <?xml version="1.0" ?> <!ELEMENT a (b*, c)>
2. <!DOCTYPE a SYSTEM "a.dtd"> <!ELEMENT b EMPTY>
3. <a> <!ELEMENT c (#PCDATA)>
4. <b/> <!ATTLIST b truc CDATA #IMPLIED>
5. <b truc="bidule"/>
6. <c>Et voilà</c>
7. </a>
EXERCICE 2 : (7 POINTS)
Etablir la DTD du document suivant, sachant que l’élément fleuriste est optionnel et qu’il contient
nécessairement soit un élément ville soit un élément lieu.
<composition>
<auteur>Floristore</auteur>
<date_de_creation>29/02/2001</date_de_creation>
<fleuriste>
<ville>Paris</ville>
</fleuriste>
<composants>
<vase>
<matiere>Porcelaine</matiere>
<taille>50x70 cm</taille>
</vase>
<fleurs>
<nature>Europeenne</nature>
<item>Tulipe</item>
<item>glaieul</item>
<item>Marguerite</item>
</fleurs>
</composants>
</composition>
Correction :
Syntaxe : 0.5
<!ELEMENT composition (auteur,date_de_creation,fleuriste?,composants)> 0.5
<!ELEMENT auteur (#PCDATA)> 0.5
<!ELEMENT date_de_creation (#PCDATA)> 0.5
<!ELEMENT fleuriste (lieu?,ville?)> 0.5
<!ELEMENT lieu (#PCDATA)> 0.5
<!ELEMENT ville (#PCDATA)> 0.5
Année Universitaire 2013/2014 Sem.2 Page 2/5
<!ELEMENT composants (vase,fleurs)> 0.5
<!ELEMENT vase (matiere,taille)> 0.5
<!ELEMENT matiere (#PCDATA)> 0.5
<!ELEMENT taille (#PCDATA)> 0.5
<!ELEMENT fleurs (nature,item+)> 0.5
<!ELEMENT nature (#PCDATA)> 0.5
<!ELEMENT item (#PCDATA)> 0.5
EXERCICE 3 : (8 POINTS)
Soit le document HTML ci-dessous qui permet de choisir son menu au restaurant : une entrée, un plat
principal et un dessert. L'appui sur un bouton "Envoi" permet de calculer l'addition.
Couscous
Prix à payer :
Le code HTML de cette page est la suivante :
<body>
<h1><strong>Composez votre menu </strong></h1>
<hr>
<p>Choisissez une entrée, un plat et un dessert, puis appuyez sur le bouton «Prix» </p>
<form name="f1" method="post" action="">
<p>Entrée Plat Principal Dessert </p>
<select name="s1" size="1">
<option value="15.00">Paté en croute</option>
<option value="18.00">Soupe</option>
</select>
<select name="s2" size="1">
<option value="32.00">Couscous</option>
<option value="50.00">Poisson</option>
</select>
<select name="s3" size="1">
Année Universitaire 2013/2014 Sem.2 Page 3/5
<option value="16.5">Glace</option>
<option value="17.00">Fruit</option>
</select>
<input type="button" name="prix" value="prix" onClick="addition()">
<input type="text" name="t1"> <input type="text" name="t2"> <input type="text"
name="t3">
Total: <input type="text" name="t4">
Adresse de livraison: <input type="text" name="a"> <input type="submit" name="Submit"
value="Envoi" onClick="adresseValide ()">
</form>
</body>
1. Définir la fonction JavaScript addition() qui permet de :
afficher le prix de l’entrée dans le champ t1
afficher le prix du plat principal dans le champ t2
afficher le prix du dessert dans le champ t3
calculer le prix à payer et l’afficher dans le champ t4
2. Définir la fonction JavaScript adresseValide() qui vérifie si l'adresse remplie est valide ou non.
L’adresse est valide si :
si le nombre de caractères de la chaîne est non nul.
si la chaîne contient un code postal (un nombre de 4 chiffres).
Correction :
Syntaxe: 1
<script language="JavaScript">
function addition(){
var e=document.f1.s1.options.selectedIndex; 0.5
document.f1.t1.value=document.f1.s1.options[e].value; 0.75
var pp=document.f1.s2.options.selectedIndex; 0.5
document.f1.t2.value=document.f1.s2.options[pp].value; 0.75
var d=document.f1.s3.options.selectedIndex; 0.5
document.f1.t3.value=document.f1.s3.options[d].value; 0.75
var prix=document.f1.t1.value*1+document.f1.t2.value*1+document.f1.t3.value*1; 0.75
document.f1.t4.value=prix; 0.5
}
</script>
2.
//on suppose que le code postal s’écrit en dernière position.
Cette solution n’est pas la solution optimale puisqu’on doit utiliser les expressions régulières et
personnellement je n’ai pas abordé cette partie dans le cours.
Année Universitaire 2013/2014 Sem.2 Page 4/5
Je vois qu’on ne doit pas compter cette partie de l’exercice ou attribuer un bonus pour cette
partie (vérification du code postal)
function adresseValide(){
var ad=document.f1.a.value; 1
if (ad.length == 0) 1
{alert ("Adresse vide!!");
return false;}
else { Bonus : 2
var c="012356789";
if (c.indexOf(ad.charAt(ad.length))==-1)
{alert('Le code postal est invalide');
return false;}
if (c.indexOf(ad.charAt(ad.length-1))==-1)
{alert('Le code postal est invalide');
return false;}
if (c.indexOf(ad.charAt(ad.length-2))==-1)
{alert('Le code postal est invalide');
return false;}
if (c.indexOf(ad.charAt(ad.length-3))==-1)
{alert('Le code postal est invalide');
return false;}
alert('Le code postal est valide');
return true;
}}
Bon Travail
Année Universitaire 2013/2014 Sem.2 Page 5/5