Multi-Saxon

28 mars 2025 · 2 Min Läsning
code

Multi-Saxon: parallell XSLT-bearbetning av stora TEI-korpusar

Multi-Saxon fyller en kännbar lucka bland XML-verktygen genom att möjliggöra parallell körning av XSLT 2.0- och 3.0-transformationer som LXML (ett populärt XML-bibliotek för Python) inte klarar. Multi-Saxon är utformat särskilt för stora samlingar av XML-TEI-dokument och kortar bearbetningstiden avsevärt genom effektiv parallellkörning.

Huvudfunktioner

  • Avancerat XSLT-stöd: bearbetar XSLT 2.0- och 3.0-transformationer bortom LXML:s förmåga
  • Parallell bearbetning: kortar transformationstiden dramatiskt för stora dokumentsamlingar genom parallellisering
  • TEI-optimerat: särskilt konstruerat för XML-dokument enligt Text Encoding Initiative (TEI)
  • Skalbar prestanda: hanterar effektivt korpusar från hundratals till tusentals dokument
  • Plattformsoberoende: fungerar i olika operativsystem och miljöer

Problemet Multi-Saxon löser

Forskare inom digital humaniora som arbetar med TEI ställs ofta inför två stora svårigheter:

  1. LXML (ett vanligt XML-bibliotek för Python) stöder bara XSLT 1.0, vilket gör det omöjligt att använda de mer avancerade funktionerna i XSLT 2.0/3.0
  2. Att bearbeta stora TEI-korpusar sekventiellt kan ta oöverkomligt lång tid

Multi-Saxon löser båda problemen genom att utnyttja Saxons avancerade XSLT-funktioner och samtidigt fördela bearbetningen över flera processorkärnor, med betydande prestandavinster som följd.

Implementering

Multi-Saxon kombinerar Python med Javas Saxon-processor i en högpresterande transformationskedja:

  • använder Javas Saxon-bibliotek för robust XSLT 2.0/3.0-bearbetning
  • använder multiprocessing för att fördela transformationerna över tillgängliga processorkärnor
  • hanterar processorpooler effektivt för maximal genomströmning
  • erbjuder ett enkelt gränssnitt för batchbearbetning av TEI-dokument

Användningsexempel

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

Betydelse för digital humaniora

För projekt inom digital humaniora med stora TEI-samlingar möjliggör Multi-Saxon:

  • komplexa transformationer av hela korpusar som vore omöjliga med LXML
  • dramatiskt kortare bearbetningstider (ofta 5–10 gånger snabbare på flerkärniga system)
  • mer avancerad analys tack vare funktionerna i XSLT 2.0/3.0
  • ett enklare arbetsflöde för bearbetning av hela dokumentsamlingar

Källkod och dokumentation finns i GitHub-repot.

Clément Godbarge
Authors
Lektor i digital humaniora
Clément Godbarge är lektor i digital humaniora vid University of St Andrews. Hans forskning rör vetenskap och statskonst i det tidigmoderna Europa. I sin kommande bok undersöker han hur läkare vid de franska och italienska hoven på 1500-talet framställde sig som politiska experter av ett nytt slag. Hans forskning har stötts av Andrew W. Mellon Foundation, Fulbrightkommissionen, Renaissance Society of America och Harvard University.