Table des matières

Liaisons avec un programme externe

1. Élement <file>

Cet élément contient un noeud texte qui est ajouté au fichier indiqué par l'attribut name. Si l'élément rencontré est le premier portant le nom indiqué, le fichier est créé. L'attribut class indique le type de code (xml, python, cpp, ...). Le texte apparait dans la page sous forme de code informatique. Tous les éléments file d'une page sont traités d'un seul coup, avant traitement de tout autre élément (en particulier avant l'élément system décrit ci-dessous).

Utilisation de cet élément : définir un fichier source C++ à compiler, un module Mathematica ou Scilab, un module python, etc.

2. Élement <system>

Cet élément contient un noeud texte indiquant une commande à faire exécuter par le système. Typiquement, il s'agira d'une commande de compilation d'un fichier créé avec des éléments file. Le fichier résultat peut être utilisé par un élément link dans la même page ou dans une autre. On notera que tous les éléments system sont exécutés à la suite, juste après le traitement des éléments file.

3. Élement <link>

Cet élément définit une liaison avec un programme externe, dont la commande d'exécution est précisé par l'attribut exe. L'élément link contient un fragment xml transmis au programme externe par le fichier dont le nom est donné par l'attribut input. Le programme externe doit avoir la syntaxe suivante : exe input.xml output.xml et doit créer un fichier XML (output.xml) comportant un unique élément link (élément racine) qui contient un fragment XML. Après exécution, ce fragment XML remplace le contenu de l'élément link initial. Le nom du fichier utilisé pour la sortie est précisé par l'attribut output.

Les éléments link d'une page sont traités en premier après les éléments function et les élément file. Il est donc possible de placer dans le fragment XML de sortie des éléments python, mathematica ou scilab. En revanche, ce fragment ne peut contenir d'élément link.

Remarque : l'élément racine du fichier input.xml est <link>. En fait ce fichier contient la sérialisation de l'élément link initial.

4. Élement <import>

Cet élément importe un fragment XML contenu dans le fichier indiqué par l'attribut name. L'élément racine de ce fichier doit être link. Avec cet élément, un fragment de page peut être enregistré dans un fichier pour être utilisé ailleurs.

5. Exemple

On considère comme exemple le programme python suivant (fichier carre.py), qui calcule le carré d'un nombre et place le résultat dans un élément <p> :

from lxml import etree
from os import sys
input = etree.parse(sys.argv[1])
link = input.xpath("//link")[0]
x = float(link.xpath("x/text()")[0]) 
y = x*x  
outputLink = etree.Element("link")
p = etree.Element("p")   
p.text = str(y)
outputLink.append(p) 
output = open(sys.argv[2],"w")
output.write(etree.tostring(outputLink))
output.close()
            

Le fragment xml suivant effectue la liaison :

 
<link exe="python carre.py" input="input1.xml" output="output1.xml">
    <x>2.5</x>
</link>
            

ce qui donne le paragraphe suivant :

6.25

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.