[DOM] DOM XML, ne marche pas sous Firefox
Bonjour,
Voila j'ai un bout de code simple qui normalement devrait bien fonctioner sur IE et FF, mais malheureusement cela ne marche pas, alors peut être pourriez vous m'aidez,
Voila le code du fichier XML (simple) Fichier : annuaire.xml
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
| <?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE annuaire SYSTEM "annuaire.xsd">
<annuaire>
<personne>
<denomination>
<nom>toto</nom>
<prenom>tata</prenom>
</denomination>
<adresse>
<telephone>
<fixe>00.00.00.00.00.</fixe>
<portable>00.00.00.00.00.</portable>
</telephone>
<rue numero="10">henri</rue>
<ville>xxxx</ville>
<code>12345</code>
</adresse>
</personne>
<personne>
<denomination>
<nom>titi</nom>
<prenom>tutu</prenom>
</denomination>
<adresse>
<telephone>
<fixe>00.00.00.00.00.</fixe>
<portable>00.00.00.00.00.</portable>
</telephone>
<rue numero="10">henri</rue>
<ville>xxxx</ville>
<code>123456</code>
</adresse>
</personne>
</annuaire> |
le XSD : (annuaire.xsd)
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
| <?xml version="1.0" encoding="ISO-8859-1"?>
<element name="annuaire" xmlns="http://relaxng.org/ns/structure/1.0">
<oneOrMore>
<element name="personnes">
<element name="denomination">
<element name="nom">
<text/>
</element>
<element name="prenom">
<text/>
</element>
</element>
<element name="adresse">
<element name="telephone">
<element name="fixe">
<text/>
</element>
<element name="portable">
<text/>
</element>
</element>
<element name="rue">
<attribute name="numero">
<text/>
</attribute>
<text/>
</element>
<element name="ville">
<text/>
</element>
<element name="code">
<text/>
</element>
</element>
</element>
</oneOrMore>
</element> |
et enfin le Java : (fichier HTML)
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
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" src="writeResult.js"
type="text/javascript">
</script>
<script language="javascript" src="submitFormNom.js"
type="text/javascript">
</script>
<title></title>
</head>
<body>
<form method="post"
name="ajax"
action="#"
id="ajax">
Nom : <input type="text"
name="rechercheNom"
value="NOM" />
<input type="BUTTON"
value="Submit"
onclick="submitFormNom()" />
Prénom : <input type="text"
name="recherchePrenom"
value="PRENOM" />
<input type="BUTTON"
value="Submit"
onclick="submitFormPrenom()" />
</form>
<div id="resultats">
</div>
</body>
</html> |
(fichier submitFormNom.js)
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
| function submitFormNom()
{
document.getElementById("resultats").innerHTML = "";
var xhr;
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e) {
try {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e2) {
try {
xhr = new XMLHttpRequest();
}
catch (e3) {
xhr = false;
}
}
}
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
if(xhr.status == 200) {
var preparation = '<table border="1"><tr>';
preparation += '<td rowspan="2">Nom</td>';
preparation += '<td rowspan="2">Prénom</td>';
preparation += '<td rowspan="2">Adresse</td>';
preparation += '<td colspan="2">telephone</td>';
preparation += '</tr><tr>';
preparation += '<td>Fixe</td>';
preparation += '<td>Portable</td>';
preparation += '</tr></table>';
document.getElementById("resultats").innerHTML = preparation;
var doc = xhr.responseXML;
var root = doc.getElementsByTagName('annuaire').item(0);
var personne = root.firstChild;
var nom = personne.getElementsByTagName('nom').item(0);
var recherche = document.ajax.rechercheNom.value.toLowerCase();
if (nom.firstChild.nodeValue.toLowerCase().match(recherche) == recherche) {
writeResultat(personne);
}
while(personne.nextSibling != null) {
personne = personne.nextSibling;
var nom = personne.getElementsByTagName('nom').item(0);
if (nom.firstChild.nodeValue.toLowerCase().match(recherche) == recherche) {
writeResultat(personne);
}
}
}
else {
//document.ajax.dyn.value="Error code " + xhr.status;
}
}
};
xhr.open( "GET", "annuaire.xml", true);
xhr.send(null);
} |
(fichier writeResult.js)
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
| function writeResultat(personne) {
var xhr;
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e) {
try {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e2) {
try {
xhr = new XMLHttpRequest();
}
catch (e3) {
xhr = false;
}
}
}
xhr.open( "GET", "annuaire.xml", true);
xhr.send(null);
var doc = xhr.responseXML;
var nom = personne.getElementsByTagName('nom').item(0);
var prenom = personne.getElementsByTagName('prenom').item(0);
var fixe = personne.getElementsByTagName('fixe').item(0);
var portable = personne.getElementsByTagName('portable').item(0);
var rue = personne.getElementsByTagName('rue').item(0);
var ville = personne.getElementsByTagName('ville').item(0);
var code = personne.getElementsByTagName('code').item(0);
var numero = personne.getElementsByTagName('rue').item(0).getAttribute('numero');
var resultat = '<table><tr>';
resultat += '<td>' + nom.firstChild.nodeValue + '</td>';
resultat += '<td>' + prenom.firstChild.nodeValue + '</td>';
resultat += '<td>' + numero + ' ' + rue.firstChild.nodeValue + ' ' + code.firstChild.nodeValue + ' ' + ville.firstChild.nodeValue + '</td>';
resultat += '<td>' + fixe.firstChild.nodeValue + '</td>';
resultat += '<td>' + portable.firstChild.nodeValue + '</td></tr></table>';
document.getElementById("resultats").innerHTML += resultat;
} |