yaml, una alternativa para XML

yaml es un lenguaje de serialización de datos, una alternativa al lenguaje de marcado XML. Es muy interesante, y es muy útil usarlo por que es más legible para el ojo humano que un archivo XML. Está enfocado a la simplicidad. Vamos a ver un ejemplo tomado de la realidad, así es como luciría un archivo de mapeo de NHibernate si fuera escrito en yaml:

Si usas NHiberante, debes darte cuenta que esto es mucho más fácil de leer. Como se puede apreciar la delimitación es hecha por identación. Si conoces lenguajes como Python esto te resultará muy familiar. Por supuesto, esto no está soportado en NHibernate, pero quien sabe, quizás alguien quiere donar algunas horas al OSS y hacerlo ;)

Quizás una notoria desventaja es que yaml no posee esquema (schema). Y podés darte cuenta de las características que nos estamos perdiendo por esto, la más importante: validación de un documento yaml.

En .Net-landia no es tan popular, de hecho no lo es, pero en lenguajes como Python, Php, Perl, C++ se usa mucho. En el nuevo bebé de Google: Google App Engine, el cual tiene como lenguaje principal a Python (actualmente es el único lenguaje que soporta), usa yaml para los archivos de configuración.

6 comments so far

  1. Kamran Abril 28, 2008 17:02

    Yo tambien pense que YAML config seria util para NHibernate cuando estaba jugando con google app engine y aprendiendo python.

  2. GLM Abril 29, 2008 11:03

    Yet Another Markup Language?

    se parece a json, y boo… (ok boo es .net)

    que tan bueno es tener varias formas de hacer casi lo mismo?

    Estaria bueno un chart haciendo comparaciones, ademas si es simanticamente compatible con xml se podria usar lo que ya hay para xml pero “verlo” de forma distinta

  3. Dario Quintana Abril 29, 2008 12:48

    En el lado de .Net tenemos este parser, pero está muy olvidado:
    http://sourceforge.net/projects/yaml-net-parser/

    Habria que meterle un poco de mano

  4. Dario Quintana Abril 29, 2008 15:25

    Bueno, ahora hice una copia de ese proyecto a mi SVN:
    http://darioquintana.googlecode.com/svn/trunk/Yaml.Net/

    Hice algunos cambios de namespaces, refactoring, reformateo de codigo, optimizacion para utilzar generics, agregué algunos tests.

    Ahora hay que ver que hace falta para seguir. Me gustaría que se puedan crear clases demarcadas con atributos, para despues enlazar los archivos de datos en yaml directamente a esas clases.

    Saludos

  5. Dario Quintana Abril 29, 2008 15:54

    @GLM: se parece a JSON por que de hecho JSON es un subconjunto de YAML, no es un perfecto subconjunto por que yaml carece de soporte de caracteres. La mayoría de los parsers de Yaml parsean bien los Json-files.

  6. Pedro Mayo 29, 2008 14:18

    Dario, estoy dando mis primeros pasos con DB4O, pero trabajando con VB .NET. Hasta ahora guardo en la BD y recupero todos los objetos (por ej. para cargar un combo o un grid), pero no estoy pudiendo trabajar con SODA para las consultas. Que me recomendas para hacer consultas con criterios, como lo hariamos con SQL. Probe con QBE pero es mas concreto y sin criterios.
    Si tenes algun codigo de ejemplo te lo agradeceria.
    Muchas gracias.

    Pedro

Leave a comment

Please be polite and on topic. Your e-mail will never be published.