Atributy v XML

Kit

Re:Atributy v XML
« Odpověď #30 kdy: 11. 07. 2018, 11:21:10 »
viz třeba:
"čeština se v tom nedá čít" ... string - any unicode character except " and \

Zajímavé je, že když jsem napsal do JSONu český text, tak mi to parser odmítl.


Kit

Re:Atributy v XML
« Odpověď #31 kdy: 11. 07. 2018, 11:25:29 »
Pak tam taky chybí jmenné prostory, takže ten formát není rozšiřitelný. Jsou jakési pokusy, jak to tam dohackovat, ale je to takové drbání se levou rukou na pravém uchu.

Hodně velký problém byl (a často stále je) chybějící infrastruktura – editory, validátory, schéma, dotazovací jazyk, transformační jazyk… něco z toho se jim už podařilo dovyvinout, znovu-vynalézt kolo, ale celé roky znamenalo použití JSONu vracet se někam do středověku… a zbytečně.

Někdy je taky problém s tím, že nezáleží na pořadí klíčů, takže musíš načíst vše a pak se teprve můžeš rozhodovat, jak jednotlivé hodnoty interpretovat. Na to narazíš, když chceš udělat nějaký pružnější/variabilnější datový model, kde můžeš mít různé typy (např. dědičnost). Pak se to musí všelijak obcházet přes pole (která zachovají pořadí, ale je to hnusné), nebo natáhnout vše do paměti a pak teprve zpracovat, což zase brání proudovému zpracování dlouhých dat. Nakonec by si člověk musel napsat vlastní parser a generátor.

Našlo by se toho víc, ale jako příklad to snad stačí.
Takže veškerý dluh je absence komentářů. To vám brzo došly argumenty. Pokud požadujete komentáře, použijte JSON5.

A co ty jmenné prostory a chybějící infrastruktura? Já vím, JSON je nemá, protože je nepotřebuje...

pako

Re:Atributy v XML
« Odpověď #32 kdy: 11. 07. 2018, 12:04:36 »
Stačilo jen napsat "miluji XML". Zbytek je jen směs žvástů, polopravd a nesmyslů.

No já bych to viděl obráceně...

Co mně na JSONu chybí nejvíc je nějaký standardní query language (na způsob Xpath)... transformace (ala XSLT) by se také nejednou hodně hodily.

JSH

Re:Atributy v XML
« Odpověď #33 kdy: 11. 07. 2018, 12:12:07 »
Já vím, JSON je nemá, protože je nepotřebuje...
No ano. JSON se ujal právě proto, že je jednoduchý. XML je na většinu problémů zbytečně překombinovaná parní mlátička.

Jmenné prostory, transformační a dotazovací jazyky a podobně jsou celkem zbytečné, pokud potřebuju serializovat nebo deserializovat nějakou relativně jednoduchou datovou strukturu.

Kit

Re:Atributy v XML
« Odpověď #34 kdy: 11. 07. 2018, 12:51:06 »
Já vím, JSON je nemá, protože je nepotřebuje...
No ano. JSON se ujal právě proto, že je jednoduchý. XML je na většinu problémů zbytečně překombinovaná parní mlátička.

Jmenné prostory, transformační a dotazovací jazyky a podobně jsou celkem zbytečné, pokud potřebuju serializovat nebo deserializovat nějakou relativně jednoduchou datovou strukturu.

XML se sá používat stejně jednoduchým způsobem jako JSON. Tedy bez jmenných prostorů, transformačních a dotazovacích jazyků. Pokud se z jednoduché datové struktury časem stane složitější, tak s tím nená problém. Dokonce ani není problém se specifikací a zveřejněním takové datové struktury pro potřebu výměny dat mezi subjekty. Vše je standardizováno, není povinné ani složité to použít.

Když se vrátím k příkladu na začátku, tak v JSONu by to mohlo vypadat asi takto:
Kód: [Vybrat]
{
  "pluginRepository": {
    "id": "snapshot-repo1.php-maven.org",
    "name": "PHP-Maven 2 Snapshot Repository",
    "url": "http://repos.php-maven.org/snapshots",
    "releases": {
        "enabled": "false"
    },
    "snapshots": {
        "enabled": "true"
    }
  }
}

