Easy-Micro

ESPACEMEMBRE XML
XML DSO

Utiliser le Data Source Object XML

L'affichage d'un document XML avec la technique des liaisons de données (DataBinding1) est en fait une association de différentes technologies comme le HTML, les ilôts de données XML, des scripts utilisant le modèle objet DSO (Data Source Object) et l'objet recordset ADO (ActiveX Data Object).

Pour établir une liaison entre des éléments HTML et XML, on utilise le modèle objet DSO (Data Source Object). XML DSO décompose un document XML en différents enregistrements (recordset). L'exemple ci-dessous est un document HTML qui appel le fichier XML "boutique.xml".

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="monstyle.css" rel="stylecheet" type="text/css" />

<script type="text/javascript">

function premier() {
nav = xmldso.recordset;
nav.absoluteposition = 1;
}

function precedent() {
nav = xmldso.recordset;
if (nav.absoluteposition > '1') { nav.movePrevious(); }
}

function suivant() {
nav = xmldso.recordset;
if (nav.absoluteposition < nav.recordcount) { nav.moveNext(); }
}


function dernier() {
nav = xmldso.recordset;
nav.absoluteposition = nav.recordcount;
}

</script>
</head>
<body>

<!-- début de l'ilôt de données -->
<h1>Nos Articles</h1>
<xml src="boutique.xml" id="xmldso" async="false"></xml>
<div align="center"><br />
Articles : <span datasrc="#xmldso" datafld="libelle"></span><br />
Prix : <span datasrc="#xmldso" datafld="prix"></span></div>
<!-- fin de l'ilôt de données -->

<div align="center"><br />
<input type="button" value=" |&lt;" onclick="premier();" />
<input type="button" value=" &lt;" onclick="precedent();" />
<input type="button" value=" &gt;" onclick="suivant();" />
<input type="button" value=" &gt;|" onclick="dernier();" />
</div>

</body></html>

Attention: le fichier XML ne doit pas comporter de liens vers un fichier de style.

Méthodes liée à un jeu d'enregistrement

premier() affiche la première page des enregistrements.
dernier() affiche la dernière page des enregistrements.
suivant() affiche la page suivante des enregistrements.
precedent() affiche la page précédente des enregistrements.

Méthodes et propriétés d'un recordset

recordset.addNew() permet l'ajout d'un enregistrement dans le jeu d'enregistrements du cache.
recordset.delete() permet la suppression d'un enregistrement dans le jeu d'enregistrements du cache.
recordset.move(valeur) permet un déplacement vers l'enregistrement spécifié.
recordset.moveFirst() permet un déplacement vers le premier enregistrement.
recordset.moveLast() permet un déplacement vers le dernier enregistrement.
recordset.moveNext() permet un déplacement vers l'enregistrement suivant.
recordset.movePrevious() permet un déplacement vers l'enregistrement précédent.
recordset.BOF est une propriété indiquant que l'on a atteint le début d'un jeu d'enregistrement.
recordset.EOF est une propriété indiquant que l'on a atteint la fin d'un jeu d'enregistrement.
recordset.fields("nom_champ").value est une propriété permettant d'atteindre et d'extraire le contenu d'un champ.
fields est une collection de tous les champs d'un enregistrement.

1 - Le DataBinding (association de données) est une technologie permettant d'automatiser la transformation d'un modèle de données en un modèle de données objets dans un langage de programmation. Autrement dit, il permet par exemple de convertir les fichiers XML en instances de classes Java.

Ligne à rajouter au milieu de la fonction "precedent()"

if (nav.absoluteposition == '1') { alert('Vous êtes sur le premier'); }


Ligne à rajouter au milieu de la fonction "suivant()"

if (nav.absoluteposition == nav.recordcount) { alert('Vous êtes sur le dernier'); }


Exemple de boucle sur le bouton "suivant" (remplace le if actuel de la fonction "suivant()")

if(nav.absolutposition >= nav.recordcount) { nav.moveFirst(); }
else { nav.moveNext(); }


Exemple de boucle sur bouton "précédent" (remplace le if actuel de la fonction "precedent()")

if(nav.absolutposition <= '1') { nav.moveLast(); }
else { nav.movePrevious(); }


< Page précédente XML