Jean-Nicolas BERGER
2005-12-09 12:50:02 UTC
Bonjour,
J'ai un petit souci de transformation par XSLT sous IE6.
J'appelle via un fichier HTM un traitement XSLT pour faire une recherche
dans un fichier XML.
Le fichier XSLT fait en gros des apply-templates . Je mets en fin de message
un extrait du fichier HTM, à savoir l'appel du traitement XSLT.
Le souci est le suivant : sur les gros fichiers (essais menés sur un fichier
XML de 425Mo), le traitement diffère entre une machine sous Windows XP SP2
disposant de 1Go de RAM (il trouve des résultats sur des critères de
recherche donnés - résultats corrects) et une machine XP SP1 disposant de
512Mo de RAM (qui ne trouve aucun résultat sur les mêmes critères, mais sans
signaler d'erreur particulière -pas de boite alert- ). A noter que la mémoire
allouée sur les PC monte allègrement au-delà du Go.
Est-ce que cela peut être dû au Service Pack de XP, ou à la mémoire
physique, ou à un autre paramètre qui ne me serait pas venu à l'idée?
Je vous remercie d'avance de votre aide.
JN
Extrait de code:
function traitement(fichier) {
var xml;
var xslt;
var xslTemp;
var xslProc;
var resultat;
window.status = "Chargement en cours du fichier " + fichier + " ...";
xml = new ActiveXObject("Msxml2.DOMDocument");
xml.async=false;
xml.load(fichier);
window.status = "Recherche en cours dans le fichier " + fichier + " ...";
xslt = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
xslt.async=false;
xslt.load("traitement.xsl");
xslTemp = new ActiveXObject("Msxml2.XSLTemplate");
xslTemp.stylesheet = xslt;
xslProc = xslTemp.createProcessor();
xslProc.input = xml;
xslProc.addParameter("Reference", formulaire.reference.value);
xslProc.addParameter("Nom", formulaire.nom.value);
xslProc.addParameter("Prenom", formulaire.prenom.value);
xslProc.addParameter("Date_Debut", formulaire.date_debut.value);
xslProc.addParameter("Date_Fin", formulaire.date_fin.value);
try
{
xslProc.transform;
resultat = xslProc.output;
window.status = '';
return (resultat);
}
catch(e)
{
alert ('Erreur : ' + e.description);
window.status = '';
return ('');
}
}
J'ai un petit souci de transformation par XSLT sous IE6.
J'appelle via un fichier HTM un traitement XSLT pour faire une recherche
dans un fichier XML.
Le fichier XSLT fait en gros des apply-templates . Je mets en fin de message
un extrait du fichier HTM, à savoir l'appel du traitement XSLT.
Le souci est le suivant : sur les gros fichiers (essais menés sur un fichier
XML de 425Mo), le traitement diffère entre une machine sous Windows XP SP2
disposant de 1Go de RAM (il trouve des résultats sur des critères de
recherche donnés - résultats corrects) et une machine XP SP1 disposant de
512Mo de RAM (qui ne trouve aucun résultat sur les mêmes critères, mais sans
signaler d'erreur particulière -pas de boite alert- ). A noter que la mémoire
allouée sur les PC monte allègrement au-delà du Go.
Est-ce que cela peut être dû au Service Pack de XP, ou à la mémoire
physique, ou à un autre paramètre qui ne me serait pas venu à l'idée?
Je vous remercie d'avance de votre aide.
JN
Extrait de code:
function traitement(fichier) {
var xml;
var xslt;
var xslTemp;
var xslProc;
var resultat;
window.status = "Chargement en cours du fichier " + fichier + " ...";
xml = new ActiveXObject("Msxml2.DOMDocument");
xml.async=false;
xml.load(fichier);
window.status = "Recherche en cours dans le fichier " + fichier + " ...";
xslt = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
xslt.async=false;
xslt.load("traitement.xsl");
xslTemp = new ActiveXObject("Msxml2.XSLTemplate");
xslTemp.stylesheet = xslt;
xslProc = xslTemp.createProcessor();
xslProc.input = xml;
xslProc.addParameter("Reference", formulaire.reference.value);
xslProc.addParameter("Nom", formulaire.nom.value);
xslProc.addParameter("Prenom", formulaire.prenom.value);
xslProc.addParameter("Date_Debut", formulaire.date_debut.value);
xslProc.addParameter("Date_Fin", formulaire.date_fin.value);
try
{
xslProc.transform;
resultat = xslProc.output;
window.status = '';
return (resultat);
}
catch(e)
{
alert ('Erreur : ' + e.description);
window.status = '';
return ('');
}
}