YAML | |
---|---|
Extensie | .yamlsau.yml |
tip MIME | application/x-yaml [1] [2] , text/yaml [3] [2] și text/x-yaml [4] |
Dezvoltator | Clark Evans [d] |
publicat | 11 mai 2001 [5] |
Ultima lansare | 1.2.2 (1 octombrie 2021 ) |
Tip de format | Schimb de date |
Extins din | XML , Perl și JSON |
format deschis ? | da |
Site-ul web | yaml.org _ |
YAML ( acronim engleză "Yet Another Markup Language" - " Another Markup Language ", mai târziu - acronim recursiv engleză "YAML Ain't Markup Language" - "YAML - not a markup language") - format de serializare a datelor "prietenos" , aproape conceptual la limbaje de marcare , dar concentrat pe comoditatea I/O a structurilor de date tipice ale multor limbaje de programare .
Interpretarea numelui reflectă istoria dezvoltării: în primele etape, YAML a reprezentat Yet Another Markup Language („ Un alt limbaj de marcare ”) și a fost chiar poziționat ca un concurent pentru XML , dar a fost redenumit ulterior pentru a se concentra pe date și nu pe marcarea documentelor [6 ] .
Conform obiectivelor declarate de Clark Evans , YAML 1.0 urmărește [7] :
Prin revizuirea actuală a YAML (1.2), au fost aduse unele modificări la aceste ținte [8] :
Sintaxa YAML este minimalistă, mai ales în comparație cu sintaxa XML . Specificația indică faptul că standardul RFC 822 a avut o mare influență . Mai jos sunt mostre ale diferitelor componente de marcare. Trebuie remarcat faptul că, având opțiunea de format pe o singură linie, JSON este un subset valid de YAML.
Elementele principale ale YAML:
În unele proiecte, trebuie să stocați o configurație care descrie maparea ( legături în limba engleză ) a comenzilor IRC la funcții folosind expresii regulate .
Iată configurația originală prezentată într-un tabel:
ircEvent | metodă | expresie regulată |
---|---|---|
PRIVMSG | nouUri | „^http://.*” |
PRIVMSG | deleteUri | „^șterge.*” |
PRIVMSG | aleatoriuUri | „^aleatoriu.*” |
În YAML, această configurație poate fi reprezentată după cum urmează:
legături : - ircEvent : metoda PRIVMSG : newUri regexp : '^http://.*' - ircEvent : metoda PRIVMSG : deleteUri regexp : '^delete.*' - ircEvent : metoda PRIVMSG : randomUri regexp : '^aleatoriu.*'sau
legături : - { ircEvent : PRIVMSG , metoda : newUri , expresie regulă : '^http://.*' } - { ircEvent : PRIVMSG , metodă : deleteUri , expresie regulă : '^delete.*' } - { ircEvent : PRIVMSG , metodă : randomUri , regexp : '^random.*' }Pentru comparație, în reprezentarea XML, această configurație poate fi reprezentată după cum urmează:
<bindings> <binding> <ircEvent> PRIVMSG </ircEvent> <method> newUri </method> <regexp> ^http://.* </regexp> </binding> <binding> <ircEvent> PRIVMSG </ircEvent > <method> deleteUri </method> <regexp> ^delete.* </regexp> </binding> <binding> <ircEvent> PRIVMSG </ircEvent> <method> randomUri </method> <regexp> ^random.* </regexp> </binding> </bindings>sau
<bindings> <binding ircEvent= "PRIVMSG" method= "newUri" regexp= "^http://.*" /> <binding ircEvent= "PRIVMSG" method= "deleteUri" regexp= "^delete.*" /> <binding ircEvent= Metoda "PRIVMSG" = "randomUri" regexp= "^random.*" /> </bindings>Elementele XML imbricate pot fi utilizate pentru a afișa structuri arbitrare, iar YAML este mai aproape de afișarea modelelor de date tipice din Ruby , Perl , Python , Java , permițându-vă să descrieți combinații libere de secvențe, mapări și tipuri scalare - adică mai aproape de real. structuri de date ale limbajelor de programare și nu necesită convenții DOM diferite pentru maparea structurilor de date către și de la documente, așa cum este cerut de XML .
YAML este folosit în principal ca format pentru fișierele de configurare pentru Ruby on Rails , Docker Compose [9] , Dancer , Symfony , framework GAE , Google App Engine și Dart . Este limbajul principal pentru descrierea claselor, resurselor și manifestelor pentru pachetele de aplicații OpenStack Murano Project . si Swagger.io . Folosit și în mod implicit pentru configurarea casei inteligente în sistemul Home Assistant .
Limbaje de marcare a documentelor | |
---|---|
documente de birou | |
bine cunoscute | |
Mai puțin cunoscut |