web-dev-qa-db-fra.com

Si YAML n'est pas un langage de balisage, qu'est-ce que c'est?

Je ne vois pas ce qui fait de YAML moins un langage de balisage que XML. Le but d'un langage de balisage est de définir la structure d'un document, et YAML fait exactement cela. (YAML signifie Yaml n'est pas un langage de balisage.)

Ce que YAML devrait plutôt représenter, c'est Encore un autre langage de balisage.

58
desbest

Ainsi, un langage de balisage suppose un texte de base, généralement lisible par l'homme, puis des indicateurs spéciaux ou "balisage" qui dirigent le traitement. L'idée vient d'un éditeur, qui prendrait une version imprimée du manuscrit de quelqu'un et le "marquerait" pour montrer où les nouvelles lignes devraient aller, les modifications, etc.

De cette manière, SGML est un méta-langage pour déclarer des langages de balisage et HTML est un langage de balisage. En 1996-1997, lorsque XML est entré en scène, il a été vendu comme méta-langage SGML simplifié pour créer des langages de balisage. En XML (et SGML), vous avez des éléments pour "marquer" une partie du texte, puis des attributs qui modifient le marquage. Au fil du temps, XML a été utilisé pour bien plus que le balisage de documents, mais les gens l'ont utilisé pour la sérialisation des données - même s'il n'a jamais été conçu pour faire une telle chose. Bien sûr, c'était le gros problème à résoudre.

YAML et JSON sont apparus sur la scène et se sont concentrés sur données sérialisation, pas sur le balisage de document. Dans ces langues, il n'y a tout simplement pas de texte de document de base.
Par conséquent, YAML Ain't Markup Language est un différenciateur assez précis de XML.

44
clarkevans

Voici la vraie histoire ... :)

Clark, Oren et moi avons commencé à travailler sur YAML en avril 2001. Oren et Clark faisaient partie de la liste de diffusion SML, qui essayait de simplifier XML. Je venais d'écrire un langage de sérialisation de données pour Perl appelé Data :: Denter. Clark m'a contacté pour me parler d'une idée qu'ils avaient appelée YAML, qui ressemblait à la syntaxe Data :: Denter. Clark avait déjà acquis yaml.org.

Après quelques mois de travail ensemble, j'ai souligné que YAML (qui représentait certainement un autre langage de balisage à cette époque) n'était pas vraiment un langage de balisage (balisant divers éléments d'un document texte) mais langage de sérialisation (représentation textuelle de graphes de données typées/cycliques). Nous avons tous aimé le nom YAML, nous l'avons donc rétrogradé pour signifier YAML Ain't Markup Language .

http://yaml.org/spec/ commence par:

YAML ™ (rime avec "chameau") est un langage de sérialisation de données basé sur Unicode, convivial et multilingue, conçu autour des structures de données natives courantes des langages de programmation agiles.

Je n'aurais pas pu mieux le dire moi-même…:

109
ingydotnet

Voici une citation de ne page sur YAML :

Je suppose que la toute première question sur l'esprit des lecteurs doit être, "pourquoi le nom YAML?" Il existe un certain nombre d'outils qui ont adopté des acronymes de la forme "YA *", pour signifier "Encore un autre XXX". Dans la course aux armements de l'esprit open-source, YAML évite son acronyme implicite, se contentant plutôt du récursif "YAML Ain't Markup Language". Il y a cependant un certain sens à cela: YAML fait ce que font les langages de balisage, mais sans exiger de balisage.

Le nom a été choisi car il nécessite beaucoup moins de balisage que les autres langages traditionnels, tels que XML. Il le distingue comme étant davantage orienté données que orienté balisage.

2
EdoDodo

XML a hérité la partie "ML" de son nom de HTML et SGML, qui sont des langages de "balisage" en ce qu'ils décrivent un flux de texte brut avec des instructions balisage telles que "cette partie du le texte doit être en gras "ou" cette partie du texte est un titre ". Autrement dit, ces parties particulières du texte sont marquées comme étant en gras, ou un en-tête.

Plus tard, certaines personnes ont commencé à écrire du XML composé uniquement de balises et d'attributs, sans texte brut pour ces balises à baliser. (Les opinions et les styles diffèrent quant à savoir s'il s'agit d'une utilisation appropriée de XML). Lorsqu'il est utilisé de cette façon, XML devient un langage pour écrire des données arborescentes.

YAML n'est "pas" un langage de balisage car son modèle de données contient uniquement la structure arborescente, sans notion de texte linéaire sous-jacent auquel s'applique la structure arborescente . Il n'y a rien à marquer là-bas - ou autrement dit, les données représentées par un flux YAML ne sont pas du balisage. En revanche, les données représentées par une balise XML sont un balisage , ou au moins selon certains points de vue est censé être. (Dans les deux cas, la représentation desdites données contient un balisage, comme des deux-points et des indentations en YAML ou '=' et des guillemets en XML, mais cela n'est pas le point).

2
Henning Makholm