Multi-Saxon

28 marzo 2025 · 2 min di lettura
code

Multi-Saxon: trasformazioni XSLT in parallelo per grandi corpora TEI

Multi-Saxon colma una lacuna seria fra gli strumenti di elaborazione XML: esegue in parallelo trasformazioni XSLT 2.0 e 3.0 che LXML, la diffusa libreria XML per Python, non sa gestire. Pensato per grandi collezioni di documenti XML TEI, abbatte i tempi di elaborazione grazie a un’esecuzione parallela efficiente.

Caratteristiche principali

  • XSLT avanzato: elabora trasformazioni XSLT 2.0 e 3.0, fuori dalla portata di LXML
  • Elaborazione parallela: la parallelizzazione riduce drasticamente i tempi di trasformazione delle grandi collezioni di documenti
  • Su misura per la TEI: progettato apposta per i documenti XML della Text Encoding Initiative (TEI)
  • Prestazioni scalabili: gestisce con efficienza corpora da centinaia a migliaia di documenti
  • Multipiattaforma: funziona su sistemi operativi e ambienti diversi

Il problema che Multi-Saxon risolve

Chi lavora con la TEI nell’umanistica digitale si scontra spesso con due ostacoli:

  1. LXML (una comune libreria Python per l’elaborazione XML) sostiene soltanto XSLT 1.0, e preclude quindi le funzionalità più avanzate di XSLT 2.0/3.0
  2. Elaborare in sequenza grandi corpora di documenti TEI può richiedere tempi proibitivi

Multi-Saxon risponde a entrambi sfruttando le capacità XSLT avanzate di Saxon e distribuendo l’elaborazione su più core, con guadagni di prestazioni notevoli.

Realizzazione

Multi-Saxon accoppia Python al processore Saxon per Java in una pipeline di trasformazione ad alte prestazioni:

  • usa la libreria Saxon per Java per un’elaborazione XSLT 2.0/3.0 robusta
  • ricorre al multiprocessing per distribuire le trasformazioni sui core disponibili
  • gestisce con efficienza i pool di processi per massimizzare il throughput
  • offre un’interfaccia semplice per l’elaborazione in batch dei documenti TEI

Esempio d’uso

from multi_saxon import MultiSaxon

# Initialize with your XSLT stylesheet
transformer = MultiSaxon("transform.xsl")

# Transform a single document
transformer.transform("input.xml", "output.xml")

# Transform an entire directory in parallel
transformer.transform_directory("input_dir", "output_dir")

Che cosa cambia per l’umanistica digitale

Per i progetti di umanistica digitale alle prese con grandi collezioni di documenti TEI, Multi-Saxon rende possibili:

  • trasformazioni complesse sull’intero corpus, impensabili con LXML
  • tempi di elaborazione drasticamente ridotti (spesso di 5-10 volte sui sistemi multi-core)
  • analisi più sofisticate grazie alle funzionalità avanzate di XSLT 2.0/3.0
  • un flusso di lavoro più semplice per elaborare intere collezioni di documenti

Il codice sorgente e la documentazione sono nel repository GitHub.

Clément Godbarge
Authors
Docente di Umanistica digitale
Clément Godbarge insegna Umanistica digitale all’Università di St Andrews. Le sue ricerche riguardano i rapporti tra scienza e arte di governo nell’Europa della prima età moderna. Nel suo libro di prossima pubblicazione esamina come i medici inseriti nelle corti di Francia e Italia del Cinquecento si siano proposti come esperti politici di un genere nuovo. Le sue ricerche sono state sostenute dalla Andrew W. Mellon Foundation, dalla Commissione Fulbright, dalla Renaissance Society of America e dall’Università di Harvard.