Multi-Saxon

28 de marzo de 2025 · 2 min de lectura
code

Multi-Saxon: XSLT en paralelo para grandes corpus TEI

Multi-Saxon cubre una laguna importante de las herramientas de procesamiento XML: permite ejecutar en paralelo transformaciones XSLT 2.0 y 3.0 que LXML (una biblioteca XML muy usada en Python) no puede manejar. Pensado para grandes colecciones de documentos XML TEI, Multi-Saxon acorta considerablemente los tiempos de procesamiento gracias a una ejecución paralela eficiente.

Características principales

  • Compatibilidad avanzada con XSLT: procesa transformaciones XSLT 2.0 y 3.0, fuera del alcance de LXML
  • Procesamiento en paralelo: la paralelización reduce drásticamente el tiempo de transformación de grandes colecciones de documentos
  • Optimizado para TEI: diseñado expresamente para documentos XML de la Text Encoding Initiative (TEI)
  • Rendimiento escalable: maneja con soltura corpus de cientos o miles de documentos
  • Multiplataforma: funciona en sistemas operativos y entornos distintos

El problema que resuelve Multi-Saxon

Quienes trabajan con TEI en humanidades digitales tropiezan a menudo con dos obstáculos:

  1. LXML (una biblioteca habitual de procesamiento XML en Python) solo admite XSLT 1.0, lo que deja fuera las funciones más avanzadas de XSLT 2.0/3.0
  2. Procesar grandes corpus de documentos TEI uno tras otro puede llevar un tiempo prohibitivo

Multi-Saxon resuelve ambos aprovechando las capacidades XSLT avanzadas de Saxon y repartiendo el trabajo entre varios núcleos, con ganancias de rendimiento notables.

Implementación

Multi-Saxon combina Python con el procesador Saxon de Java para formar una cadena de transformación de alto rendimiento:

  • Usa la biblioteca Saxon de Java para un procesamiento XSLT 2.0/3.0 robusto
  • Recurre al multiprocesamiento para distribuir las transformaciones entre los núcleos de CPU disponibles
  • Gestiona con eficiencia los grupos de procesos para maximizar el rendimiento
  • Ofrece una interfaz sencilla para procesar documentos TEI por lotes

Ejemplo de 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")

Qué aporta a las humanidades digitales

A los proyectos de humanidades digitales que manejan grandes colecciones de documentos TEI, Multi-Saxon les permite:

  • Transformaciones complejas a escala de corpus, imposibles con LXML
  • Tiempos de procesamiento drásticamente menores (a menudo entre 5 y 10 veces, en sistemas multinúcleo)
  • Análisis más sofisticados gracias a las funciones avanzadas de XSLT 2.0/3.0
  • Un flujo de trabajo más simple para procesar colecciones enteras de documentos

El código fuente y la documentación están en el repositorio de GitHub.

Clément Godbarge
Autores
Profesor de Humanidades Digitales
Clément Godbarge es profesor de Humanidades Digitales en la Universidad de St Andrews. Su investigación gira en torno a la ciencia y el arte de gobernar en la Europa de la Edad Moderna. En su libro de próxima publicación examina cómo los médicos integrados en las cortes de Francia e Italia del siglo XVI se promocionaron como expertos políticos de un nuevo género. Su investigación ha contado con el apoyo de la Fundación Andrew W. Mellon, la Comisión Fulbright, la Renaissance Society of America y la Universidad de Harvard.