XSLT transformace pohoří na out of memmory.
XSLT je fajn a má spoustu dobrých vlastností – jedna z nich je, že se můžeš vracet zpátky, přečíst si tuhle něco, támhle něco, dopočítat pár věcí, pustit for-each cyklus na něčem jiném… ale s tím se pojí i jedna nevýhoda: aby tohle bylo možné, je potřeba mít celý dokument načtený v paměti. Takže XSLT na tuhle úlohu není moc vhodné – dalo by se použít leda tak, že bys transformaci volal na jednotlivé uzly (adresy), ne na celý dokument.
Řešil bych to nejspíš přes SAX – zpracuj si události (uzly), které tě zajímají a za chodu generuj objekty, řádky souboru nebo volej SQL příkazy – tímhle způsobem můžeš zpracovat i „nekonečně“ dlouhý soubor a paměť ti nikdy nedojde :-) Není to moc o jazyku, jako spíš o tech technice práce s XML (SAX vs. DOM).