Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

xsltproc sur de gros fichiers

6 views
Skip to first unread message

CrazyCat

unread,
Nov 17, 2009, 11:31:26 AM11/17/09
to
Bonjour,

Je ne sais pas si ce groupe convient pour ma question, mais je tente
quand m�me, quelqu'un saura bien m'aiguiller vers le bon groupe si
n�cessaire :)

Je dois proc�der � des transformations xsl sur des fichiers xml, jusque
l� que du normal.
Pour se faire, j'utilise xsltproc et �a fonctionne plut�t bien avec des
fichiers XML allant jusqu'� 100Mo. Mais au dessus (il y en a un de
800Mo), �a prend toute la m�moire de la machine et semble m�me tout bloquer.

Avez-vous une astuce pour traiter les xml sans les charger compl�tement
en m�moire ou dois-je me r�soudre � scinder les gros fichiers en des
entit�s plus petites ?

Pour info, la machine fonctionne sous Fedora.

Merci d'avance.

--
R�seau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communaut� Francophone sur les Eggdrops: http://www.eggdrop.fr

Mickaël Wolff

unread,
Nov 18, 2009, 8:23:14 AM11/18/09
to
CrazyCat a �crit :

> Bonjour,
>
> Je ne sais pas si ce groupe convient pour ma question, mais je tente
> quand m�me, quelqu'un saura bien m'aiguiller vers le bon groupe si
> n�cessaire :)
>
> Je dois proc�der � des transformations xsl sur des fichiers xml, jusque
> l� que du normal.
> Pour se faire, j'utilise xsltproc et �a fonctionne plut�t bien avec des
> fichiers XML allant jusqu'� 100Mo. Mais au dessus (il y en a un de
> 800Mo), �a prend toute la m�moire de la machine et semble m�me tout
> bloquer.

Par curiosit� je suis all� voir le source de xsltproc, libxslt, et
libxml. Et effectvement, le parser analyse le fichier d'un coup, et
concerve les arbres des diff�rents documents XML.

> Avez-vous une astuce pour traiter les xml sans les charger compl�tement
> en m�moire ou dois-je me r�soudre � scinder les gros fichiers en des
> entit�s plus petites ?

Si c'est urgent, certainement. Maintenant il doit bien exister un
parser qui soit capable de g�rer des gros fichiers de mani�re efficace.
Mais trois (sablotron, expat et xsltproc) que j'ai regard� n'en semble
pas capable.

--
Micka�l Wolff aka Lupus Michaelis
http://lupusmic.org

Alain Ketterlin

unread,
Nov 18, 2009, 8:47:09 AM11/18/09
to
CrazyCat <craz...@c-p-f.org> writes:

> Je dois procéder à des transformations xsl sur des fichiers xml,
> jusque là que du normal.
> Pour se faire, j'utilise xsltproc et ça fonctionne plutôt bien avec
> des fichiers XML allant jusqu'à 100Mo. Mais au dessus (il y en a un de
> 800Mo), ça prend toute la mémoire de la machine et semble même tout


> bloquer.
>
> Avez-vous une astuce pour traiter les xml sans les charger

> complètement en mémoire ou dois-je me résoudre à scinder les gros
> fichiers en des entités plus petites ?

Ca dépend trop de la transformation XSLT : il suffit d'un //, d'un
<xsl:sort>, etc. pour qu'on ne puisse plus s'épargner le chargement en
mémoire. A ma connaissance, Xalan avait le projet de faire cela (il y a
longtemps), mais je crois qu'ils ont laissé tomber rapidement. Je ne
connais pas de processeur XSLT qui implémente cela.

Si ta transformation est suffisamment simple, ou si tu dois extraire un
morceau du fichier, je te conseille d'écrire cela a la mano avec SAX (au
moins pour la partie extraction).

-- Alain.

CrazyCat

unread,
Nov 19, 2009, 2:38:01 AM11/19/09
to
Merci Micka�l et Alain de vos r�ponses.

Micka�l Wolff wrote:
>> Avez-vous une astuce pour traiter les xml sans les charger
>> compl�tement en m�moire ou dois-je me r�soudre � scinder les gros
>> fichiers en des entit�s plus petites ?
> Si c'est urgent, certainement. Maintenant il doit bien exister un
> parser qui soit capable de g�rer des gros fichiers de mani�re efficace.
> Mais trois (sablotron, expat et xsltproc) que j'ai regard� n'en semble
> pas capable.

