Bonjour,
j'ai un souci lors du traitement de responseXML sur un xml généré par une servlet :
Ci-dessous un morceau du xml généré.
C'est complètement fonctionnel avec FF, mais IE6, me jette.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <?xml version="1.0" encoding="UTF-8"?>
<tab>
<entete>
<colonne>Numero</colonne>
<colonne>Date</colonne> <colonne>Operateur</colonne>
<colonne>Libelle</colonne>
<colonne>Nature</colonne>
<colonne>Type</colonne>
<colonne>Evenement</colonne>
<colonne>Rapport</colonne> </entete> <Evenements>
<Evt>
<Numero>22</Numero>
<Date>2007-02-13 11:13:21.0</Date>
<Operateur>olivier</Operateur>
<Libelle></Libelle>
<Nature>feu</Nature>
<Type>incendie</Type>
<Evenement>niveau 1</Evenement>
<Rapport>NONE</Rapport>
</Evt>
..... |
J'appelle ces deux fonctions pour constituer mes documents DOM et XSLT
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
| GetxmlDoc = function()
{
xmlDoc = null;
var xhr_object = CreerInstanceAjax();
xhr_object.open("POST","Control2?action=MCGetEvenementX&etape=xmlDoc",true);
// Ce code s'execute lorsque la reponse arrive.
xhr_object.onreadystatechange = function()
{
if(xhr_object.readyState == 4)
{
if (xhr_object.status==200)
{
alert("xmlDoc statut 200 : OK");
xmlDoc = xhr_object.responseXML;
alert("nb elements direct fils xmlDoc : "+xmlDoc.childNodes.length);
if(xslDoc != null && xmlDoc != null)
{
alert('xml : deux non null');
display();
}
}
}
}
xhr_object.send(null);
}
GetxslDoc = function()
{
xslDoc=null;
var xhr_object = CreerInstanceAjax();
xhr_object.open("POST","Control2?action=MCGetEvenementX&etape=xslDoc",true);
xhr_object.onreadystatechange = function()
{
if(xhr_object.readyState == 4)
{
if( (xhr_object.responseText!="AUCUN") )
{
xslDoc = xhr_object.responseXML;
alert("nb elements direct fils xslDoc : "+xslDoc.childNodes.length);
if(xslDoc != null && xmlDoc != null)
{
alert('xsl : deux non null');
display();
}
}
}
}
xhr_object.send(null);
} |
A un moment, les deux son non nuls, je rentre alors dans le display()
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
| display = function()
{
alert('display');
var outPut = document.getElementById("output");
alert("outPut "+outPut);
try // IE
{
alert('ie');
outPut.innerHTML = null;
alert('ie2');
outPut.innerHTML = "toto";
alert('ie2.5');
alert("nb colonnes : "+xmlDoc.getElementsByTagName("Colonne").length);
outPut.innerHTML = xmlDoc.transformNode(xslDoc);
alert('ie3');
}
catch(exc)// Mozilla
{
try
{
alert('Firefox');
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
var fragment = xsltProcessor.transformToFragment(xmlDoc, document);
outPut.appendChild(fragment);
majbutton();
}
catch(exc)
{
alert('fonction display Exception');
}
}
}// fin de display |
Et cette instruction leve une exception sous IE :
outPut.innerHTML = xmlDoc.transformNode(xslDoc);
Je signale que je construis mon objet xhr-request correcement, en tenant compte de IE et de FF.
Merci aux bonnes ames aptes à m'aider ^^
Partager