Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

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

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ě.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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.

davame_internetu_obsah
       

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í.

Školení: Linux – Firemní server

Na třídenním školení se naučíte nainstalovat a spravovat kompletní linuxový server do Vaší firmy se všemi základními službami, které potřebujete pro provoz Vaší sítě, firemních emailů a webových stránek.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,06

Přehled názorů

Spis souhlasim s Timem
Daniel Smolik 27. 3. 2003 00:39
Nový
├ 
Re: Spis souhlasim s Timem
Petr Mach 27. 3. 2003 09:10
Nový
│
├ 
Konfigurak v XML
Tomas Tintera 27. 3. 2003 10:20
Nový
│
│
└ 
Re: Konfigurak v XML
Karel Ludanek 27. 3. 2003 10:32
Nový
│
│
 
└ 
Re: Konfigurak v XML
Tom23 27. 3. 2003 12:59
Nový
│
│
 
 
└ 
Re: Konfigurak v XML
stuff 27. 3. 2003 15:28
Nový
│
├ 
Konfigurak v XML
Tomas Tintera 27. 3. 2003 11:16
Nový
│
└ 
Konfiguraky v XML
Jan Molic 27. 3. 2003 12:14
Nový
│
 
├ 
Re: Konfiguraky v XML
Yeti 27. 3. 2003 18:41
Nový
│
 
└ 
Re: Konfiguraky v XML
gmmns 28. 3. 2003 17:12
Nový
├ 
Re: Spis souhlasim s Timem
kmotr 27. 3. 2003 10:33
Nový
└ 
Re: Spis souhlasim s Timem
[e] 27. 3. 2003 10:48
Nový
 
└ 
Re: Spis souhlasim s Timem
Jan Koutnik 27. 3. 2003 18:45
Nový
XML je dobrá věc, když se umí používat
Milan Berka 27. 3. 2003 07:19
Nový
Parsovani XML
Jiri Kubicek 27. 3. 2003 07:33
Nový
├ 
Re: Parsovani XML
Jirka Kosek 27. 3. 2003 08:56
Nový
├ 
Re: Parsovani XML
Jirka Kosek 27. 3. 2003 08:56
Nový
└ 
Re: Parsovani XML
Jirka Kosek 27. 3. 2003 08:56
Nový
 
└ 
Re: Parsovani XML
zoul 27. 3. 2003 14:47
Nový
 
 
└ 
Re: Parsovani XML
Jirka Kosek 27. 3. 2003 21:11
Nový
Does XML Suck?
oozy 27. 3. 2003 09:19
Nový
Parser
mirza 27. 3. 2003 10:00
Nový
PyRXP
Klokan 27. 3. 2003 12:42
Nový
API or storage
Karel Zak 27. 3. 2003 13:05
Nový
├ 
Re: API or storage
Yeti 27. 3. 2003 18:51
Nový
└ 
Re: API or storage
Michal Kratky 28. 3. 2003 13:39
Nový
 
├ 
Re: API or storage
Karel Ludanek 28. 3. 2003 14:36
Nový
 
│
└ 
Re: API or storage
Michal Kratky 28. 3. 2003 20:04
Nový
 
│
 
└ 
Re: API or storage
Karel Ludanek 31. 3. 2003 09:58
Nový
 
│
 
 
└ 
Re: API or storage
Jirka Pech 7. 4. 2003 03:48
Nový
 
│
 
 
 
└ 
Re: API or storage
Karel Ludanek 8. 4. 2003 14:43
Nový
 
└ 
Re: API or storage
Milan Zamazal 29. 3. 2003 10:22
Nový
 
 
└ 
Re: API or storage
Michal Kratky 29. 3. 2003 11:06
Nový
konfiguraky v XML
binary_runner 28. 3. 2003 09:52
Nový
├ 
Re: konfiguraky v XML
Karel Ludanek 28. 3. 2003 14:47
Nový
│
└ 
Re: konfiguraky v XML
Jezovec 28. 3. 2003 15:10
Nový
│
 
└ 
Re: konfiguraky v XML
Karel Ludanek 31. 3. 2003 10:07
Nový
└ 
Re: konfiguraky v XML
Milan Zamazal 29. 3. 2003 10:37
Nový
 
└ 
Re: konfiguraky v XML
Jirka Kosek 29. 3. 2003 13:48
Nový
 
 
├ 
Re: konfiguraky v XML
Vita 30. 3. 2003 12:58
Nový
 
 
└ 
Re: konfiguraky v XML
Milan Zamazal 31. 3. 2003 14:10
Nový
XML je pro configy nepouzitelne
JoHnY 28. 3. 2003 15:50
Nový
└ 
Re: XML je pro configy nepouzitelne
pepik 29. 3. 2003 21:31
Nový
XML Office
optik 28. 3. 2003 21:07
Nový
└ 
Re: XML Office
Vita 30. 3. 2003 13:01
Nový
XML a použití
Miloslav Ponkrác 30. 3. 2003 13:40
Nový
└ 
Re: XML a použití
Karel Ludanek 31. 3. 2003 14:44
Nový
XML - nástroj pro generování kódu
pavel 19. 4. 2003 23:37
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem