Fiche xml

1. Introduction

XML (eXtensible Markup Language) est un langage de balisage utilisé pour structurer et transporter des données. On le retrouve dans de nombreux domaines : développement web, administration système, échanges applicatifs, flux RSS, fichiers de configuration, bureautique ou encore services web SOAP.

Dans un BTS CIEL ou SIO, XML permet de comprendre :

  • la structuration des données ;
  • les échanges entre applications ;
  • les fichiers de configuration ;
  • les formats utilisés dans les APIs et les logiciels professionnels.

Tu vas apprendre :

  • à lire et écrire un fichier XML ;
  • à comprendre la structure des balises ;
  • à valider un XML ;
  • à utiliser XSD et XPath ;
  • à manipuler des flux XML dans des cas concrets.

2. Sommaire

  1. Introduction
  2. Structure générale d’un fichier XML
  3. Comprendre les balises XML
  4. Créer un premier fichier XML
  5. Validation XML avec XSD
  6. Rechercher des données avec XPath
  7. Cas concrets d’utilisation
  8. Fichiers importants
  9. Bloc de configuration complet
  10. Commandes utiles et dépannage
  11. Logs et analyse des erreurs
  12. Erreurs fréquentes
  13. Bonnes pratiques
  14. Aller plus loin
  15. Liens utiles
  16. Propositions de TP

Synthèse Markdown pour ta fiche bristol

# XML - Récapitulatif

## Structure de base

<?xml version="1.0" encoding="UTF-8"?>

<utilisateurs>
<utilisateur id="1">
<nom>Dupont</nom>
<prenom>Jean</prenom>
<mail>jean@example.com</mail>
</utilisateur>
</utilisateurs>

## Balises importantes

- Balise ouvrante : <nom>
- Balise fermante : </nom>
- Attribut : id="1"

## Validation XML

xmllint --noout fichier.xml

## Validation avec XSD

xmllint --schema schema.xsd fichier.xml --noout

## XPath simple

//utilisateur/nom

## XPath avec attribut

//utilisateur[@id='1']

## Conversion XML lisible

xmllint --format fichier.xml

## Vérification syntaxe

xmlstarlet val fichier.xml

3. Structure générale d’un fichier XML

Un fichier XML contient :

  • une déclaration XML ;
  • des balises ;
  • une hiérarchie ;
  • éventuellement des attributs.

Exemple minimal :

<?xml version="1.0" encoding="UTF-8"?>

<serveur>
<nom>srv-web-01</nom>
<ip>192.168.1.10</ip>
</serveur>

Explications :

  • <?xml version="1.0" encoding="UTF-8"?> définit la version XML et l’encodage.
  • <serveur> représente la balise racine.
  • <nom> et <ip> sont des éléments enfants.

XML impose une structure stricte :

  • chaque balise doit être fermée ;
  • un seul élément racine existe ;
  • les balises doivent être correctement imbriquées.

Exemple invalide :

<serveur>
<nom>srv01
</serveur>

La balise <nom> n’est pas fermée.

4. Comprendre les balises XML

4.1 Les éléments

Un élément contient des données :

<port>443</port>

4.2 Les attributs

Les attributs ajoutent des informations :

<service protocole="tcp">https</service>

Ici :

  • protocole="tcp" est un attribut ;
  • https est la valeur de l’élément.

4.3 Les commentaires

<!-- Ceci est un commentaire -->

4.4 Les caractères spéciaux

XML utilise des entités :

&lt;  correspond à <
&gt; correspond à >
&amp; correspond à &

Exemple :

<commande>apt install nginx &amp;&amp; systemctl start nginx</commande>

5. Créer un premier fichier XML

Exemple d’inventaire réseau :

<?xml version="1.0" encoding="UTF-8"?>

<infrastructure>
<machine type="serveur">
<hostname>srv-web-01</hostname>
<ip>192.168.10.20</ip>
<os>Debian 13</os>
</machine>

<machine type="poste-client">
<hostname>pc-admin-01</hostname>
<ip>192.168.10.50</ip>
<os>Ubuntu 26.04</os>
</machine>
</infrastructure>

Tu peux enregistrer ce fichier dans :

/home/admin/infrastructure.xml

6. Validation XML avec XSD

XSD (XML Schema Definition) permet de vérifier :

  • les balises autorisées ;
  • les types de données ;
  • les attributs ;
  • la structure globale.

6.1 Exemple de schéma XSD

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="serveur">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="ip" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

</xsd:schema>

6.2 Validation avec xmllint

Sous Debian ou Ubuntu :

sudo apt install libxml2-utils

Validation :

xmllint --schema schema.xsd serveur.xml --noout

Explications :

  • --schema indique le fichier XSD ;
  • --noout masque l’affichage du XML.

7. Rechercher des données avec XPath

XPath permet de rechercher des éléments dans un document XML.

7.1 Sélection simple

//hostname

Retourne tous les éléments hostname.

7.2 Sélection avec attribut

//machine[@type='serveur']

Retourne les machines de type serveur.

7.3 Sélection précise

//machine[ip='192.168.10.20']

Très utile dans :

  • les APIs XML ;
  • les scripts d’automatisation ;
  • les outils de supervision.

8. Cas concrets d’utilisation

8.1 Flux RSS

Les flux RSS utilisent XML.

Exemple :

<rss version="2.0">
<channel>
<title>Breizh Sec Ops</title>
<link>https://example.com</link>
</channel>
</rss>

8.2 Configuration Android

Android utilise XML pour :

  • les interfaces ;
  • les permissions ;
  • les paramètres.

