0% ont trouvé ce document utile (0 vote)
21 vues43 pages

Seance 04 XML-2

xml mode

Transféré par

belhartinada97
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues43 pages

Seance 04 XML-2

xml mode

Transféré par

belhartinada97
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Matière: programmabilité des

réseaux

Programmabilité des réseaux


Filiere: IA Année universitaire: 2023-2024

Professeur: H. Hantouti
Plan

 Introduction

 Formats de données

 XML

2
Introduction

07/12/2024 3
Formats de données

 Lorsque vous interagissez avec des périphériques réseau, vous pouvez envoyer et recevoir des
données.
 Même les interfaces CLI renvoient des données à consommer.

4
Formats de données

Texte en clair:
switch# show the interface brief
--------------------------------------------------------------------------------
Ethernet VLAN Type Mode Status Reason Speed Port
Interface Ch #
--------------------------------------------------------------------------------
Eth1/1 1 eth fabric down SFP not inserted 10G(D) --

 Le format typique du CLI est le texte clair, qui est facile à lire et à interpréter pour les humains.
 Cependant, il est très difficile à interpréter pour les programmes informatiques car il manque de "structure" et
utilise souvent des espaces blancs et des informations de position pour indiquer le sens.
 Il est presque impossible d'assurer la cohérence des données en texte clair sur plusieurs plates-formes, en
particulier avec plusieurs fournisseurs.

Le texte en clair n'est PAS un bon format de données pour les cas d'utilisation programmatique.

5
Introduction au formats de donnees
Q : Pourquoi stocker et partager des données en format texte ?

R : Quel autre format allez-vous utiliser ?

► Travailler avec des données dans votre propre code est une bonne chose (en utilisant
la syntaxe et les types de données intégrés à votre langage), mais qu'en est-il lorsque
vous partagez des données entre applications ? Comment allez-vous formater les
données pour que l'autre application les comprenne ?

► L'utilisation d'un format de texte structuré offre quelques avantages immédiats

6
Introduction au formats de donnees
Le texte structuré est:
 Lisible par l'homme (certains formats le sont plus que d'autres)
 facilement transportable (il existe de nombreuses méthodes pour envoyer et
recevoir du texte)
 peut être analysé par une machine (une application peut analyser le texte pour
en extraire les données structurées).
 Lorsque vous envoyez des données entre applications, vous pouvez inventer
vos propres formats pour structurer les données que vous partagez sous forme
de texte. Cependant, les formats personnalisés ne sont pas évolutifs : tous
ceux qui veulent obtenir des données de votre part doivent apprendre "votre
format".

7
Avantages de formats d'échange de données normalisés

 Vous n'avez pas à les inventer lorsque vous souhaitez partager des données.
 Vous n'avez pas à écrire le code