Vypadá to možná trochu lépe, ale jen do doby, než přidám třeba druhé URL. Parser JSON musí v tom případě počítat s oběma variantami, zatímco parseru XML by to bylo jedno. Se svým zjednodušeným řešením XML bych samozřejmě také narazil.


JSH

Re:Atributy v XML
« Odpověď #35 kdy: 11. 07. 2018, 13:24:15 »
Vypadá to možná trochu lépe, ale jen do doby, než přidám třeba druhé URL. Parser JSON musí v tom případě počítat s oběma variantami, zatímco parseru XML by to bylo jedno. Se svým zjednodušeným řešením XML bych samozřejmě také narazil.
Parser jsonu ale nenarazí. Respektive narazí úplně stejně jako ten xml. Pokud jedno url nahradím seznamem url, tak každý parser (který znám) vrátí správný DOM objekt pro seznam. Stejně jako u xml si na tom vyláme zuby až kód, který zpracovává ten DOM.

Re:Atributy v XML
« Odpověď #36 kdy: 11. 07. 2018, 14:11:55 »
Jmenné prostory, transformační a dotazovací jazyky a podobně jsou celkem zbytečné, pokud potřebuju serializovat nebo deserializovat nějakou relativně jednoduchou datovou strukturu.
Jenže to je šetření na špatném místě. Třeba transformační a dotazovací jazyky mne nic nestojí, jsou vedle původního standardu a když nechci, vůbec je používat nemusím. Jenže i když chci serializovat nebo deserializovat jednoduchou datovou strukturu, jakmile opustím školní příklady, zjistím, že bych strukturu serializovanou jedním způsobem potřeboval deserializovat jinde, kde se očekává mírně odlišný formát, nebo potřebuju někde jenom ručně ověřit, kolik tam je vlastně položek atd. A najednou se mi hodí, že ty transformační a dotazovací jazyky mám po ruce a můžu je hned použít.

Ona ostatně není náhoda, že i pro JSON dotazovací jazyky existují, a myslím, že je snaha vytvořit i nějaký transformační jazyk. Takže všechno, co je na XML údajně zbytečné, se k JSONu postupně doplňuje. Akorát je trochu smutné, že JSON je vlastně takové „XML znovu a hůře“.

.

Re:Atributy v XML
« Odpověď #37 kdy: 11. 07. 2018, 14:46:58 »
viz třeba:
"čeština se v tom nedá čít" ... string - any unicode character except " and \

Zajímavé je, že když jsem napsal do JSONu český text, tak mi to parser odmítl.
Mlčeti zlato. Těžko říct, co za sračku používáte. Asi PHP.
Třeba se poučíte zde: https://stackoverflow.com/questions/7381900/php-decoding-and-encoding-json-with-unicode-characters
Je to více než 6 let staré.

JSH

Re:Atributy v XML
« Odpověď #38 kdy: 11. 07. 2018, 15:01:28 »
Jenže to je šetření na špatném místě.
Co je a není šetření na špatném místě dost závisí na kontextu.
Citace
Třeba transformační a dotazovací jazyky mne nic nestojí, jsou vedle původního standardu a když nechci, vůbec je používat nemusím.
Ale stojí. Ta cena je rozpuštěná v celkové nešikovnosti a ukecanosti xml. A taky třeba ve velikosti knihoven, které jsou na to xml potřeba.
Citace
Jenže i když chci serializovat nebo deserializovat jednoduchou datovou strukturu, jakmile opustím školní příklady, zjistím, že bych strukturu serializovanou jedním způsobem potřeboval deserializovat jinde, kde se očekává mírně odlišný formát, nebo potřebuju někde jenom ručně ověřit, kolik tam je vlastně položek atd. A najednou se mi hodí, že ty transformační a dotazovací jazyky mám po ruce a můžu je hned použít.
Jak jsem psal, záleží na kontextu. V práci nedělám školní příklady, ale nic ze zmíněného jsem za poslední roky nepotřeboval. I kdyby to bylo úplně zadarmo, tak je mi to k ničemu.
Citace
Ona ostatně není náhoda, že i pro JSON dotazovací jazyky existují, a myslím, že je snaha vytvořit i nějaký transformační jazyk. Takže všechno, co je na XML údajně zbytečné, se k JSONu postupně doplňuje. Akorát je trochu smutné, že JSON je vlastně takové „XML znovu a hůře“.
Ono to není "XML znovu a hůře". Ono je to "něco jako XML s dost odlišnými kompromisy". A ujalo se právě proto, že ve spoustě případů jsou výhody xml bezcenné a zůstává jen lehký ale všudypřítomný opruz. A že se občas ukáže, že byly počáteční analýzy mimo, je bohužel smutná realita vývoje.

