XML je téměř vždy zneužito

XML je téměř vždy zneužito
Jazyk XML byl vynalezen v roce 1996. Sotva se objevil, už začaly být možnosti jeho uplatnění špatně chápány a pro účely, kterým se ho snažili přizpůsobit, to nebyla nejlepší volba.

Bez nadsázky lze říci, že drtivá většina schémat XML, která jsem viděl, byla nevhodná nebo nesprávná použití XML. Navíc toto použití XML prokázalo zásadní nepochopení toho, o čem XML je.

XML je značkovací jazyk. Toto není datový formát. Většina schémat XML tento rozdíl výslovně přehlédla a zaměňovala XML s datovým formátem, což nakonec vede k chybě při výběru XML, protože je to datový formát, který je skutečně potřeba.

Aniž bychom zacházeli do přílišných podrobností, XML je nejvhodnější pro anotování bloků textu strukturou a metadaty. Pokud vaším hlavním cílem není pracovat s blokem textu, volba XML pravděpodobně nebude opodstatněná.

Z tohoto pohledu existuje jednoduchý způsob, jak zkontrolovat, jak dobře je XML schéma vytvořeno. Vezměme si jako příklad dokument v zamýšleném schématu a odstraňte z něj všechny tagy a atributy. Pokud to, co zbylo, nedává smysl (nebo pokud zbývá prázdný řádek), pak buď vaše schéma není správně sestaveno, nebo jste jednoduše neměli používat XML.

Níže uvedu některé z nejčastějších příkladů nesprávně konstruovaných obvodů.

<roоt>
  <item name="name" value="John" />
  <item name="city" value="London" />
</roоt>

Zde vidíme příklad nepodloženého a podivného (i když velmi častého) pokusu vyjádřit jednoduchý slovník klíč-hodnota v XML. Pokud odstraníte všechny značky a atributy, zůstane vám prázdný řádek. V podstatě je tento dokument, bez ohledu na to, jak absurdní to může znít, sémantickou anotací prázdného řádku.

<root name="John" city="London" />

Aby toho nebylo málo, nemáme zde jen sémantickou anotaci prázdného řetězce jako extravagantní způsob vyjádření slovníku – tentokrát je „slovník“ přímo zakódován jako atributy kořenového prvku. Díky tomu je daná sada názvů atributů na prvku nedefinovaná a dynamická. Navíc to ukazuje, že vše, co autor skutečně chtěl vyjádřit, byla jednoduchá syntaxe klíč-hodnota, ale místo toho udělal naprosto bizarní rozhodnutí použít XML, když si vynutil použití jediného prázdného prvku jednoduše jako předponu k použití syntaxe atributu. A s takovými schématy se setkávám velmi často.

<roоt>
  <item key="name">John</item>
  <item key="city">London</item>
</roоt>

To je něco lepšího, ale teď z nějakého důvodu jsou klíče metadata a hodnoty ne. Velmi zvláštní pohled na slovníky. Pokud odstraníte všechny značky a atributy, polovina informací bude ztracena.

Správný slovníkový výraz v XML by vypadal asi takto:

<roоt>
  <item>
    <key>Name</key>
    <value>John</value>
  </item>
  <item>
    <key>City</key>
    <value>London</value>
  </item>
</roоt>

Ale pokud se lidé rozhodli použít XML jako datový formát a poté jej použít k uspořádání slovní zásoby, pak by měli pochopit, že to, co dělají, je nevhodné a nepohodlné. Je také běžné, že návrháři omylem zvolí XML k vytvoření svých aplikací. Ještě častěji ale situaci zhoršují nesmyslným používáním XML v jedné z výše popsaných forem, přičemž ignorují fakt, že XML se k tomu prostě nehodí.

Nejhorší schéma XML? Mimochodem, cena za nejhorší schéma XML, jaké jsem kdy viděl, Získá formát konfiguračního souboru automatického zřizování pro telefony IP telefonie Polycom. Takové soubory vyžadují stahování souborů požadavků XML přes TFTP, což... Obecně platí, že zde je výňatek z jednoho takového souboru:

<softkey
        softkey.feature.directories="0"
        softkey.feature.buddies="0"
        softkey.feature.forward="0"
        softkey.feature.meetnow="0"
        softkey.feature.redial="1"
        softkey.feature.search="1"

        softkey.1.enable="1"
        softkey.1.use.idle="1"
        softkey.1.label="Foo"
        softkey.1.insert="1"
        softkey.1.action="..."

        softkey.2.enable="1"
        softkey.2.use.idle="1"
        softkey.2.label="Bar"
        softkey.2.insert="2"
        softkey.2.action="..." />

To není něčí špatný vtip. A to není můj vynález:

  • prvky se jednoduše používají jako předpona pro připojení atributů, které samy o sobě mají hierarchická jména.
  • Pokud chcete přiřadit hodnoty více instancím určitého typu záznamu, musíte k tomu použít názvy atributů. které mají indexy.
  • Navíc atributy začínající na softkey., musí být umístěn na prvky <softkey/>, atributy začínající na feature., musí být umístěn na prvky <feature/> atd., nehledě na to, že to vypadá naprosto zbytečně a na první pohled nesmyslně.
  • A konečně, pokud byste doufali, že první složka názvu atributu bude vždy stejná jako název prvku – nic takového! Například atributy up. musí být připojen k <userpreferences/>. Pořadí připojování jmen atributů k prvkům je libovolné, téměř úplně.

