2017-10-03 14 views
0

Ce que j'essaie de faire, c'est d'importer une liste de fichiers xslt dans un autre fichier xslt sans connaître les noms des fichiers à importer tant que le programme n'est pas exécuté .Importer des fichiers xslt de nom inconnu dans le fichier maître xslt

Fond: J'écris un mécanisme d'extension pour le projet de quelqu'un d'autre (python). Le projet utilise un script xslt pour transformer un document XML en HTML. J'ai créé un répertoire appelé "extensions" dans le projet et je veux que les utilisateurs puissent mettre des sous-répertoires arbitraires dans ce répertoire d'extensions. Chaque sous-répertoire représente une extension et aura un certain nombre de fichiers différents, y compris potentiellement un fichier xslt.

J'ai un script qui analyse tous les sous-répertoires pour les fichiers xslt, puis écrit un nouveau fichier xslt ('combined.xsl') avec une série de balises référençant tous les fichiers xslt qu'il a trouvés. J'importe ensuite 'combined.xsl' dans le fichier xslt principal du projet.

Mon premier problème était que le projet allait généralement être installé dans un répertoire d'administrateur (par exemple /usr/local/lib/python3.5/dist-packages/ ou similaire) mais appelé par des utilisateurs ordinaires. Cela signifie que lorsque le script essaie de créer 'combined.xsl', il ne peut pas être écrit en raison d'autorisations insuffisantes. Mon idée suivante était de faire de 'combined.xsl' un fichier temporaire (en utilisant le module tempfile), mais je ne peux pas le référencer depuis le fichier maître xslt du projet, car les fichiers temporaires sont créés à différents endroits sur différents systèmes.

Existe-t-il un moyen de faire fonctionner l'une ou l'autre de ces approches ou existe-t-il une approche complètement différente qui me manque? J'ai l'impression que cela doit être un problème inhabituel, mais c'est un peu trop abstrait pour google d'être très utile.

Répondre

0

Donc j'ai finalement trouvé une manière entièrement différente de résoudre le problème qui n'implique pas d'écrire dans un fichier. Cependant, si quelqu'un est confronté à un problème similaire, la réponse à this question vaut le coup d'oeil.