Re:Atributy v XML
« Odpověď #39 kdy: 11. 07. 2018, 15:50:59 »
Ta cena je rozpuštěná v celkové nešikovnosti a ukecanosti xml.
Jak už bylo napsáno, XML není ukecané.

A taky třeba ve velikosti knihoven, které jsou na to xml potřeba.
Nikoli. Pro transformace nebo dotazování jsou jiné knihovny, než pro parsování XML. Složitost XML parserů je způsobená DTD a uživatelskými entitami, které stejně nikdo nepoužívá. Takže by úplně stačilo vydat standard XML 1.2, který tohle vyhodí, kodifikovalo by se tak to, jak se XML reálně používá, a nemuseli se vymýšlet hlouposti jako JSON.

Jak jsem psal, záleží na kontextu. V práci nedělám školní příklady, ale nic ze zmíněného jsem za poslední roky nepotřeboval. I kdyby to bylo úplně zadarmo, tak je mi to k ničemu.
Já to potřebuji tak v polovině případů práce s JSON. Spíš bych řekl, že vás ani nenapadlo, že byste mohl něco takového potřebovat. Že byste třeba informace z JSON souboru mohl získat jednoduchým dotazem, než abyste něco zjišťoval ručně.

Ono to není "XML znovu a hůře".
Bohužel je. Opravdu špatně je na XML jen zmiňované DTD spolu s uživatelskými entitami, a odpůrci XML ani netuší, že něco takového existuje, takže to nemohou kritizovat. Jinak se do JSONu postupně doplňuje vše, co už XML dávno má – pokud je to možné. A když to není možné, jako ty komentáře, začne se vymýšlet nějaký JSON5.

Ono je to "něco jako XML s dost odlišnými kompromisy".
Mohl byste nějaký z těch odlišných kompromisů popsat? Zajímala by mne jediná výhoda JSONu oproti XML. Jaká je výhoda absence komentářů? Jaká je výhoda toho, že se teprve po letech doplňují jazyky pro schémata nebo dotazování, přičemž stále nejsou běžnou součástí nástrojů pro JSON? Jaká je výhoda absence jmenných prostorů?

A ujalo se právě proto, že ve spoustě případů jsou výhody xml bezcenné a zůstává jen lehký ale všudypřítomný opruz.
Pokaždé, když dělám s JSONem, připadám si, jak kdyby mi chyběly obě ruce. Pro někoho, kdo se narodil už bez rukou, mohou opravdu ruce připadat bezcenné. Ale není to tak. A ten „lehký ale všudypřítomný opruz“ je co přesně? Že vám editor musí doplnit název koncového tagu, a XML se pak mnohem lépe čte?

A že se občas ukáže, že byly počáteční analýzy mimo, je bohužel smutná realita vývoje.
Smutná realita v tomto případě je, že jsme tu měli docela dobře fungující XML s ekosystémem, který se dále zlepšoval, a místo toho, aby se odpárala ta jedna nepoužívaná ošklivá vlastnost XML, přišlo se s novým formátem, který měl být údajně jednodušší, ale ve skutečnosti je až tak jednoduchý, až je hloupý. A teď se u tohoto nového formátu s patnáctiletým zpožděním opakuje vynalézání toho, co se vynalezlo u XML. Se stejnými chybami jako u XML a navíc na horším podvozku.

Mimochodem, je zajímavé, že přesně to, co JSON vytýká XML, začali někteří vytýkat JSONu a vytvořili YAML. Nadějné je akorát to, že ty formáty jako JSON a YAML vznikají stále častěji a vzájemně se tlučou, zatímco XML vedle nich stabilně trvá. A má slušné XSD na definici schémat, výborné XSLT 3.0 na transformace, zatím nedoceněné XQuery na dotazování…

