Insérer automatiquement des données dans un fichier DITA XML¶
Nous voulons automatiser la génération du fichier DITA suivant :
<?xml version = "1.0" encoding = "utf-8"?> <!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA 1.2 Topic//EN" "/usr/share/dita-ot/dtd/technicalContent/dtd/topic.dtd"> <topic id="produits-et-versions"> <title>Produits et versions</title> <body> <p>Dianthus</p> <ul> <li>1.0</li> <li>1.5</li> <li>2.3</li> </ul> <p>Geum</p> <ul> <li>1.0</li> <li>1.5</li> <li>2.3</li> </ul> <p>Prunus</p> <ul> <li>1.0</li> <li>1.5</li> <li>2.3</li> </ul> </body> </topic>
Installez les programmes et bibliothèques suivants :
$ sudo apt install libxml2-dev libxslt1-dev python3-lxml
Créez le script Python
populate-xml.py
suivant :#!/usr/bin/python3 # coding: utf8 from lxml import etree root = etree.Element('topic') root.set('id', 'produits-et-versions') title = etree.SubElement(root, 'title') title.text = "Produits et versions" topic = etree.SubElement(root, 'body') products = ['dianthus', 'geum', 'prunus'] versions = ['1.0', '1.5', '2.3'] for p in products: P = str.capitalize(p) product = etree.SubElement(topic, 'p') product.text = P list = etree.SubElement(topic, 'ul') for v in versions: version = etree.SubElement(list, 'li') version.text = v try: with open('modele.dita', 'w') as file: file.write('<?xml version = "1.0" encoding = "utf-8"?>\n') file.write('''<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA 1.2 Topic//EN" "/usr/share/dita-ot/dtd/technicalContent/dtd/topic.dtd">\n''') file.write(etree.tostring(root, pretty_print=True).decode('utf-8')) except IOError: print('Erreur d\'écriture') exit(1)
Rendez le script exécutable, puis exécutez-le :
$ chmod +x populate-xml.py $ ./populate-xml.py
Le fichier
modele.dita
est créé et contient les données souhaitées.