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>
  1. Installez les programmes et bibliothèques suivants :

    $ sudo apt install libxml2-dev libxslt1-dev python3-lxml
    
  2. 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)
    
  3. 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.