Diferencia entre revisiones de «YAML»
m Referencia corregida para acceder al número de publicación contentiva de la "norma". Entre paréntesis el enlace interno a la definición de las "normas" (más bien publicaciones) si el elctor o lectora desconoce acerca del mismo. |
m ajuste menor |
||
(No se muestran 26 ediciones intermedias de 23 usuarios) | |||
Línea 1: | Línea 1: | ||
{{Ficha de formato de archivo |
{{Ficha de formato de archivo |
||
| logo=Official YAML Logo.svg |
|||
}} |
|||
'''YAML''' es un formato de [[serialización]] de datos legible por |
'''YAML''' es un formato de [[serialización]] de datos legible por |
||
humanos inspirado en lenguajes como [[XML]], [[Lenguaje de programación C|C]], [[Lenguaje de programación Python|Python]], [[Lenguaje de programación Perl|Perl]], así como el formato |
humanos inspirado en lenguajes como [[XML]], [[Lenguaje de programación C|C]], [[Lenguaje de programación Python|Python]], [[Lenguaje de programación Perl|Perl]], así como en el formato de los [[correo electrónico|correos electrónicos]] (RFC 2822). YAML fue propuesto por [[Clark Evans]] en 2001, quien lo diseñó junto a [[Ingy döt Net]] y [[Oren Ben-Kiki]]. |
||
YAML es un [[acrónimo recursivo]] que significa ''YAML Ain't Markup Language'' (en castellano, ‘YAML no es un lenguaje de marcado’).<ref>[http://www.yaml.org/ Página web de YAML.]</ref> A comienzos de su desarrollo, YAML significaba ''Yet Another Markup Language'' ( |
YAML es un [[acrónimo recursivo]] que significa ''YAML Ain't Markup Language'' (en castellano, ‘YAML no es un lenguaje de marcado’).<ref>[http://www.yaml.org/ Página web de YAML.]</ref> A comienzos de su desarrollo, YAML significaba ''Yet Another Markup Language'' (otro lenguaje de marcado más) para distinguir su propósito centrado en los datos en lugar del marcado de documentos. Sin embargo, dado que se usa frecuentemente XML para serializar datos y XML es un auténtico lenguaje de marcado de documentos, es razonable considerar YAML como un lenguaje de marcado ligero. |
||
== Características == |
== Características == |
||
YAML fue creado bajo la creencia de que todos los datos pueden ser representados adecuadamente como combinaciones de listas, [[hash]]es (mapeos) y datos escalares (valores simples). La sintaxis es relativamente sencilla y fue diseñada teniendo en cuenta que fuera muy legible pero que a la vez fuese fácilmente mapeable a los tipos de datos más comunes en la mayoría de los lenguajes de alto nivel. Además, YAML utiliza una notación basada en la |
YAML fue creado bajo la creencia de que todos los datos pueden ser representados adecuadamente como combinaciones de listas, [[hash]]es (mapeos) y datos escalares (valores simples). La sintaxis es relativamente sencilla y fue diseñada teniendo en cuenta que fuera muy legible pero que a la vez fuese fácilmente mapeable a los tipos de datos más comunes en la mayoría de los lenguajes de alto nivel. Además, YAML utiliza una notación basada en la sangría y/o un conjunto de caracteres Sigil distintos de los que se usan en XML, haciendo que sea fácil componer ambos lenguajes. |
||
* Los contenidos en YAML se describen utilizando el conjunto de caracteres imprimibles de Unicode, bien en [[UTF-8]] o [[UTF-16]]. |
* Los contenidos en YAML se describen utilizando el conjunto de caracteres imprimibles de Unicode, bien en [[UTF-8]] o [[UTF-16]]. |
||
* La estructura del documento se denota indentando con espacios en blanco; sin embargo no se permite el uso de caracteres de tabulación para |
* La estructura del documento se denota indentando con espacios en blanco; sin embargo no se permite el uso de caracteres de tabulación para sangrar. |
||
* Los miembros de las listas se denotan encabezados por un [[guion ortográfico|guion]] (''' - ''') con un miembro por cada línea, o bien entre [[corchetes]] (''' [ ] ''') y separados por [[coma (puntuación)|coma]] [[ |
* Los miembros de las listas se denotan encabezados por un [[guion ortográfico|guion]] (''' - ''') con un miembro por cada línea, o bien entre [[corchetes]] (''' [ ] ''') y separados por [[coma (puntuación)|coma]] [[espacio (puntuación)|espacio]] (''' , '''). |
||
* Los |
* Los vectores asociativos se representan usando los [[dos puntos]] seguidos por un espacio. en la forma "clave: valor", bien uno por línea o entre [[paréntesis#Llaves|llaves]] (''' { } ''') y separados por coma seguida de espacio (''' , '''). |
||
* Un valor de un |
* Un valor de un vector asociativo viene precedido por un signo de interrogación (''' ? '''), lo que permite que se construyan claves complejas sin ambigüedad. |
||
* Los valores sencillos (o [[escalares]]) por lo general aparecen sin entrecomillar, pero pueden incluirse entre [[comillas dobles]] (''' " '''), o [[comillas simples]] (''' ' '''). |
* Los valores sencillos (o [[escalares]]) por lo general aparecen sin entrecomillar, pero pueden incluirse entre [[comillas dobles]] (''' " '''), o [[comillas simples]] (''' ' '''). |
||
* En las comillas dobles, los caracteres especiales se pueden representar con secuencias de escape similares a las del [[lenguaje de programación C]], que comienzan con una barra invertida (''' \ '''). |
* En las comillas dobles, los caracteres especiales se pueden representar con secuencias de escape similares a las del [[lenguaje de programación C]], que comienzan con una barra invertida (''' \ '''). |
||
* Se pueden incluir |
* Se pueden incluir múltiples documentos dentro de un único flujo, separándolos por tres [[guion ortográfico|guiones]] (---); los tres [[punto (puntuación)|puntos]] ( ...) indican el fin de un documento dentro de un flujo. |
||
* Los nodos repetidos se pueden denotar con un [[ampersand]] (''' & ''') y ser referidos posteriormente usando el [[asterisco]] (''' * ''') |
* Los nodos repetidos se pueden denotar con un [[ampersand]] (''' & ''') y ser referidos posteriormente usando el [[asterisco]] (''' * ''') |
||
* Los comentarios vienen encabezados por la almohadilla (''' # ''') y continúan hasta el final de la línea. |
* Los comentarios vienen encabezados por la almohadilla (''' # ''') y continúan hasta el final de la línea. |
||
Línea 30: | Línea 32: | ||
=== Listas === |
=== Listas === |
||
<syntaxhighlight lang="yaml"> |
|||
--- # Películas favoritas, formato de bloque |
--- # Películas favoritas, formato de bloque |
||
- BotijoAzul |
- BotijoAzul |
||
Línea 35: | Línea 38: | ||
- Viridiana |
- Viridiana |
||
- Psicosis |
- Psicosis |
||
... |
|||
--- # Lista de la compra, formato en línea |
--- # Lista de la compra, formato en línea |
||
[leche, pan, huevos] |
[leche, pan, huevos] |
||
[chorizo, morcilla, botijo, pollo] |
[chorizo, morcilla, botijo, pollo] |
||
</syntaxhighlight> |
|||
=== |
=== Vectores asociativos === |
||
<syntaxhighlight lang="yaml"> |
|||
--- # Bloque |
--- # Bloque |
||
nombre: Pepe López |
nombre: Pepe López |
||
Línea 45: | Línea 51: | ||
--- # En línea |
--- # En línea |
||
{nombre: Pepe López, edad: 33} |
{nombre: Pepe López, edad: 33} |
||
</syntaxhighlight> |
|||
=== Literales de bloque === |
=== Literales de bloque === |
||
==== Preservando retornos de línea ==== |
==== Preservando retornos de línea ==== |
||
<syntaxhighlight lang="yaml"> |
|||
--- | |
--- | |
||
El texto mantiene su estructura, |
|||
There was a young fellow of Warwick |
|||
en el sentido que preserva los retornos de línea. |
|||
Who had reason for feeling euphoric |
|||
For he could, by election |
|||
Esto incluye también líneas en blanco. |
|||
Have triune erection |
|||
</syntaxhighlight> |
|||
Ionic, Corinthian, and Doric |
|||
==== Ignorando retornos de línea ==== |
==== Ignorando retornos de línea ==== |
||
<syntaxhighlight lang="yaml"> |
|||
SAYO |
|||
--- > |
--- > |
||
El texto rodeado |
El texto rodeado |
||
Línea 64: | Línea 74: | ||
Las líneas en blanco |
Las líneas en blanco |
||
denotan saltos de párrafo. |
denotan saltos de párrafo. |
||
</syntaxhighlight> |
|||
=== Listas de |
=== Listas de vectores asociativos === |
||
<syntaxhighlight lang="yaml"> |
|||
- {nombre: Pepe López, edad: 33} |
- {nombre: Pepe López, edad: 33} |
||
- nombre: Maria Garcia |
- nombre: Maria Garcia |
||
edad: 27 |
edad: 27 |
||
</syntaxhighlight> |
|||
=== |
=== Vectores asociativos de listas === |
||
<syntaxhighlight lang="yaml"> |
|||
hombres: [Pepe Lopez, Guillermo Garcia] |
hombres: [Pepe Lopez, Guillermo Garcia] |
||
mujeres: |
mujeres: |
||
- |
- María García |
||
- Susana |
- Susana Márquez |
||
</syntaxhighlight> |
|||
== Implementaciones == |
== Implementaciones == |
||
Línea 86: | Línea 101: | ||
* [[Lenguaje de programación Java|Java]] |
* [[Lenguaje de programación Java|Java]] |
||
* [[Haskell]] |
* [[Haskell]] |
||
* [[Tcl]] |
|||
* XML (en borrador) |
* XML (en borrador) |
||
Línea 114: | Línea 130: | ||
|fechaarchivo = 9 de mayo de 2008 |
|fechaarchivo = 9 de mayo de 2008 |
||
}} |
}} |
||
* {{ |
* {{cita libro |
||
| url = http://www.etnassoft.com/biblioteca/yaml-ain%E2%80%99t-markup-language/ |
| url = http://www.etnassoft.com/biblioteca/yaml-ain%E2%80%99t-markup-language/ |
||
| título = YAML Ain’t Markup Language Especificación 1.2 |
| título = YAML Ain’t Markup Language Especificación 1.2 |
||
| editorial = OpenLibra |
| editorial = OpenLibra |
||
| formato = pdf |
| formato = pdf |
||
| año = 2009 |
| año = 2009 |
||
| idioma = inglés |
| idioma = inglés |
||
| fechaacceso = 18 de octubre de 2012 |
|||
| urlarchivo = https://web.archive.org/web/20130123053102/http://www.etnassoft.com/biblioteca/yaml-ain%e2%80%99t-markup-language/ |
|||
| fechaarchivo = 23 de enero de 2013 |
|||
}} |
|||
=== Implementaciones === |
=== Implementaciones === |
||
Línea 126: | Línea 146: | ||
* [https://codebeautify.org/yaml-validator Validador YAML] {{en}}. |
* [https://codebeautify.org/yaml-validator Validador YAML] {{en}}. |
||
{{Control de autoridades}} |
|||
[[Categoría:Lenguajes de marcado]] |
|||
[[Categoría:Introducciones relacionadas a la ciencia de la computación |
[[Categoría:Lenguajes de marcado ligero]] |
||
[[Categoría:Introducciones relacionadas a la ciencia de la computación de 2001]] |
|||
[[Categoría:Archivos de configuración]] |
[[Categoría:Archivos de configuración]] |
Revisión actual - 04:50 24 oct 2024
YAML | ||
---|---|---|
Desarrollador | ||
Clark Evans | ||
https://yaml.org/ | ||
Información general | ||
Extensión de archivo | yaml e yml | |
Tipo de MIME | application/x-yaml, text/yaml, text/x-yaml y application/yaml | |
Lanzamiento inicial | 11 de mayo de 2001 | |
Extendido de | Extensible Markup Language, Perl y JavaScript Object Notation | |
Formato abierto | ? | |
YAML es un formato de serialización de datos legible por humanos inspirado en lenguajes como XML, C, Python, Perl, así como en el formato de los correos electrónicos (RFC 2822). YAML fue propuesto por Clark Evans en 2001, quien lo diseñó junto a Ingy döt Net y Oren Ben-Kiki.
YAML es un acrónimo recursivo que significa YAML Ain't Markup Language (en castellano, ‘YAML no es un lenguaje de marcado’).[1] A comienzos de su desarrollo, YAML significaba Yet Another Markup Language (otro lenguaje de marcado más) para distinguir su propósito centrado en los datos en lugar del marcado de documentos. Sin embargo, dado que se usa frecuentemente XML para serializar datos y XML es un auténtico lenguaje de marcado de documentos, es razonable considerar YAML como un lenguaje de marcado ligero.
Características
[editar]YAML fue creado bajo la creencia de que todos los datos pueden ser representados adecuadamente como combinaciones de listas, hashes (mapeos) y datos escalares (valores simples). La sintaxis es relativamente sencilla y fue diseñada teniendo en cuenta que fuera muy legible pero que a la vez fuese fácilmente mapeable a los tipos de datos más comunes en la mayoría de los lenguajes de alto nivel. Además, YAML utiliza una notación basada en la sangría y/o un conjunto de caracteres Sigil distintos de los que se usan en XML, haciendo que sea fácil componer ambos lenguajes.
- Los contenidos en YAML se describen utilizando el conjunto de caracteres imprimibles de Unicode, bien en UTF-8 o UTF-16.
- La estructura del documento se denota indentando con espacios en blanco; sin embargo no se permite el uso de caracteres de tabulación para sangrar.
- Los miembros de las listas se denotan encabezados por un guion ( - ) con un miembro por cada línea, o bien entre corchetes ( [ ] ) y separados por coma espacio ( , ).
- Los vectores asociativos se representan usando los dos puntos seguidos por un espacio. en la forma "clave: valor", bien uno por línea o entre llaves ( { } ) y separados por coma seguida de espacio ( , ).
- Un valor de un vector asociativo viene precedido por un signo de interrogación ( ? ), lo que permite que se construyan claves complejas sin ambigüedad.
- Los valores sencillos (o escalares) por lo general aparecen sin entrecomillar, pero pueden incluirse entre comillas dobles ( " ), o comillas simples ( ' ).
- En las comillas dobles, los caracteres especiales se pueden representar con secuencias de escape similares a las del lenguaje de programación C, que comienzan con una barra invertida ( \ ).
- Se pueden incluir múltiples documentos dentro de un único flujo, separándolos por tres guiones (---); los tres puntos ( ...) indican el fin de un documento dentro de un flujo.
- Los nodos repetidos se pueden denotar con un ampersand ( & ) y ser referidos posteriormente usando el asterisco ( * )
- Los comentarios vienen encabezados por la almohadilla ( # ) y continúan hasta el final de la línea.
- Los nodos pueden etiquetarse con un tipo o etiqueta utilizando el signo de exclamación( ! ) seguido de una cadena que puede ser expandida en una URL.
- Los documentos YAML pueden ser precedidos por directivas compuestas por un signo de porcentaje ( % ) seguidos de un nombre y parámetros delimitados por espacios.. Hay definidas dos directivas en YAML 1.1:
- La directiva %YAML se utiliza para identificar la versión de YAML en un documento dado.
- La directiva %TAG se utiliza como atajo para los prefijos de URIs. Estos atajos pueden ser usados en las etiquetas de tipos de nodos.
YAML requiere que las comas y puntos y comas que se utilicen como separadores en las listas sean seguidos por un espacio, de forma que los valores escalares que contengan signos de puntuación (como 5,280 o http://www.wikipedia.org) se puedan representar sin necesidad de utilizar comillas.
Hay dos caracteres adicionales que están reservados en YAML para su posible estandarización en un futuro: la arroba ( @ ) y el acento grave ( ` ).
Ejemplos
[editar]Listas
[editar] --- # Películas favoritas, formato de bloque
- BotijoAzul
- BotijoVerde
- Viridiana
- Psicosis
...
--- # Lista de la compra, formato en línea
[leche, pan, huevos]
[chorizo, morcilla, botijo, pollo]
Vectores asociativos
[editar] --- # Bloque
nombre: Pepe López
edad: 33
--- # En línea
{nombre: Pepe López, edad: 33}
Literales de bloque
[editar]Preservando retornos de línea
[editar] --- |
El texto mantiene su estructura,
en el sentido que preserva los retornos de línea.
Esto incluye también líneas en blanco.
Ignorando retornos de línea
[editar]SAYO
--- >
El texto rodeado
será formateado
como un único
párrafo
Las líneas en blanco
denotan saltos de párrafo.
Listas de vectores asociativos
[editar] - {nombre: Pepe López, edad: 33}
- nombre: Maria Garcia
edad: 27
Vectores asociativos de listas
[editar] hombres: [Pepe Lopez, Guillermo Garcia]
mujeres:
- María García
- Susana Márquez
Implementaciones
[editar]Existen implementaciones de YAML para los siguientes lenguajes:
- JavaScript
- Objective-C
- Perl
- PHP
- Python
- Ruby (utiliza YAML como el formato de serialización por defecto; YAML está incluido en la biblioteca estándar desde la versión 1.8)
- Java
- Haskell
- Tcl
- XML (en borrador)
Véase también
[editar]Referencias
[editar]Enlaces externos
[editar]- «YAML.org» (en inglés).
- «YAML Specification» (en inglés).
- «YAML Cookbook» (en inglés). Archivado desde el original el 9 de mayo de 2008.
- YAML Ain’t Markup Language Especificación 1.2 (pdf) (en inglés). OpenLibra. 2009. Archivado desde el original el 23 de enero de 2013. Consultado el 18 de octubre de 2012.
Implementaciones
[editar]- YAML módulos Perl en CPAN (en inglés).
- Validador YAML (en inglés).