Discussion:
Gros fichier XML sous IE6
(trop ancien pour répondre)
Jean-Nicolas BERGER
2005-12-09 12:50:02 UTC
Permalink
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 ('');
}

}
Virgul
2005-12-13 12:51:02 UTC
Permalink
Bsonjour,

Ce qu'il faut tenir en compte est qu'un XML de plus de 75Mo vous embêtera
toujours! Car a partir de cette limite le traitement devient très très
fastidieux et ne peux par conséquent pas être traité sur toute les machines!

Solution: Scinder son XML en plusieurs partie (25Mo étant le taille maximal
à mon avis )!

++

Thierry
Post by Jean-Nicolas BERGER
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
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 ('');
}
}
Jean-Nicolas BERGER
2005-12-14 08:16:02 UTC
Permalink
Bonjour,
Le fait que le traitement soit fastidieux ne me gène pas en soit, on a le
temps d'attendre la réponse.
Par contre, le plus embêtant, c'est que certaines configurations ne trouvent
pas de concordances avec le aplly-templates, alors que d'autres en trouvent
(et à juste titre), le tout sans jamais signaler d'erreur, ni dans une cas,
ni dans l'autre...
Cordialement.
JN BERGER
Post by Virgul
Bsonjour,
Ce qu'il faut tenir en compte est qu'un XML de plus de 75Mo vous embêtera
toujours! Car a partir de cette limite le traitement devient très très
fastidieux et ne peux par conséquent pas être traité sur toute les machines!
Solution: Scinder son XML en plusieurs partie (25Mo étant le taille maximal
à mon avis )!
++
Thierry
Post by Jean-Nicolas BERGER
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
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 ('');
}
}
Virgul
2005-12-14 15:20:02 UTC
Permalink
Ah ok désolé j'avais pas compris ca!

Moi a mon avis ca doit venir du parseur Msxml qui doit être différent entre
la sp1 et la sp2 (je suis pas sure mais regarde de ce coté) car ca
m'étonnerait que ce soit un problème de mémoire qui fasse que les
apply-template ne soit pas trouvé

++

Thierry
Post by Jean-Nicolas BERGER
Bonjour,
Le fait que le traitement soit fastidieux ne me gène pas en soit, on a le
temps d'attendre la réponse.
Par contre, le plus embêtant, c'est que certaines configurations ne trouvent
pas de concordances avec le aplly-templates, alors que d'autres en trouvent
(et à juste titre), le tout sans jamais signaler d'erreur, ni dans une cas,
ni dans l'autre...
Cordialement.
JN BERGER
Post by Virgul
Bsonjour,
Ce qu'il faut tenir en compte est qu'un XML de plus de 75Mo vous embêtera
toujours! Car a partir de cette limite le traitement devient très très
fastidieux et ne peux par conséquent pas être traité sur toute les machines!
Solution: Scinder son XML en plusieurs partie (25Mo étant le taille maximal
à mon avis )!
++
Thierry
Post by Jean-Nicolas BERGER
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
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 ('');
}
}
Patrice Manac'h
2005-12-20 18:08:13 UTC
Permalink
Bonjour,

de fait, il y a de fortes chances que la version de MSXML entre les deux
postes diffère et que cela explique vos résultats.

Cordialement,

Patrice Manac'h
MCS France
Post by Virgul
Ah ok désolé j'avais pas compris ca!
Moi a mon avis ca doit venir du parseur Msxml qui doit être différent entre
la sp1 et la sp2 (je suis pas sure mais regarde de ce coté) car ca
m'étonnerait que ce soit un problème de mémoire qui fasse que les
apply-template ne soit pas trouvé
++
Thierry
Post by Jean-Nicolas BERGER
Bonjour,
Le fait que le traitement soit fastidieux ne me gène pas en soit, on a le
temps d'attendre la réponse.
Par contre, le plus embêtant, c'est que certaines configurations ne trouvent
pas de concordances avec le aplly-templates, alors que d'autres en trouvent
(et à juste titre), le tout sans jamais signaler d'erreur, ni dans une cas,
ni dans l'autre...
Cordialement.
JN BERGER
Post by Virgul
Bsonjour,
Ce qu'il faut tenir en compte est qu'un XML de plus de 75Mo vous embêtera
toujours! Car a partir de cette limite le traitement devient très très
fastidieux et ne peux par conséquent pas être traité sur toute les machines!
Solution: Scinder son XML en plusieurs partie (25Mo étant le taille maximal
à mon avis )!
++
Thierry
Post by Jean-Nicolas BERGER
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
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 ('');
}
}
Loading...