pour analyser ces formats, d'autres ont déjà écrit ce code.
 Une fois que vous avez compris leur syntaxe, vous (en tant qu'humain)
pouvez les lire et les écrire vous-même (ce n'est que du texte).
 Il existe plusieurs grands formats d'échange de données normalisés utilisés
aujourd'hui, les suivants étant les plus répandus :

▪ JSON (JavaScript Object Notation)


▪ XML (eXtensible Markup Language)
▪ YAML (YAML Ain't Markup Language)

8
Formats de donnees populaires

9
Formats de données

▪ XML
 En raison de son format hautement structuré, les développeurs qui créent des applications
ou des scripts pour consommer du XML n'ont pas à se préoccuper de l'analyse des espaces
blancs et de la position pour identifier les informations qu'ils recherchent.
 Le XML est un bon choix pour le transport programmatique des données. Toutefois, en raison
de son manque de lisibilité, d'autres options existent également.
▪ JSON
JavaScript Object Notation, est un format de données alternatif qui est largement utilisé dans les
cas d'utilisation programmatique. JSON est beaucoup plus lisible que XML, mais ne possède pas la
structure solide et la validation de schéma que fournit XML.

10
Pertinence pour la gestion de réseau

De nombreuses API permettent au développeur de spécifier XML ou JSON


comme format de données, ce qui permet au développeur ou à l'application de
choisir le type qui convient le mieux à un cas d'utilisation spécifique.

NETCONF utilise XML, tandis que RESTCONF offre des options XML ou
JSON.

11
Format de données
1. XML

13
Qu’est-ce que le XML ?

 Le XML ou eXtensible Markup Language est un langage


informatique de balisage générique.
 C'est un langage qui permet de décrire des données à
l’aide de balises et de règles que l’on peut personnaliser.

14
objectif du XML

 Le XML a été créé pour faciliter les échanges de données entre les machines et
les logiciels.
 Permet l'echange entre systemes d'information heterogenes (interopérabilité).
 Le XML est un langage qui s’écrit à l’aide de balises.
 Le XML est une recommandation du W3C, il s’agit donc d’une technologie
avec des règles strictes à respecter.
 Le XML se veut compréhensible par tous : les hommes comme les machines.

15
Fichier XML

 Il faut savoir qu’un document XML n’est en réalité qu’un simple document
texte.
C’est pourquoi, il est tout à fait possible d’utiliser un éditeur de texte pour la
rédaction de nos documents XML.

 Exemple: Notepad++

16
Syntaxe XML

▪ les balises sont les éléments de base d’un document XML. Une balise
porte un nom qui est entouré de chevrons.
▪ Par exemple : <balise> définit une balise qui s’appelle “balise”.
▪ En XML, on distingue 2 types de balises : les balises par paires et
les balises uniques.

17
Les balises par paires

 les balises par paires sont composées en réalité de 2 balises que l’on appelle ouvrantes et
fermantes.
 la balise ouvrante commence par < et se termine par > tandis que la balise
fermante commence par </ et se termine par >.
 par exemple :
 <balise></balise>

 il est extrêmement important que les balises ouvrantes et fermantes aient exactement le même
nom. xml est sensible à la casse (c’est-à-dire qu’il fait la distinction entre les majuscules et les
minuscules) !
toute balise ouverte doit impérativement être fermée. c’est une règle d’or !
18
Les balises par paires

 on peut mettre “des choses” entre ces balises. on parle alors de contenu.
 par exemple :
 <balise>je suis le contenu de la balise</balise>

 quelques règles:
o une balise par paires peut contenir une valeur simple comme par exemple une chaîne
de caractères, un nombre entier, un nombre décimal, etc.
o <balise1>ceci est une chaîne de caractères</balise1>
<balise2>10</balise2>
<balise3>7.5</balise3>

19
Imbrication de balises

 Une balise par paires peut également contenir une autre balise. On parle
alors d’arborescence.
<balise1>
<balise2>10</balise2>
</balise1>

 Faites cependant très attention, si une balise peut en contenir une autre, il
est interdit de les chevaucher. L’exemple suivant n’est pas du XML !
<balise1><balise2>Ceci est une chaîne de
caractères</balise1></balise2>

20
Balises et valeurs

 Enfin, une balise par paires peut contenir un mélange de valeurs simples et
de balises comme en témoigne l’exemple suivant :
<balise1>
Ceci est une chaîne de caractères
<balise2>10</balise2>
7.5
</balise1>

21
Les balises uniques

 Une balise unique est en réalité une balise par paires qui n’a pas de contenu.
Vous le savez,
 Ainsi, plutôt que de perdre du temps à ouvrir et fermer des balises sans rien
écrire entre, une syntaxe un peu spéciale a été mise au point :
<balise />

22
Les règles de nommage des balises

Il y a quelques règles de nommage à respecter pour les balises de votre langage balisé :
► Les noms peuvent contenir des lettres, des chiffres ou des caractères spéciaux.
► Les noms doivent obligatoirement débuter par une lettre ou un underscore (_).
► Les noms ne peuvent pas commencer par les lettres “XML” (quelle que soit la casse).
► Les noms ne peuvent pas contenir d’espaces.
► On évitera les caractères - , ; . < et > qui peuvent être mal interprétés dans vos
programmes.

23
Les attributs

 Un attribut peut se décrire comme une option ou une donnée cachée. Ce n’est pas
l’information principale que souhaite transmettre la balise, mais il donne des
renseignements supplémentaires sur son contenu.
 Pour que ce soit un peu plus parlant, voici tout de suite un exemple :
 <prix devise="euro">25.3</prix>

 Dans l’exemple ci-dessus, l’information principale est le prix. L’attribut devise nous
permet d’apporter des informations supplémentaires sur ce prix, mais ce n’est pas
l’information principale que souhaite transmettre la balise <prix/>.
 Une balise peut contenir 0 ou plusieurs attributs. Par exemple :
 <prix devise="euro" moyen_paiement="chèque">25.3</prix>

24
Regles de nommage d'attributs

Tout comme pour les balises, quelques règles sont à respecter pour les
attributs :
► Les règles de nommage sont les mêmes que pour les balises.
► La valeur d’un attribut doit impérativement être délimitée par des
guillemets, simples ou doubles.
► Dans une balise, un attribut ne peut-être présent qu’une seule fois.

25
Les commentaires

Un commentaire est un texte qui permet de donner une indication sur ce que l’on
fait. Il vous permet d’annoter votre fichier et d’expliquer une partie de celui-ci.
En XML, les commentaires ont une syntaxe particulière. C’est une balise unique
qui commence par .
<!-- Ceci est un commentaire ! -->

Voyons tout de suite sur un exemple concret :


<!-- Description du prix -->
<prix devise="euro">12.5</prix>

26
Structure d’un document XML

Un document XML peut être découpé en 2 parties : le prologue et le corps.

27
Le prologue
Le prologue correspond à la première ligne de votre document XML. Il donne des informations de
traitement.
<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>
la version
la version de xml que l’on utilise pour décrire nos données.
le jeu de caractères
par défaut, l’encodage de xml est l’utf-8, mais si votre éditeur de texte enregistre vos documents en
iso8859-1, il suffit de la changer dans le prologue : <?xml version = "1.0" encoding="iso8859-1"
standalone="yes" ?>
un document autonome
standalone="yes", cette information permet de savoir si votre document xml est autonome ou si un
autre document lui est rattaché.
28
Le corps
 Le corps d’un document XML est constitué de l’ensemble des balises qui décrivent les données.
 une balise en paires unique doit contenir toutes les autres. Cette balise est appelée élément racine du corps,
exemple :
<racine>
<balise_paire>texte</balise_paire>
<balise_paire2>texte</balise_paire2>
</racine>

 Lorsqu'on crée des documents XML, le but est d’être le plus explicite possible dans le nommage des balises.
Ainsi, le plus souvent, la balise racine aura pour mission de décrire ce quelle contient.
 Si on choisis de décrire un répertoire, on peux par exemple nommer les balises comme dans l’exemple suivant :
<repertoire>
<personne>Amal</personne>
<personne>Hajar</personne>
</repertoire> 29
Validation

 Pour verifier la validite d'un document XML on peut utiliser des outils en ligne
comme:
 https://www.w3schools.com/xml/xml_validator.asp

30
Exercice

L’énoncé:
Le but de cet exercice est de créer un document XML structurant les données d’un répertoire.
Votre répertoire doit comprendre au moins 2 personnes. Pour chaque personne, on souhaite connaître
les informations suivantes :
• Son sexe (homme ou femme).
• Son nom.
• Son prénom.
• Son adresse.
• Un ou plusieurs numéros de téléphone (téléphone portable, fixe, bureau, etc.).
• Une ou plusieurs adresses e-mail (adresse personnelle, professionnelle, etc.).
31
Reponse

<telephone>
<?xml version="1.0" encoding="UTF-8"?> <fixe>0123456789</fixe>
<repertoire> <mobile>0612345678</mobile>
<personne id="1"> </telephone>

<nom>
<email>
<prenom>Alae-eddine</prenom>
[email protected]
<nomDeFamille>Idrissi</nomDeFamille> </email>
</nom> </coordonnees>
<coordonnees> </personne>
</repertoire>
<adresse>123 Rue
Almoukawama</adresse>
07/12/2024 32
Espace de noms XML

 Un espace de noms XML est un mécanisme permettant d'éviter les


conflits de noms d'éléments et d'attributs dans un document XML.
 Imaginez que vous souhaitiez combiner des éléments provenant de
différents vocabulaires, par exemple:
o des éléments HTML et des éléments spécifiques à une application.
 Pour éviter les ambiguïtés, on utilise des espaces de noms.

07/12/2024 33
Espace de noms

 Un espace de noms est identifié par une URI (Uniform Resource Identifier),
qui sert de référence unique. Cette URI n'est pas nécessairement une URL
valide, mais elle doit être unique dans le contexte de votre document.
 L'espace de noms est utilisé pour:
o Éviter les conflits de noms: Deux éléments avec le même nom peuvent
coexister dans un même document s'ils appartiennent à des espaces de
noms différents.
o Améliorer la lisibilité: Les préfixes d'espaces de noms permettent de
clarifier l'origine des éléments.
o Faciliter la validation: Les validateurs XML peuvent utiliser les espaces de
noms pour vérifier la conformité d'un document à un schéma.

07/12/2024 34
Syntaxe

 Pour déclarer un espace de noms, on utilise l'attribut xmlns (XML


Namespace).
<élément xmlns:préfixe="URI_de_l'espace_de_noms">
</élément>
 préfixe: Un nom court utilisé pour faire référence à l'espace de noms.
 URI_de_l'espace_de_noms: L'URI qui identifie l'espace de noms.
 Pour utiliser un élément d'un espace de noms, on préfixe son nom par le
préfixe de l'espace de noms, suivi d'un deux-points.
 <préfixe:élément>...</préfixe:élément>

07/12/2024 35
Exemple
Imaginez un document qui décrit à la fois une commande et les informations de facturation associées.
Chaque partie pourrait utiliser un schéma XML différent :
XML
<commande xmlns:cmd="http://www.exemple.com/commande"
xmlns:fact="http://www.exemple.com/facturation">
<cmd:numero>12345</cmd:numero>
<cmd:date>2023-11-22</cmd:date>
<fact:total>100</fact:total>
<fact:modePaiement>CB</fact:modePaiement>
</commande>

Dans cet exemple :


• L'espace de noms cmd est utilisé pour les éléments liés à la commande.
• L'espace de noms fact est utilisé pour les éléments liés à la facturation.
07/12/2024 36
Exercices

 Exercice1
 Enoncé: Créez un document XML représentant un catalogue de livres. Chaque
livre doit avoir un titre, un auteur et une année de publication.

07/12/2024 37
Solution

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


<catalogue>
<livre>
<titre>Le Petit Prince</titre>
<auteur>Antoine de Saint-Exupéry</auteur>
<annee>1943</annee>
</livre>
<livre>
<titre>L'alchimiste</titre>
<auteur>Paulo Coelho</auteur>
<annee>Inconnue</annee>
</livre>
</catalogue>
Exercices

 Exercice2:
 Enoncé: Modifiez le document précédent pour ajouter un attribut
"langue" à chaque élément "livre", indiquant la langue d'origine du livre.

07/12/2024 39
Solution

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


<catalogue>
<livre langue="fr">
<titre>Le Petit Prince</titre>
<auteur>Antoine de Saint-Exupéry</auteur>
<annee>1943</annee>
</livre>
<livre langue="fr">
<titre>20 000 lieues sous les mers</titre>
<auteur>Jules Verne</auteur>
<annee>1870</annee>
</livre>
</catalogue>
Exercices

 Exercice3:
 Enoncé: Créez un document XML représentant une bibliothèque. Une
bibliothèque contient plusieurs rayons, chaque rayon contient plusieurs
livres. Chaque livre a un titre, un auteur, une année de publication et un
genre.

07/12/2024 41
Solution

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


<bibliotheque>
<rayon>
<livre titre="Le Petit Prince" auteur="Antoine de Saint-
Exupéry" annee="1943" genre="Jeunesse" />
<livre titre="20 000 lieues sous les mers" auteur="Jules
Verne" annee="1870" genre="Aventure" />
</rayon>
</bibliotheque>
Exercice d'interpretation

• Enoncé: Decrivez le contenu du document suivant:


https://github.com/CiscoDevNet/dne-dna-code/blob/master/intro-
mdp/yang/example-ietf-interfaces-data.xml

Vous aimerez peut-être aussi