Re:Atributy v XML
« Odpověď #40 kdy: 11. 07. 2018, 16:42:13 »

Kdyz si nasadim javove bryle tak asi i souhlasim.
Ale nekdo kdo dela v javasciptu muze mit jiny nazor(na co parsery, dotazovani, knihovny... kdyz je to prece rovnou objekt )

Jinak samozrejme cokoliv jineho nez edn nema smysl  ;)

Kit

Re:Atributy v XML
« Odpověď #41 kdy: 11. 07. 2018, 17:03:33 »
Kdyz si nasadim javove bryle tak asi i souhlasim.
Ale nekdo kdo dela v javasciptu muze mit jiny nazor(na co parsery, dotazovani, knihovny... kdyz je to prece rovnou objekt )
Jinak samozrejme cokoliv jineho nez edn nema smysl  ;)

JSON má velký význam pro Javascript, to tady nikdo nepopírá. Ovšem jako obecný formát pro výměnu dat je použitelný jen s obtížemi. XML je naproti tomu možné použít, kdykoli chci někomu poslat nějaká strukturovaná data. Proto je také mnohem rozšířenější.

Re:Atributy v XML
« Odpověď #42 kdy: 11. 07. 2018, 17:08:25 »
Ale nekdo kdo dela v javasciptu muze mit jiny nazor(na co parsery, dotazovani, knihovny... kdyz je to prece rovnou objekt )
Že je to „přece rovnou objekt“ je obrovská bezpečnostní díra a snad už to tak nikdo nepoužívá. I v tom JavaScriptu bylo potřeba napsat na JSON parser – a mimochodem prohlížeče měly z JavaScriptu dostupný XML parser dříve než JSON parser. Že je teď v prohlížečích podpora pro JSON lepší než podpora XML je pravda, ale kvůli tomu nebylo potřeba vytvářet nový formát. Ale je pravda, že zrovna webový svět nenávidí XML opravdu fest a neváhá kvůli tomu dělat některé pitomosti i opakovaně. Takže HTML5 musí mít samozřejmě svou vlastní serializaci, která je hodně podobná XML, ale XML to není. A aby dokázali, že jmenné prostory fakt nepotřebují, vymysleli nejdřív data-atributy, potom vložení SVG a MathML přímo do HTML5 standardu, a nejnověji webové komponenty. Ale ng- je určitě aspoň o 376 % lepší zápis než ng:.

Kit

Re:Atributy v XML
« Odpověď #43 kdy: 11. 07. 2018, 17:16:52 »
I v tom JavaScriptu bylo potřeba napsat na JSON parser – a mimochodem prohlížeče měly z JavaScriptu dostupný XML parser dříve než JSON parser.

Proto také nepoužíváme zkratku AJAJ, ale AJAX.

Re:Atributy v XML
« Odpověď #44 kdy: 11. 07. 2018, 18:04:21 »
Ale nekdo kdo dela v javasciptu muze mit jiny nazor(na co parsery, dotazovani, knihovny... kdyz je to prece rovnou objekt )
Že je to „přece rovnou objekt“ je obrovská bezpečnostní díra a snad už to tak nikdo nepoužívá. I v tom JavaScriptu bylo potřeba napsat na JSON parser – a mimochodem prohlížeče měly z JavaScriptu dostupný XML parser dříve než JSON parser. Že je teď v prohlížečích podpora pro JSON lepší než podpora XML je pravda, ale kvůli tomu nebylo potřeba vytvářet nový formát. Ale je pravda, že zrovna webový svět nenávidí XML opravdu fest a neváhá kvůli tomu dělat některé pitomosti i opakovaně. Takže HTML5 musí mít samozřejmě svou vlastní serializaci, která je hodně podobná XML, ale XML to není. A aby dokázali, že jmenné prostory fakt nepotřebují, vymysleli nejdřív data-atributy, potom vložení SVG a MathML přímo do HTML5 standardu, a nejnověji webové komponenty. Ale ng- je určitě aspoň o 376 % lepší zápis než ng:.
Ten JSON parser je ale prece sanity check + eval.
A kdy meli prohlizece podporu eval?