xHTML et DOM
L'ancien modèle DOM niveau 0 utilise énormément le nommage des éléments accessible par la propriété name. Ce mode d'accès est théoriquement devenu obsolète.
La raison de cet obsolescence est liée au fait que plusieurs éléments peuvent partager le même nom. La méthode actuellement préconisée est le recours à l'identifiant id
qui est unique sur le document.
<form name="localisation">
<input type="text" name="adresse" value=""/>
</form>
<script type="text/javascript">
// adressage par tableau associatif de formulaires
document.forms["localisation"].adresse.value='Émile';
// adressage par nom de formulaire
document.forms.localisation.adresse.value='Émile';
// adressage par tableau indicé de formulaires
document.forms[0].adresse.value='Émile';
// adressage par nom sans préciser de formulaire
document.localisation.adresse.value='Émile';
</script>
Il y a plusieurs moyens pour adresser les éléments en DOM version 0 pouvant être ou ne pas être pris en compte par tous le navigateurs. Il sera préférable d'éviter l'utilisation des tableaux indicés car l'indice correspond à l'ordre d'apparition du formulaire dans la page, et les utiliser rendra la maintenance difficile.
intermédiairesdatent de la période de la guerre opposant Microsoft et Nestcape.
On voit l'avantage de l'utilisation du xHTML qui de par sa structure cohérente permet des manipulations à partir d'outils standards. Le HTML qui est conforme au SGML ne bénéficie pas de tels outils car sa structure est permissive. Par exemple les balises n'ont pas besoin d'être fermées en fonction de leur type ...
<script type="text/javascript">
if (document.getElementById && document.createElement)
alert("Ce navigateur est conforme au DOM niveau 1");
</script>
Ces possibilités correspondent à celles offertes par les applications du web 2.0 qui permettent de modifier des zones dans une page sans avoir à recharger tout le document.
var v = new Text("voici un texte");
var v = document.createTextNode("voici un texte");
Les interfaces définissent une série de méthodes et de propriétés permettant d'interroger l'état de l'arbre, de le parcourir et de le modifier.
À partir de chaque nœud pris comme base de départ il est possible d'explorer complètement l'arborescence du document et de le modifier dynamiquement en interaction avec des déclenchements d'événements provoqués par l'utilisateur.
La méthode document.createElement() permet de créer un élément.
La méthode element.appendChild() permet d'insérer un élément dans un autre élément.
nd = getElementById('id_elmt')
nd.nodeType
indique le type du nœud nd, les valeurs possibles sont données par le tableau suivant :
type de nœud | valeur de retour |
---|---|
Element | 1 |
Attribute | 2 |
Text | 3 |
Comment | 8 |
Document | 9 |
nd.nodeName
donne le nom du nœud nd c'est à dire :nd.nodeValue
donne le contenu du nœud nd c'est à dire :nd.data
n'est applicable que pour les nœuds de type texte et donne ou affecte leur contenu actuel.nd.attributes
retourne un tableau indicé de toutes les propriétés du nœud.On peut regretter que la spécification du niveau 3 ne soit pas déjà finalisée, mais pour manipuler un document XML le DOM niveau 2 apporte à lui seul un ensemble assez complet.
On voit l'avantage de l'utilisation du xHTML qui de par sa structure cohérente permet des manipulations à partir d'outils standards. Le HTML qui est conforme au SGML ne bénéficie pas de tels outils car sa structure est permissive. Par exemple les balises n'ont pas besoin d'être fermées en fonction de leur type ...
Les fonctionnalités du niveau 1 sont incluses dans les fonctionnalités du niveau 2 qui sont incluses dans les fonctionnalités du niveau 3.