Faire une liaison externe avec un fichier xml
Bonjour, j'ai un problème avec un javascript qui sert a faire fonctionner les xml data island sous firefox, je voudrais pouvoir mettre le xml hors de la page grace a la balise standard <xml id="7777" src="tt.xml"></xml>
mais le javascript lui ne veut pas et comme je n'y connais rien je trouve pas la solution
voici le code
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 107 108 109 110 111 112 113 114 115
| <HTML><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/plain; charset=utf-8">
<title>XML data islands </title>
<style type="text/css">
xml {display: none;}
</style>
<script language="JavaScript" type="text/JavaScript">
function getTable(identifiant){
//Récupère toutes les balises TABLE
var balisesTables = document.getElementsByTagName("table");
for (var i=0; i < balisesTables.length; i++) {
var table = balisesTables[i];
//Pour chaque TABLE trouvée regarde si l'attribut datasrc correspond à l'indentifiant
if (table.getAttribute("datasrc") == "#"+identifiant){
//C'est la bonne TABLE
return table;
}
}
return null;
}
function getdatafldNom(table){
var datafldNom = new Array();
// Récupère toutes les balises DIV de la table Modèle
var balisediv = table.getElementsByTagName("div");
//Recupère la valeur de l'attribut datafld des balises DIV
//Mette cette valeur dans le tableau datafldNom
for (var i=0; i < balisediv.length; i++) {
var datafld = balisediv[i].getAttribute("datafld");
datafldNom[i] = datafld;
}
return datafldNom;
}
function getXmlValue(identifiant,allDatafldTitre){
var valeurs = new Array();
//Recupère le XML don lID est égal à identifiant
var objXml = document.getElementById(identifiant);
//Parcour la structure du XML
for (var i=0; i < allDatafldTitre.length; i++) {
//Recupère la balise ayant comme nom (nom prenom age)
var tableValeur =objXml.getElementsByTagName(allDatafldTitre[i]);
valeurs[i] = new Array();
//Recupère les valeurs des balises de même nom
for(var j=0;j<tableValeur.length;j++){
valeurs[i][j] =tableValeur[j].firstChild.nodeValue;
}
}
return valeurs;
}
function setTable(montableau,alldatafldTitre,alldatafldValue){
//Efface le TR du TABLE
montableau.deleteRow(0);
//Remplie le tableau avec les valeurs du XML
for (var row = 0; row < alldatafldValue[0].length; row++) {
//Creation d'une ligne TR
var tr = montableau.insertRow(row);
for (var col=0; col < alldatafldTitre.length; col++ ) {
//Creation d'une cellule TD
var td = tr.insertCell(col);
//Assignation de la valeur dans la cellule TD
td.innerHTML = alldatafldValue[col][row];
//Assignation de la cellule TD a la ligne TR
tr.appendChild(td);
}
}
}
function traitexml(){
if(document.all){
}else{
var montableau = getTable("dmc");
var alldatafldTitre = getdatafldNom(montableau);
var alldatafldValue = getXmlValue("dmc",alldatafldTitre);
setTable(montableau,alldatafldTitre,alldatafldValue);
}
}
</script>
</head>
<body onload="traitexml()">
Pour les Utilisateurs de Netscape, FireFox,... Afficher le code source pour voir le code
<xml id="dmc">
<donnes>
<personne>
<nom>Dmc1</nom>
<prenom>Alias1</prenom>
<age>12</age>
</personne>
<personne>
<nom>Dmc</nom>
<prenom>Alias</prenom>
<age>120</age>
</personne>
</donnes>
</xml>
<table datasrc="#dmc" border="1" id="">
<tr>
<td><div datafld="nom"></div></td>
<td><div datafld="prenom"></div></td>
<td><div datafld="age"></div></td>
</tr>
</table>
<hr>
<div datasrc="#dmc" datafld="nom"></div>
<div datasrc="#dmc" datafld="prenom"></div>
<div datasrc="#dmc" datafld="age"></div>
</body>
</html> |
merci de votre aide