Hlavní navigace

Příliš obtížné XML?

Petr Cimprich 27. 3. 2003

V minulém týdnu upoutal pozornost uživatelů XML esej, ve kterém se tvrdí, že práce s tímto formátem je pro programátory příliš složitá a neefektivní. Na tom by nebylo nic tak zvláštního, kdyby autorem nebyl Tim Bray, jeden z tvůrců formátu XML, těšící se mezi příznivci špičatých závorek nemalé autoritě.

Bray píše (XML Is Too Hard For Programmers), že jeho současné programátorské zkušenosti s XML jsou značně neuspokojivé. Zpracování libovolného dokumentu je podle něho frustrující, časově náročné a náchylné ke vzniku chyb. Procesory XML je prý jednodušší napsat než používat k denní práci. (Tady by autoři procesorů s Timem asi nesouhlasili, a to zejména kvůli DTD a systému entit, které Tim s kolegy převzali ze SGML, ale můžeme to asi chápat jako uměleckou nadsázku.) Načítání celého dokumenu do paměti kvůli použití několika málo údajů je nepraktické, ne-li hloupé, zatímco práce se zpětně volanými funkcemi je rovnou nemotorná. Aby se vyhnul těmto ošklivostem, řeší Bray, podle vlatních slov, načítání údajů z dokumentů často pomocí regulárních výrazů.

Článek vyvolal celou řadu reakcí, souhlasných i nesouhlasných. Diskusi vedenou v hlavním komunikačním kanálu vývojářů XML, diskusní skupině XML-DEV, shrnuje ve svém sloupku na XML.com Kendall Grant Clark (An XML Hero Reconsiders?). Další reakce jsou k vidění například v archivech skupinXML-DEV a PERL-XML.

Tim Bray má bohužel ke svým stížnostem dobré důvody. Nejznámější a nejpoužívanější rozhraní pro práci s XML, tedy DOM a SAX, příliš programátorského komfortu neposkytují. Elementární úloha, jakou je načtení údajů ze souboru, je pro programátora zhýčkaného současnými objektovými nebo skriptovacími jazyky automatickou trivialitou. Přinejmenším pokud svá data uloží jako řádkově orientovaný soubor s oddělovači. Pokud se programátor rozhodne jít s dobou a vsadí na XML, bude ho načtení stát trochu víc úsilí. Kdyby měl kvůli načtení každého souboru opravdu napsat a odladit aplikaci komunikující důsledně přes DOM nebo SAX, klesne produktivita jeho práce na úroveň západoevropského zemědělce (ovšem bez dotací). Naštěstí tady ale není jen DOM a SAX.

Mnohem přívětivější tvář uživatelům ukazuje XPath A XSLT. Ne vždy se zpracování dokumentu dá zařídit transformací, ale navigace pomocí výrazů XPath je k dispozici také u všech lepších procesorů DOM. Načtení sady uzlů způsobem

$xml = $parser->parse(URI);
$nodeset = $xml->get_nodes(XPath);

už vypadá celkem elegantně. XML je hierarchicky strukturovaný formát, proto nikdo nemůže očekávat, že jej načte stejně snadno jako formát předjímající tabulkovou strukturu. Výhodou XML je, že dokáže pojmout i nepravidelná a částečně strukturovaná data. Pro pravidelná, relační data nemusí být XML za každou cenu ta nejlepší volba. Pokud jsou taková data ještě navíc hodně rozsáhlá, určitě jim bude lépe v obyčejné relační databázi.

Ale zpět k datům, která už máme v XML. Slabinou přístupu DOM+XPath je stále ještě nutnost načtení celého dokumentu do paměti. Analogický přístup, který by ale byl založen na proudovém zpracování, jež může být hned po nalezení požadovaných uzlů ukončeno, by asi byl tím, co potřebujeme. Co tomu brání? Nic zásadního. Pokusy v tomto směru existují, ale zatím se žádný z nich neposadil v širším měřítku. Chybí obecně akceptované proudové rozhraní typu „pull“ (které by umožnilo po nalezení uzlu ukončit činnost parseru), stejně jako standardní jednoprůchodový výrazový jazyk (pro lokalizaci uzlů). XML je v pěti letech přece jen ještě mladá technologie a spoustu věcí má před sebou.

Tim Bray má moje sympatie, že neváhá vyslovit kritický názor v době, kdy „vizionáři“ z velkých firem hlásají světlé zítřky webových služeb a XML v každé lednici. Plně s ním souhlasím, pokud jde o neohrabanost pilotních API pro XML. Troufám si ale říct, že nebere do úvahy moderní trendy ve zpracování XML (proudové „pull“ parsery, transformace, navigační jazyky), které jsou určitě perspektivnější než procvičování regulárních výrazů. Přesto jeho kacířský postoj může být impulzem pro rychlejší rozvoj právě takovýchto technologií.

Našli jste v článku chybu?

19. 4. 2003 23:37

pavel (neregistrovaný)

Myslím, že redukovat diskusi o XML na to, zda je dobré v něm psát konfiguráky, je až komická trivializace. Uvedu příklad, kdy jsem XML ve spojení s XSLT opravdu ocenil. Potřeboval jsem v C napsat API, které by pracovalo (tj. parsovalo nebo generovalo) s několika desítkami různých a navzájem dost nepodobných hierarchicky organizovaných datových zpráv (jež nebyly ve formátu XML a byly pevně stanoveny jinou externí aplikací - jeden komunikační systém v EU), umělo je ukládat/číst do/z SQL databáze a…

8. 4. 2003 14:43

Karel Ludanek (neregistrovaný)

No, nedivil bych se kdyby tomu doslo (vzhledem k obrovsky propagaci xml) a beha mi z toho mraz po zadech.

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Na pečení je nejlepší medovicový med

Na pečení je nejlepší medovicový med