TL; DR
Prolog no se ha mencionado aquí, pero es el mejor formato que conozco para representar datos. Los programas de Prolog, esencialmente, describen bases de datos, con relaciones complejas entre entidades. Prolog está muerto, es simple de analizar, y probablemente su único rival sean las expresiones S en este dominio.
versión completa
programadores a menudo "olvidan" lo que en realidad se compone de XML. Por lo general, se refiere a un subconjunto muy pequeño de lo que es.XML es un formato muy complejo, con al menos estas partes: DTD schema language, XSD schema language, XSLT transformation language, RNG schema language y XPath (más XQuery) idiomas: todos ellos son parte integrante del estándar XML. Además, hay algunos apócrifos como E4X. Todos y cada uno de ellos tienen sus propias versiones, un poco de superposición, incompatibilidades, etc. Muy pocos analizadores XML en la naturaleza implementan todos ellos. Por no mencionar las múltiples peculiaridades y errores de los populares análisis, algunos que conducen a problemas de seguridad notables como https://en.wikipedia.org/wiki/XML_external_entity_attack.
Por lo tanto, buscando una XML alternativa no es una muy buena idea. Probablemente no quieras tratar con los gustos de XML en absoluto.
YAML es, probablemente, la segunda peor opción. No es tan grande como XML, pero también fue diseñado en un intento de cubrir todas las bases ... más de diez veces cada una ... de maneras diferentes y únicas que nadie podría concebir. Todavía tengo que escuchar sobre un analizador de YAML que funcione correctamente. Ruby, el lenguaje que usa mucho YAML, tuvo el famoso screwed up debido a eso. Todos los analizadores YAML que he visto hasta la fecha son copias de libyaml, que es un analizador escrito a mano (no generado a partir de una descripción formal), con un código que es muy difícil de verificar para la corrección (funciones que abarcan cientos de líneas con flujo de control intrincado). Como ya se mencionó, contiene JSON por completo ... además de un puñado de técnicas de codificación Unicode ... dentro del mismo documento, y probablemente un montón de otras cosas que no quiere escuchar.
JSON, por otro lado, es completamente diferente a los otros dos. Probablemente pueda escribir un analizador JSON mientras espera la descarga del artefacto del analizador JSON desde su Maven Nexus. Puede hacer muy poco, pero al menos sabes de lo que es capaz. No hay sorpresas. (Excepto algunas discrepancias relacionadas con el escape de caracteres en la codificación de cadenas y dobles). Sin explotaciones encubiertas. No puedes escribir comentarios en él. Las cadenas multilíneas se ven mal. Sea lo que sea lo que quiera decir con la distinción entre propiedades y atributos, puede implementarlo mediante más diccionarios anidados.
Supongamos que, aunque quiere saber qué es lo que XML perjudicó ... bueno, las cosas populares como YAML o JSON no lo harán. De alguna manera, la moda y el pensamiento racional se separaron en la programación en algún momento a mediados de los años setenta. Por lo tanto, tendrás que regresar a donde todo comenzó con McCarthy, Hoare, Codd y Kowalski, descubrir qué es lo que estás tratando de representar, y luego ver cuál es la mejor técnica de representación para lo que sea que seas tratando de representar :)
JSON no coincide. No admite "atributos ni propiedades". – rjmunro
Obtenga un lápiz y papel e intente crear una sintaxis que admita atributos, elementos y jerarquía. Ahora vea qué tan humanos son legibles sus intentos. –
@basel: obtendrá python – makapuf