8.3 Services web SOAP

SOAP transporte des données XML entre serveurs.

8.4 Bureautique

Les formats :

  • DOCX ;
  • XLSX ;
  • ODT

reposent sur XML.

9. Fichiers importants

/etc/xml/
/usr/share/xml/
/usr/share/xml/schema/
/home/user/fichier.xml
/home/user/schema.xsd

Arborescence typique :

projet-xml/
├── data/
│ └── infrastructure.xml
├── schema/
│ └── infrastructure.xsd
├── scripts/
│ └── validation.sh
└── logs/
└── validation.log

10. Bloc de configuration complet

<?xml version="1.0" encoding="UTF-8"?>

<infrastructure>
<serveur id="1">
<hostname>srv-nginx-01</hostname>
<ip>192.168.1.10</ip>
<services>
<service port="80" protocole="tcp">http</service>
<service port="443" protocole="tcp">https</service>
<service port="22" protocole="tcp">ssh</service>
</services>
<systeme>Debian 13</systeme>
</serveur>

<serveur id="2">
<hostname>srv-db-01</hostname>
<ip>192.168.1.20</ip>
<services>
<service port="3306" protocole="tcp">mysql</service>
</services>
<systeme>Ubuntu 26.04</systeme>
</serveur>
</infrastructure>

11. Commandes utiles et dépannage

Installer les outils XML

sudo apt update
sudo apt install libxml2-utils xmlstarlet

Paquets :

  • libxml2-utils fournit xmllint
  • xmlstarlet ajoute des outils XPath et de transformation XML

Vérifier un fichier XML

xmllint --noout fichier.xml

Formater un XML

xmllint --format fichier.xml

Lire une valeur XPath

xmlstarlet sel -t -v "//hostname" infrastructure.xml

Options :

  • sel : sélection XPath ;
  • -t : mode template ;
  • -v : affiche une valeur.

Convertir XML lisible

xmllint --format infrastructure.xml > propre.xml

Vérifier plusieurs fichiers

find . -name "*.xml" -exec xmllint --noout {} \;

12. Logs et analyse des erreurs

XML ne possède pas de logs intégrés. Les outils affichent directement les erreurs.

Exemple d’erreur

xmllint fichier.xml

Retour :

Opening and ending tag mismatch

Cette erreur indique :

  • une balise fermée incorrectement ;
  • une structure XML invalide.

Journalisation shell

Tu peux enregistrer les erreurs :

xmllint fichier.xml 2> validation.log

Analyse des erreurs

Commande :

cat validation.log

ou :

less validation.log

Vérifier automatiquement

Exemple de script :

#!/bin/bash

for file in *.xml
do
xmllint --noout "$file" 2>> erreurs.log
done

13. Erreurs fréquentes

Balise non fermée

<nom>serveur

Mauvais encodage

Toujours utiliser UTF-8 :

<?xml version="1.0" encoding="UTF-8"?>

Plusieurs balises racines

Incorrect :

<nom>srv01</nom>
<ip>192.168.1.10</ip>

Mauvaise imbrication

Incorrect :

<a>
<b>
</a>
</b>

14. Bonnes pratiques

  • Utilise UTF-8 partout.
  • Structure correctement les données.
  • Indente le XML pour améliorer la lecture.
  • Valide les fichiers avec XSD.
  • Évite les noms de balises ambigus.
  • Sépare les données et la logique.
  • Versionne les fichiers XML avec Git.
  • Limite les permissions des fichiers contenant des secrets.

Exemple permissions :

chmod 640 configuration.xml

15. Aller plus loin

Tu peux approfondir :

  • XSLT pour transformer du XML ;
  • SOAP ;
  • SVG ;
  • RSS ;
  • les fichiers de configuration Maven ;
  • les manifestes Android ;
  • XML dans les APIs industrielles.

16. Liens vers les sites officiels et contenus pédagogiques

Documentation officielle XML W3C

https://www.w3.org/XML

Le W3C définit la spécification officielle du langage XML.

Recommandation XML officielle

https://www.w3.org/TR/xml

Document technique complet de référence.

Documentation XPath W3C

https://www.w3.org/TR/xpath-31

Documentation officielle XPath.

Documentation Debian xmllint

https://manpages.debian.org/bookworm/libxml2-utils/xmllint.1.en.html

Manuel officiel Debian pour xmllint.

OpenClassrooms – Structurez vos données avec XML

https://openclassrooms.com/fr/courses/1312676-structurez-vos-donnees-avec-xml

Très bon cours d’introduction progressif.

Mozilla Developer Network XML

https://developer.mozilla.org/fr/docs/Web/XML

Documentation claire avec exemples pratiques.

17. Propositions de TP pour s’exercer

TP 1 — Inventaire réseau XML

Objectif :

  • créer un inventaire de machines ;
  • ajouter les IP et services ;
  • valider avec XSD.

TP 2 — Flux RSS personnalisé

Objectif :

  • créer un flux RSS XML ;
  • ajouter plusieurs articles ;
  • tester le flux dans un navigateur.

TP 3 — Validation automatique

Objectif :

  • écrire un script Bash ;
  • vérifier plusieurs fichiers XML ;
  • enregistrer les erreurs dans un log.

TP 4 — Requêtes XPath

Objectif :

  • rechercher des serveurs ;
  • filtrer selon les attributs ;
  • extraire des informations automatiquement.

TP 5 — Génération XML avec Python

Objectif :

  • créer un script Python ;
  • générer automatiquement un XML ;
  • ajouter des données réseau.
Retour en haut