Dokumenty nebo data. Občas někdo udělá něco úplně divného, ​​když se pokusí porovnat XML a JSON – a tím ukáže, že ani jednomu nerozumí. XML je značkovací jazyk pro dokumenty. JSON je formát strukturovaných dat, takže jejich vzájemné porovnávání je jako snažit se porovnávat teplý s měkkým.

Koncept rozdílu mezi dokumenty a data. Jako analog XML můžeme podmíněně vzít strojově čitelný dokument. Přestože má být strojově čitelný, odkazuje metaforicky na dokumenty a z tohoto pohledu je vlastně srovnatelný s PDF dokumenty, které většinou strojově čitelné nejsou.

Například v XML záleží na pořadí prvků. Ale v JSON je pořadí párů klíč-hodnota v objektech nesmyslné a nedefinované. Pokud chcete získat neuspořádaný slovník párů klíč–hodnota, nezáleží na skutečném pořadí, ve kterém se prvky v daném souboru objevují. Z těchto dat však můžete vytvořit mnoho různých typů dat. dokumentů, protože v dokumentu je určitý řád. Metaforicky je to obdoba dokumentu na papíře, i když na rozdíl od výtisku nebo souboru PDF nemá fyzické rozměry.

Můj příklad správné reprezentace slovníku XML ukazuje pořadí prvků ve slovníku, na rozdíl od reprezentace JSON. Toto pořadí nemohu ignorovat: tato linearita je vlastní modelu dokumentu a formátu XML. Někteří se mohou rozhodnout ignorovat pořadí při interpretaci tohoto dokumentu XML, ale nemá smysl se o tom dohadovat, protože problém přesahuje rámec diskuse o formátu samotném. Navíc, pokud dokument zpřístupníte v prohlížeči tím, že k němu připojíte kaskádový styl, uvidíte, že se prvky slovníku objeví v určitém pořadí a v žádném jiném.

Jinými slovy, slovník (část strukturovaných dat) lze převést na n různé možné dokumenty (v XML, PDF, papír atd.), kde n - počet možných kombinací prvků ve slovníku a další možné proměnné jsme zatím nezohlednili.

Z toho však také plyne, že pokud chcete přenášet pouze data, pak použití strojově čitelného dokumentu k tomu nebude efektivní. Používá model, který je v tomto případě nadbytečný, bude jen překážet. Navíc, abyste mohli extrahovat zdrojová data, budete muset napsat program. Téměř nemá smysl používat XML pro něco, co nebude v určitém okamžiku naformátováno jako dokument (řekněme pomocí CSS nebo XSLT nebo obojího), protože to je hlavní (ne-li jediný) důvod, proč tak učinit. na model dokumentu.

Navíc, protože XML nemá žádnou koncepci čísel (nebo booleovské výrazy nebo jiné datové typy), všechna čísla reprezentovaná v tomto formátu jsou považována pouze za doplňkový text. Pro extrakci dat musí být známé schéma a jeho vztah k odpovídajícím vyjádřeným datům. Musíte také vědět, kdy na základě kontextu určitý textový prvek představuje číslo a měl by být převeden na číslo atd.

Proces extrakce dat z XML dokumentů se tedy až tak neliší od procesu rozpoznávání naskenovaných dokumentů obsahujících např. tabulky tvořící mnoho stran číselných údajů. Ano, v zásadě je to možné, ale není to nejoptimálnější způsob, s výjimkou krajního řešení, kdy neexistují absolutně žádné jiné možnosti. Rozumným řešením je jednoduše najít digitální kopii původních dat, která není vložena do modelu dokumentu, který kombinuje data s jejich specifickou textovou reprezentací.

To znamená, že mě vůbec nepřekvapuje, že XML je v podnikání populární. Důvodem je právě to, že formát dokumentu (na papíře) je pro podniky srozumitelný a známý a chtějí i nadále používat známý a srozumitelný model. Ze stejného důvodu podniky příliš často používají dokumenty PDF místo strojově čitelnějších formátů – protože jsou stále svázány s konceptem tištěné stránky se specifickou fyzickou velikostí. To platí i pro dokumenty, které pravděpodobně nebudou nikdy vytištěny (například 8000stránkový soubor PDF dokumentace registru). Z tohoto pohledu je použití XML v podnikání v podstatě projevem skeuomorfismu. Lidé chápou metaforickou myšlenku tištěné stránky omezené velikosti a chápou, jak vytvářet obchodní procesy založené na tištěných dokumentech. Pokud je to váš průvodce, dokumenty bez omezení fyzické velikosti, které jsou strojově čitelné – dokumenty XML – představují inovaci a zároveň představují známý a pohodlný protějšek dokumentů. To jim nebrání zůstat nesprávným a příliš skeuomorfním způsobem prezentace dat.

K dnešnímu dni jediná schémata XML, o kterých vím a která mohu skutečně označit za platné použití formátu, jsou XHTML a DocBook.

Zdroj: www.habr.com

Přidat komentář