Me concentraré en XSLT en lugar de lenguajes basados en XML en general.
Hay una historia aquí, por supuesto. XSLT fue concebido como un sucesor de DSSSL, el lenguaje de estilo para SGML, y trató de corregir lo que DSSSL había hecho mal. Uno de los principales problemas con DSSSL se percibía como su sintaxis (tipo Esquema), y había una sensación generalizada de que la solución estaba en usar la misma sintaxis para la hoja de estilo y los datos; después de todo, la idea era que una hoja de estilo debería consistir principalmente en datos estructurados en lugar de lógica de programa, y gran parte de esos datos consistirían en datos proforma ("plantilla") para agregar al árbol de resultados, con alguna parametrización.
XSLT a menudo se percibe como excesivamente detallado. Para XSLT 1.0, que desafortunadamente muchas personas todavía usan, probablemente sea cierto, pero el problema se resolvió en gran medida con XSLT 2.0, que a menudo es mucho más conciso que otras formas de resolver el mismo problema.
Ciertamente hay inconvenientes. Estás bastante obligado a usar un editor diseñado específicamente (pero, entonces, la mayoría de los programadores usan editores dirigidos por sintaxis para cada idioma, ¿no es así?). El lenguaje no es tan fácil de componer como podría ser (aunque de nuevo, XSLT 2.0 lo corrige en gran medida). Pero también hay ventajas significativas:
XSLT es ampliamente utilizado por no programadores, y para ellos es una gran ventaja que solo tengan que aprender una sintaxis, no dos. Recuerde, se trata de todos los pequeños detalles, como cómo manejar la codificación de caracteres y el escape de caracteres especiales.
La capacidad de procesar código XSLT usando XSLT es mucho más útil de lo que puedas imaginar. Casi todos los grandes proyectos XSLT aprovechan esta capacidad y pueden aportar grandes beneficios. Por ejemplo, vi un sistema de banca en línea que tenía un par de cientos de formas en su interfaz de usuario, cada una generada por su propia hoja de estilo, pero las hojas de estilo se generaron a partir de una biblioteca de código común que proporciona una gran reutilización y consistencia de apariencia.
Hay un beneficio que no hubiera esperado, y es que el uso de un marco sintáctico restringido como XML obliga a los diseñadores del lenguaje a mantener un nivel de consistencia léxica a medida que el lenguaje evoluciona y al mismo tiempo proporciona una gran extensibilidad. XQuery WG siempre está debatiendo cómo extender el lenguaje sin romper la compatibilidad o introducir peculiaridades; XSLT no tiene tales problemas, porque se trata básicamente de definir nuevos elementos y atributos.