Circum Blog

Circum Net – IT – Conseils pratiques

Transformation XSLT avec Python sous MacOSX

MacOSX, Programmation, Python, XML, XSLT

Pour obtenir une transformation d’un document XML source via une feuille de style XSLT, nous aurons ici recours aux librairies libxml et libxslt. Celle-ci ont en effet été déclinées pour pouvoir travailler avec Python.

Prérequis :
– MacOSX 10.3 ou supérieur
– Python préinstallé ou MacPython

Première étape : installation de libxml

La bibliothèque libxml fournit aux programmes les fonctions permettant le décodage/parcours des fichiers au format XML. Après l’avoir téléchargée, on l’installe en lançant les commandes suivantes:

Version de la bibliothèque utilisée : 2.7.0

./configure –prefix=/usr/local/libxml2-2.7.0
make
sudo make install

Deuxième étape : installation de libxslt

La bibliothèque libxslt étend la bibliothèque libxml en lui ajoutant le support des feuilles de styles XSLT. Après l’avoir téléchargée, on l’installe en lançant les commandes suivantes:

Version de la bibliothèque utilisée : 1.1.24

./configure –prefix=/usr/local/libxslt-1.1.24 –with-libxml-prefix=/usr/local/libxml2-2.7.0
make
sudo make install

Troisième étape : liaison python/libxml/libxslt

Pour lier Python aux deux bibliothèques XML précédemment installées, on va utiliser des liens symboliques à partir du répertoire de gestion d’extensions de Python : site-packages. Ce répertoire est en effet destiné à recevoir les modules supplémentaires installés par l’utilisateur.

Version de Pyhton utilisée : 2.5

Il faut d’abord repérer le chemin d’accès du répertoire “site-packages”. Si vous utilisez le moteur Python préinstallé de MacOSX, vous le trouverez à l’endroit suivant :

/Library/Python/2.5/site-packages/

Si vous avez installé MacPython, vous le trouverez à l’endroit suivant :

/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages

Une fois repéré, vous vous placer dans le répertoire site-packages:

cd /Library/Python/2.5/site-packages/
 
ou
 
cd /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
site-packages

Puis vous créez les liens symboliques vers les bibliothèques libxml et libxslt:

sudo ln -s /usr/local/libxml2-2.7.0/lib/python2.5/site-packages/* .
 
et
 
sudo ln -s /usr/local/libxslt-1.1.24/lib/python2.5/site-packages/* .

Quatrième étape : tester une transformation XSLT

Pour boucler la procédure, il nous reste à tester un script Python exécutant une transformation d’un document XML via une feuille de style XSLT. En voici un exemple.

#!/usr/bin/python
import libxml2
import libxslt
 
xsltdoc = libxml2.parseFile("test.xsl")
style = libxslt.parseStylesheetDoc(xsltdoc)
xmldoc = libxml2.parseFile("test.xml")
result = style.applyStylesheet(xmldoc, None)
style.saveResultToFilename("dump.txt", result, 0)
style.freeStylesheet()
xmldoc.freeDoc()
result.freeDoc()