Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /dsk/www-master/html/2009/ecrire/inc/distant.php on line 699

Warning: fsockopen(): unable to connect to www-ari.ufr-info-p6.jussieu.fr:80 (php_network_getaddresses: getaddrinfo failed: Name or service not known) in /dsk/www-master/html/2009/ecrire/inc/distant.php on line 699

Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /dsk/www-master/html/2009/ecrire/inc/distant.php on line 699

Warning: fsockopen(): unable to connect to www-ari.ufr-info-p6.jussieu.fr:80 (php_network_getaddresses: getaddrinfo failed: Name or service not known) in /dsk/www-master/html/2009/ecrire/inc/distant.php on line 699

Travaux Dirigés de acii
2. Analyse de formulaires avec SAX

Cette séance est consacrée à l’analyse d’un formulaire Web pour fabrication d’une requête HTTP. Les navigateurs analysent l’arbre de syntaxe abstraite (le DOM), ici on partira du texte HTML, que le programme C à écrire recevra sur son flux d’entrée. Il admet un argument optionnel n, par défaut égal à 1, indiquant le numéro de formulaire (donc la n-ième balise form), supposé rempli, pour lequel il doit construire la requête. La fonction main se termine par l’envoi effectif des données collectées, à l’aide de fonctions qui seront définies lors de la séance sur machine.

Cette construction répertorie les saisies à l’intérieur de la balise form concernée, en suivant les spécifications des Saisies Choisies du W3C. Les seules balises à considérer sont form, option, button, input, select et textarea. Seules les quatre dernières fournissent un paramètre à inclure dans la requête, sous réserve qu’elles possèdent un attribut name. Dans quelques cas décrits ci-dessous, il faut de plus que l’attribut selected soit présent. Il n’est pas exigé que les attributs name soient tous différents (c’est utile pour les sélections multiples). La balise button, graphiquement plus souple que la balise input, n’en est qu’un sous-ensemble pour ce qui est de la construction de la requête. La balise input comporte un attribut type pouvant prendre 10 valeurs : button, checkbox, file, hidden, image, password, radio, submit, text et reset. Cette dernière valeur, qui s’adresse au navigateur, est à ignorer ici. Les autres, hormis file, sont quasiment identiques quant à la requête.

Le texte analysé sera supposé conforme XHTML strict, on fera donc appel à un Simple Analyser for XML, en n’acceptant que des balises en minuscules. En outre, on supposera qu’aucune balise form n’est imbriquée dans une autre (bien que la DTD XHTML strict le tolère honteusement).


Makefile
peroraison.c
peroraison.h
sendform.c