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
- Introduction
- Structure générale d’un fichier XML
- Comprendre les balises XML
- Créer un premier fichier XML
- Validation XML avec XSD
- Rechercher des données avec XPath
- Cas concrets d’utilisation
- Fichiers importants
- Bloc de configuration complet
- Commandes utiles et dépannage
- Logs et analyse des erreurs
- Erreurs fréquentes
- Bonnes pratiques
- Aller plus loin
- Liens utiles
- 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 ;httpsest 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 :
< correspond à <
> correspond à >
& correspond à &
Exemple :
<commande>apt install nginx && 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 :
--schemaindique le fichier XSD ;--nooutmasque 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-utilsfournitxmllintxmlstarletajoute 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
Le W3C définit la spécification officielle du langage XML.
Recommandation XML officielle
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.
