UKOnline

Format de données

On va maintenant s'intéresser à la représentation de données tabulaires sous forme de fichiers texte. Des données tabulaires sont des données que l'on peut représenter sous la forme d'un tableau, comme illustré par la figure 3. On reviendra plus loin dans ce cours sur la structure de tels tableaux.

NomPrixCode
Banane5,99 €/kg77
Pomme2,99 €/kg99
Poire7,99 €/kg170
Exemple d'une table listant des fruits vendus par un magasin.

Cette section présente trois formats différents permettant de représenter un tel tableau de données : les formats CSV, XML et JSON. Ces trois formats se base sur un fichier texte, c'est-à-dire qu'ils représentent les données par une suite de caractères. Pour les trois formats, on peut distinguer deux types d'information dans les fichiers : les données en tant que telles et des caractères permettant de stocker la structure de ces données. La grande différence entre ces trois formats est la manière avec laquelle les données sont structurées.

CSV

Le format Comma-Separated Values (CSV) est un format permettant de représenter des données tabulaires sous la forme de valeurs séparées par des virgules. Il n'y a pas de spécification officielle du format CSV, mais la forme la plus courante est définie par la RFC 4180 qui établit également son type MIME qui est text/csv.

Chaque ligne du fichier texte représente une ligne du tableau de données. Sur chacune des lignes, on sépare les données des différentes colonnes avec des virgules. Cette structure explique le nom du format, qui se traduit en français par « valeurs séparées par des virgules ». Voici par exemple comment on représente le tableau d'exemple au format CSV :

La première ligne du fichier contient l'entête de la table, à savoir le nom de chacune des colonnes. Les lignes suivantes contiennent les données du tableau, en respectant l'ordre des colonnes. Remarquez également que pour les nombres, on utilise le point comme séparateur décimal (comme c'est la convention en anglais).

Ce format est peu utilisé, si ce n'est pour des échanges ponctuels, car il n'est pas standardisé. Par contre, il est très facile à générer, ce qui le rend malgré tout populaire. Le séparateur n'est pas forcément une virgule, on peut par exemple utiliser le point-virgule. On peut également mettre les données entre guillemets, ce qui est utile si ces données contiennent le séparateur choisi. Dans ce cas, pour avoir un guillemet dans les données, il faut simplement le doubler. Voici un autre exemple de fichier CSV, illustrant ces variantes :

Ce fichier CSV représente le tableau de données de la figure 4. On voit que les auteurs du deuxième livre ont été séparés par des points-virgules dans le fichier CSV. Pour pouvoir utiliser le point-virgule, il a fallu mettre cette liste d'auteurs entre guillemets. On voit également que le titre du troisième livre contient des guillemets. Pour cela, il a fallu mettre tout le titre entre guillemets et doubler les guillemets à l'intérieur du titre.

TitreAuteursÉditeurISBN
Les bases de données NoSQL : comprendre et mettre en oeuvreRudi BruchezEyrolles9782212141559
SQLRonald Plew, Ryan Stephens et Arie JonesPearson9782744075827
Sabina, "la juive" de Carl JungAlain de MijollaPierre-Guillaume de Roux Editions9782363710895
Exemple d'une table listant des livres proposés dans une bibliothèque.

XML

Le format eXtensible Markup Language (XML) est un format qui utilise des balises pour structurer les données dans le fichier texte. Les balises sont utilisées pour encadrer un contenu : il y a une balise ouvrante et une balise fermante. Le format a été officiellement spécifié par le World Wide Web Consortium (W3C), qui a définit la version 1.1 publiée le 4 février 2004 (même si la version 1.0 publiée le 10 février 1998 est plus répandue). Deux types MIME sont utilisables pour les fichiers XML : application/xml et text/xml.

Les balises portent un nom qui est simplement noté entre chevrons (< >) pour la balise ouvrante, et entre </ > pour la balise fermante. Entre une balise ouvrante et fermante, on retrouve du texte et d'autres balises. Cette structure explique le nom du format, qui se traduit en français par « langage de balisage extensible ». Le fichier XML dans son ensemble doit être composé d'une seule balise qui englobe tout le document XML, appelée nœud du document. Voici par exemple comment on représente le tableau d'exemple au format XML :

La racine de ce document XML est data. On y retrouve ensuite des balises fruit pour représenter chaque fruit, à savoir chacune des lignes du tableau de données. La définition d'un fruit s'étend de la balise ouvrante <fruit> à la balise fermante </fruit>. Enfin, chaque fruit possède trois balises name, price et code, représentant respectivement leur nom, prix et code.

Le format XML définit également la notion d'attribut. Un attribut est une paire constituée d'un nom et d'une valeur, que l'on associe aux balises. On place la définition des attributs dans les chevrons de la balise ouvrante, après le nom. On pourrait donc représenter le tableau d'exemple avec le fichier XML suivant :

Les balises fruit possèdent donc trois attributs représentant respectivement le nom, le prix et le code du fruit. Le deuxième document XML est plus compact que le premier et sera dès lors souvent préféré au premier document.

JSON

Le format JavaScript Object Notation (JSON) est un format plus récent utilisé pour représenter des objets qui dérive de la notation des objets du langage JavaScript. Ce format est officiellement défini par la RFC 7159 et son type MIME est application/json. La notation permet de représenter de l'information structurée comme le XML. Un document JSON est essentiellement un ensemble de paires constituées d'un étiquette et d'une valeur ou d'une liste de valeurs. Les paires sont placées entres accolades et séparées par des virgules. Les valeurs des listes sont placées entre crochets et séparées par des virgules. Voici par exemple comment on représente le tableau d'exemple au format JSON :

Le premier ensemble possède une paire dont la clé est data et dont la valeur est une liste de trois éléments. Chacun de ces trois éléments est un ensemble avec trois paires représentant respectivement le nom, le prix et le code de chaque fruit. Remarquez que les nombres ne sont pas placés entre guillemets, contrairement aux mots et aux clés qui doivent être entre guillemets.