Génération de XML à partir d'un document HTML
Les feuilles de style XSL permettent de convertir des documents XML en HTML.
Si on souhaite générer une requête XML à partir d'un formulaire HTML, il faut développer une fonction spécialisée.
Le script décrit dans cet article propose une solution standardisée permettant de répondre à ce besoin dans bon nombre de cas.
|
|
|
Principe |
Le principe est d'utiliser les noms d'éléments FORM et INPUT du document source HTML comme noms d'éléments XML.
Le script parcourt les différents champs définis dans les différents formulaires, et construit le XML.
Les formulaires et les champs dont le nom commence par le caractère souligné (_) sont ignorés.
Un premier exemple trés simple est représenté ci-dessous :
|
Formulaire HTML |
XML généré |
|
<?xml version='1.0'?>
<REQUETE>
<DEMANDE_DISPO>
<DISPONIBILITE>
<NBPASSADLT>2</NBPASSADLT>
<NBPASSENFT>1</NBPASSENFT>
<DATE_ALLER>170703</DATE_ALLER>
<DATE_RETOUR>240703</DATE_RETOUR>
<VILLE_DEP>PARIS</VILLE_DEP>
<VILLE_ARRIVEE>TUNIS</VILLE_ARRIVEE>
</DISPONIBILITE>
</DEMANDE_DISPO>
</REQUETE>
|
|
|
Source HTML correspondante |
|
<html>
<head>
<!-- Page HTML exemple 1 pour routines computeForms -->
<!-- Auteur : Thierry SEUNEVEL - 12/07/2003 -->
<Script src="computeForms.js"></Script>
<title>Simulateur de requete XML demande de dispo</title>
</head>
<body >
<!-- formulaire contenant paramètres necessaires a la constitution du document XML -->
<Form name="_PARAMETRES">
<input type="Hidden" name="XMLVersion" value="?xml version='1.0'?">
<input type="Hidden" name="ELEMENT" value="REQUETE">
<input type="Hidden" name="ELEMENT" value="DEMANDE_DISPO">
</Form>
<Table width = "400" border=1 cellpadding=1 cellspacing=1>
<!-- Formulaire affiché et dans lequel les données sont saisies -->
<Form name="DISPONIBILITE">
<tr><td colspan="3" align="center"><strong >Exemple 1</strong></td></tr>
<tr align="center" ><td rowspan="2" >Nombre passagers</td>
<td bgcolor="Silver">Adultes</td>
<td bgcolor="Silver">Enfants</td></tr>
<tr align="center" >
<td ><input name="NBPASSADLT" size="5" value="2"/></td>
<td ><input name="NBPASSENFT" size="5" value="1"/></td></tr>
<tr align="center" >
<td rowspan="2" >Dates</td>
<td bgcolor="Silver">Aller</td>
<td bgcolor="Silver">Retour</td></tr>
<tr align="center" >
<td ><input name="DATE_ALLER" size="10" value="170703"/></td>
<td ><input name="DATE_RETOUR" size="10" value="240703"/></td></tr>
<tr align="center" >
<td rowspan="2" >Villes</td>
<td bgcolor="Silver">Départ</td>
<td bgcolor="Silver">Arrivée</td></tr>
<tr align="center" >
<td ><input name="VILLE_DEP" size="10" value="PARIS"/></td>
<td ><input name="VILLE_ARRIVEE" size="10" value="TUNIS"/></td></tr>
</form>
</table>
<!-- Formulaire reel destiné à envoyer les données saisies -->
<Form name="_FormFin">
<input type="Button" name="_FormFin" value="Execute" onclick="computeXML()"/>
<textarea name="xml" rows="10" cols="80"></textarea>
</form>
</body>
</html>
|
|
|
- Le script extrait les informations d'en-tête et les premiers niveaux d'éléments d'un formulaire nommé _PARAMETRES.
Les formulaires dont le nom commence par un souligné (_) ne sont pas traités par le script pour générer le corps du document XML.
Le formulaire _PARAMETRES ainsi que les champs XMLVersion et ELEMENT sont utilisés conventionnellement par le script pour stocker les informations correspondantes.
Les champs étant de type HIDDEN, ce formulaire n'est pas affiché.
- Le formulaire nommé DISPONIBILITE est transformé en élément de même nom, et chacun des champs qu'il contient (NBPASSADLT, NBPASSENFT ...)devient un sous-élément.
- Le formulaire _FormFin est le seul formulaire exécutable de la page. C'est lui qui va permettre de traiter la requête de l'utilisateur. Ici, comme dans les autres exemples présentés, l'action exécute le script de conversion et affiche le résultat dans un champ de type TEXTAREA
|
|
© Thierry Seunevel (2004) |
www.seusoft.com |
|
|