PapyriBot / transfo.py
delarosajav95's picture
Upload 9 files
05c431f verified
import os
import subprocess
# Chemins d'entrée et sortie
input_directory = "./corpus" # Remplacez par le chemin du dossier contenant les fichiers XML
xsl_file = "./Stylesheets-master/start-txt.xsl" # Remplacez par votre fichier XSL
output_directory = "./txt" # Remplacez par le dossier où stocker les fichiers TXT
saxon_jar = "./SaxonHE12-5J/saxon-he-12.5.jar" # Remplacez par le chemin vers le fichier saxon9he.jar
# Fonction pour appliquer la transformation et maintenir la structure des sous-dossiers
def transform_xml_files(input_dir, output_dir):
for root, dirs, files in os.walk(input_dir): # Parcours du répertoire source
for file in files:
if file.endswith(".xml"): # Seulement les fichiers XML
xml_file_path = os.path.join(root, file)
# Crée un chemin de sortie correspondant à la structure du répertoire source
relative_path = os.path.relpath(root, input_dir) # Chemin relatif
output_subdir = os.path.join(output_dir, relative_path) # Crée le sous-dossier dans le répertoire de sortie
os.makedirs(output_subdir, exist_ok=True) # Crée les sous-dossiers si nécessaire
# Chemin de sortie pour le fichier transformé
output_file_path = os.path.join(output_subdir, file.replace(".xml", ".txt"))
try:
# Commande Java pour exécuter Saxon
command = [
"java", "-jar", saxon_jar,
"-s:" + xml_file_path,
"-xsl:" + xsl_file,
"-o:" + output_file_path
]
# Exécuter la commande
subprocess.run(command, check=True)
print(f"Transformation appliquée à {xml_file_path} -> {output_file_path}")
except subprocess.CalledProcessError as e:
print(f"Erreur lors de la transformation du fichier {xml_file_path}: {e}")
# Exécuter la transformation
transform_xml_files(input_directory, output_directory)