Finalement, je traite "� la main" le fichier en le lisant ligne par
ligne afin de recr�er chaque node et je le parse � ma ma mani�re (en
perl), ce qui est bien plus rapide.

J'ai essay� de faire des fichiers xml plus petits mais entre la cr�ation
et le traitement par xslproc, je consomme bien trop de ressources
machine et de temps. Parfois, le plus simple est le mieux.

xmlizer

unread,
Nov 19, 2009, 6:48:51 AM11/19/09
to
Bonjour,

En fait, il est possible d'optimiser le traitement tout en restant
compatible XML

Nous faisons des formations et l'intégration des outils pour faire
ceci

Cordialement,

Xmlizer

On 17 nov, 17:31, CrazyCat <crazy...@c-p-f.org> wrote:
> Bonjour,
>
> Je ne sais pas si ce groupe convient pour ma question, mais je tente

> quand même, quelqu'un saura bien m'aiguiller vers le bon groupe si
> nécessaire :)
>
> Je dois procéder à des transformations xsl sur des fichiers xml, jusque
> là que du normal.
> Pour se faire, j'utilise xsltproc et ça fonctionne plutôt bien avec des


> fichiers XML allant jusqu'à 100Mo. Mais au dessus (il y en a un de

> 800Mo), ça prend toute la mémoire de la machine et semble même tout bloquer.
>
> Avez-vous une astuce pour traiter les xml sans les charger complètement
> en mémoire ou dois-je me résoudre à scinder les gros fichiers en des
> entités plus petites ?


>
> Pour info, la machine fonctionne sous Fedora.
>
> Merci d'avance.
>
> --

> Réseau IRC Francophone:http://www.zeolia.net


> Aide et astuces :http://www.g33k-zone.org

> Communauté Francophone sur les Eggdrops:http://www.eggdrop.fr

Mayeul

unread,
Nov 19, 2009, 7:16:16 AM11/19/09
to
xmlizer wrote:
> En fait, il est possible d'optimiser le traitement tout en restant
> compatible XML

Je ne suis pas s�r de comprendre. En restant compatible XML, oui, on
s'en doute, mais en restant compatible XSLT ?


--
Mayeul

Philippe Poulard

unread,
Nov 20, 2009, 4:12:57 AM11/20/09
to
CrazyCat wrote:
> Bonjour,
>
> Je ne sais pas si ce groupe convient pour ma question, mais je tente
> quand m�me, quelqu'un saura bien m'aiguiller vers le bon groupe si
> n�cessaire :)
>
> Je dois proc�der � des transformations xsl sur des fichiers xml, jusque
> l� que du normal.
> Pour se faire, j'utilise xsltproc et �a fonctionne plut�t bien avec des
> fichiers XML allant jusqu'� 100Mo. Mais au dessus (il y en a un de
> 800Mo), �a prend toute la m�moire de la machine et semble m�me tout
> bloquer.
>
> Avez-vous une astuce pour traiter les xml sans les charger compl�tement
> en m�moire ou dois-je me r�soudre � scinder les gros fichiers en des
> entit�s plus petites ?
>
> Pour info, la machine fonctionne sous Fedora.
>
> Merci d'avance.
>

Bonjour,

j'imagine que le XSLT ne traite pas toutes les donn�es; pourquoi alors
ne pas stocker ce gros fichier dans une BD native XML, et utiliser
XQuery pour l'extraction de la partie utile � la transformation ?

--
Cordialement,

///
(. .)
--------ooO--(_)--Ooo--------
| Philippe Poulard |
-----------------------------
http://reflex.gforge.inria.fr/
Have the RefleX !

xmlizer

unread,
Nov 20, 2009, 6:04:13 AM11/20/09
to
Oui compatible XSLT 2 aussi
La version payante de Saxon permet de faire un certain nombre de
traitement en streaming, mais cela dépends de tellement de paramètre
qu'il m'est impossible de répondre définitivement que cela
fonctionnera

Xmlizer

On 19 nov, 13:16, Mayeul <mayeul.marg...@free.fr> wrote:
> xmlizer wrote:
> > En fait, il est possible d'optimiser le traitement tout en restant
> > compatible XML
>

> Je ne suis pas sûr de comprendre. En restant compatible XML, oui, on

0 new messages