Co se týče XML. Jeho velká výhoda je vyzrálost - spousta nástrojů, schema, transformace.
Osobně jsem nikdy nepochopil kdy psát atributy a kdy zanořené uzly. Ale tuhle někdo dobře komentoval, že to je z důvodu, že to je původně dokumentový formát. To pak začne dávat smysl - ne, že by to něco vyřešilo.
Princip není složitý. Pokud není možné, aby bylo víc stejných atributů a skutečně bude atomický, můžeš použít atribut. Jinak zanořené uzly. Zkus porovnat:
<osoba jméno="Adam" příjmení="Bernau"/>a
<osoba>
<jméno>Adam</jméno>
<příjmení>Bernau</příjmení>
</osoba>Oba zápisy jsou možné, architekt dokumentu určuje, který z nich bude použit. Osobně dávám přednost prvnímu zápisu, protože je stručnější než odpovídající JSON a dobře se generuje při exportu databázové tabulky, ale často je v požadavcích, aby byl použit druhý způsob.
S xslt jsem se na jednom projektu tak strašně spálil, že jsem ho zavrhl zcela, a raději jsem to přepsal do Rustu (sorry hejtři). A to mě nikdo nemůže po právu obvinit z toho, že bych se necítil dobře ve funkcionálním a deklarativním světě. Jak to ale budu řešit v situaci, kdy budu chtít uživatelské transformace... To bude ještě radost.
Na jedné straně máme XML, kde se escapuje snad půlstovkou různých způsobů, na druhé straně JSON, kde je jenom jeden způsob, ale pro změnu se escapuje všechno.
Mě to celé přijde, že vůči XML jsou oprávněné výhrady, ale JSON jde úplně stejnou cestou a neřeší vůbec nic.
Do jedné firmy mě přijali právě proto, že umím XSLT. Bez něho nebylo možné zajistit, aby skript doběhl za kratší dobu než za 24 hodin. XSLT to s přehledem zvládl s drátem v USB.
Escapování v XML neřeším, neboť to dělají běžné generátory. Někdy však klient pošle nevalidní XML, například název francouzského parfému v souboru kódovaném ve Windows-1250. No jo, Pohoda není vždy pohodová, když ji někdo blbě nastaví. Čtečka XML to samozřejmě odmítla.
Mám proti XML jednu výhradu: Neporadí si s dvojicí znaků "--" v komentáři. Generátor to klidně vygeneruje, ale parser nepřečte. Je to bug.