Une des sources de frustration des débutants lorsqu’ils découvrent XML et l’API DOM est que les éléments n’existent pas sans une référence à un document. En effet, l’API DOM prévoit une méthode document.createElement, mais il n’est pas possible de créer un document sans avoir d’abord un document. En ce sens, un document XML n’est pas un arbre au sens classique des structures de données.
Cela peut surprendre, mais il faut voir qu’un élément et son contenu peuvent dépendre du documents de plusieurs façons: les espaces de noms sont généralement définis dans d’autres éléments que dans l’élément courant, les entités peuvent être définies dans une DTD qui appartient au document et non à l’élément, l’encodage de caractères est défini pour le document dans son entier, mais pas pour chaque élément, il y a des valeurs d’attribut implicites, etc.
Cela a des conséquences importantes en programmation AJAX. L’API DOM ne nous assure pas qu’on puisse faire passer les éléments d’un document à un autre sans problème lorsque nous recevons du XML du serveur et qu’on désire l’intégrer à la page web. Il faut utiliser la fonction « importNode » (disponible tant en Java qu’en ECMAScript). Il faut tout de même s’assurer de ne pas mélanger les espaces de noms sans faire attention!
On peut aussi échanger des fragments de documents avec la norme XML Fragment Interchange.