[DOM] Injection de données dans des balises exotiques
	
	
		Bonjour,
Voici le problème : Je dois créer un système de balises exotiques (avec un namespace bidon, peu importe s'il n'y a pas de validation HTML), permettant d'injecter des données issus d'objets javascript.
J'y suis presque mais je n'arrive pas à faire fonctionner cela dans internet explorer.
Voici le code de test :
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
   | 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>Exotic HTML</title>
		<script language="Javascript">
			
			function Thing(name) {
				this.name = name;
			}
			
			function Display() {
				
				this.init = function() {
					
					this.list = document.getElementById("list").getElementsByTagName("li");
					this.display = new Array();
					
					for (var i = 0; i < this.list.length; i++) {
						// Nouvel objet						
						this.display[i] = new Object();
						// Référencer le noeud source
						this.display[i].tags = this.list[i];
						// Cloner en profondeur la hiérarchie pour s'en servir comme modèle pour lors des mises à jour
						this.display[i].template = this.list[i].cloneNode(true);
					}	
				}
				
				this.doit = function() {
					
					for (var i = 0; i < this.list.length; i++) {
						
						// Remplacer les noeuds enfants par un clone en profondeur du modèle
						this.display[i].tags.replaceChild(this.display[i].template.firstChild.cloneNode(true), this.display[i].tags.firstChild);
						
						// Trouver le noeud à modifier
						var elements = this.display[i].tags.getElementsByTagName("my:name");
						// Pour internet explorer
						if (elements.length == 0)
							elements = this.display[i].tags.getElementsByTagName("name");
						alert(elements[0].nodeType + " " + elements[0].nodeValue +  " " + elements[0].nodeName);
						
						// Injection des données
						if (elements[0].hasChildNodes()) {
							// Pour les navigateurs standards
							elements[0].firstChild.nodeValue = elements[0].firstChild.nodeValue.replace(/name/, results[i].name);
						} else {
							// Pour internet explorer
							var node = document.createTextNode(results[i].name);
							elements[0].appendChild(node);							
						}
					}	
				}
				
				this.append = function() {
						var debug = document.getElementById("debug");
						var elements = this.display[0].tags.getElementsByTagName("my:name");
						if (elements.length == 0)
							elements = this.display[0].tags.getElementsByTagName("name");
						debug.innerHTML = elements.toString() + " " + elements.length + " " + elements[0].nodeType;
						var text = document.createTextNode(results[0].name);
						elements[0].appendChild(text);
				}
			}
			
			function init() {
				display.init();
			}
			
			var results = new Array();
			results[0] = new Thing("thing1");
			results[1] = new Thing("thing2");
			results[2] = new Thing("thing3");
			
			var display = new Display();
				
		</script>
	</head>
	<body onload="init();">
		
		<ul id="list">
			<li>
				<my:thing>
					<my:name>name</my:name>				
				</my:thing>
			</li>
			<li>
				<my:thing>
					<my:name>name</my:name>					
				</my:thing>
			</li>
			<li>
				<my:thing>
					<my:name>name</my:name>					
				</my:thing>
			</li>
		</ul>
		
		<textarea id="debug" clos="80" rows="20"></textarea>
		<button onclick="display.doit();">do it</button>
		<button onclick="display.append();">append</button>
		
	</body>
</html> | 
 L'erreur que j'ai est "Demande d'accès à la méthode ou aux propriétés inattendue" pour la ligne :
	Code:
	
1 2
   |  
elements[0].appendChild(node);  | 
 et la ligne
	Code:
	
1 2
   |  
elements[0].appendChild(text);  | 
 Qui saurait me dire pourquoi.
Merci