Loading AI tools
format de représentation de données par sérialisation De Wikipédia, l'encyclopédie libre
YAML, acronyme de Yet Another Markup Language dans sa version 1.0[1], devenu l'acronyme récursif de YAML Ain't Markup Language (« YAML n’est pas un langage de balisage ») dans sa version 1.1[2], est un format de représentation de données par sérialisation Unicode. Il reprend des concepts d'autres langages comme XML, ou encore du format de message électronique tel que documenté par RFC 2822. YAML a été proposé par Clark Evans en 2001[3], et implémenté par ses soins ainsi que par Brian Ingerson et Oren Ben-Kiki.
Extensions | .yaml , .yml |
---|---|
Type MIME | application/yaml |
PUID | |
Développé par |
Clark Evans (d) |
Version initiale |
, 23 ans |
Basé sur | |
Spécification | |
Site web |
(en) yaml.org |
Son objectif est de représenter des informations plus élaborées que le simple CSV en gardant cependant une lisibilité presque comparable.
En 2015, Symfony 2, Drupal 8 et phpMyAdmin, entre autres, l'utilisent pour leurs formats d'entrée et de sortie.
L'idée de YAML est que presque toute donnée peut être représentée par combinaison de listes, tableaux associatifs et données scalaires. YAML décrit ces formes de données (les représentations YAML), ainsi qu'une syntaxe pour présenter ces données sous la forme d'un flux de caractères (le flux YAML).
Une application informatique passe du flux YAML à la représentation YAML par l'opération de chargement (anglais load). Elle passe de la représentation au flux par l'opération de déchargement (anglais dump).
La syntaxe du flux YAML est relativement simple, efficace, moins verbeuse que du XML, moins compacte cependant que du CSV. Elle a été établie pour être le plus lisible possible par des humains, tout en pouvant être mise en correspondance facilement avec les types de données précités, communs dans les langages de haut niveau. À ces langages il emprunte certaines notations :
#
) et se prolongent sur toute la ligne. Si par contre le croisillon apparaît dans une chaine, il signifie alors un nombre littéral ;~
) ;-
), suivi d'un espace, à raison d'un élément par ligne ;"
), ou simples ('
), sachant qu'un guillemet s'échappe avec un antislash (\
), alors qu'une apostrophe s'échappe avec une autre apostrophe[4]. Ils peuvent de plus être représentés par un bloc indenté avec des modificateurs facultatifs pour conserver (|
) ou éliminer (>
) les retours à la ligne ;---
) ; trois points (...
) optionnels marquent la fin d'un document dans un fichier ;&
) puis sont référencés avec un astérisque (*
) ; JSON, un langage concurrent de YAML, est compatible avec la syntaxe de JavaScript mais ne supporte pas cette notion de référence ;Il est aussi possible de préciser le type (anglais tag) d'une donnée. Cependant, cette précision n'opère aucune contrainte, et fonctionne plutôt comme un marquage, ou une modélisation.
Un fichier YAML est analysable en une seule passe de lecture.
La syntaxe YAML se distingue de JSON par le fait qu'il se veut plus facilement lisible par une personne. Il se distingue du XML par le fait qu'il s'intéresse d'abord à la sérialisation de données, et moins à la documentation.
phpMyAdmin permet l'export des bases MySQL en YAML, entre autres formats.
La hiérarchie de la structure de données est assurée par une indentation homogène, ici quatre espaces par niveau.
---
receipt: Oz-Ware Purchase Invoice
date: 2012-08-06
customer:
given: Dorothy
family: Gale
items:
- part_no: A4786
descrip: Water Bucket (Filled)
price: 1.47
quantity: 4
- part_no: E1628
descrip: High Heeled "Ruby" Slippers
size: 8
price: 100.27
quantity: 1
bill-to: &id001
street: |
123 Tornado Alley
Suite 16
city: East Centerville
state: KS
ship-to: *id001
specialDelivery: >
Follow the Yellow Brick
Road to the Emerald City.
Pay no attention to the
man behind the curtain.
...
Des bibliothèques pour YAML existent pour différents langages.
C :
C++ :
D :
Erlang :
Go :
Haskell :
Java :
Lua :
OCaml :
Perl :
PHP :
Python :
Ruby :
R :
Rust :
Scala :
Tcl :
XML :