Karel Ludanek
20. 4. 2001 • 19:54

W3C organizace mi názorově připomíná pejska a kočičku kterak vařili dort. Tu todle, tu tamto a dohromady pěknej sranec. XML je velmi dobrá myšlenka, ale věci okolo - XPath, XSLT, Schemata (ty zvláště) se moc nepovedly. K jejich kvalitám též patří XML implementace v Javě.

Jirka Kosek
20. 4. 2001 • 19:54

A co se podle vás na XPath a XSLT nepovedlo?

Jinak nevím s jakými implementacemi XML parserů a XSLT procesorů máte v Javě zkušenosti, ale z mé zkušenosti jsou javové implementace většinou mnohem dále než odpovídající implementace v C/C++.

Karel Ludánek
20. 4. 2001 • 19:54

XSLT má problémy s výběrem množiny podle množiny, ekvivalent SQL: SELECT * FROM xxx WHERE yyy NOT IN ZZZ, toto je nutné řesit kombinovanou podmínkou A neni v B a současně B existuje, jinak ber B, je to nepříjemné zvláště při výběrech z více množin. Implementace v Javě konkrétně od W3C je strašná !!! Vzhledem k tomu, že W3C standard utváří a není přitom schopen zajistit nejmocnější část XML a to selectSingleNode a selectNodes? To je podle Vás mnohem dál než implementace od MS? Ta je podle mého s XML zdaleka nejdál. Pokud použijete Xalan a Xerces XML parsery, tak jeden z nich umí XSLT transformace, přičemž občas se ani neobtěžuje říci že je někde chyba a rovnou chcípne na NullException. Neumí ani podporovat jinou kódovou stránku než ISO 8859-1 a ostatní je nutné konvertovat. Tomu neříkám zdařilý pokus, tomu říkám darebáctví a šlendrián. Tak.

Jirka Kosek
20. 4. 2001 • 19:54

Množinové operace s uzly v XSLT 1.0 skutečně chybí, plánují se do dalších verzí a mnohé procesory dnes již jejich podporu nabízejí. XSLT nebyl plánován jako dotazovací jazyk, ale transofrmační - to se v mnohém překrývá, v mnohém zase ne. Svým pojetím a možnostmi je SQL mnohem blíže dotazovací jazyk XQuery.


Nevím jakou implementaci od W3C máte na mysli, já osobně žádnou neznám. Možná myslíte XT od Jamese Clarka, který je autorem specifikace XSLT a na XT průběžně testoval, zda je možné vůbec standard implementovat. XT se však již téměř rok a půl nevyvíjí, takže nemá cenu jej srovnávat s jinými programy. Pokud chcete nějaký XSLT procesor v Javě, zkuste porovnávat vaši technologii se Saxonem. Po pravdě řečeno, kam se na něj MSXML svými schopnostmi hrabe.

Ve svém příspěvku mísíte mnoho věcí dohromady a je to celkem pochopitelné, protože MS to ve své knihovně MSXML také namíchal. Metody selectSingleNode a selectNodes jsou nestandardním rozšířením DOM od MS. Jsou velice užitečné, o tom nikdo nepochybuje, Microsoftu také nikdo nebrání, aby se pokusil prosadit toto rozšíření do nějaké příští verze DOMu. V poslední době také vznikají diskuse o vytvoření speciálního XPath API, které by podobné věci standardizovalo.

Na první pohled je možná výhodné, že MSXML obsahuje poměrně pěkně provázaný XML parser, XSLT procesor a jednoduchý XPath engine. Vazby mezi jednotlivými částmi MSXML jsou však výmysl MS a s ničím jiným je nemůžete použít. Oproti tomu v Javě existuje rozhraní JAXP, které definuje standardní postupy pro vytváření instancí DOM a SAX parserů a XSLT procesorů. Samozřejmě, že vstupem a výstupem XSLT procesoru mohou být DOM stromy nebo SAX události. Tím, že je rozhraní standardní, můžete použít libovolné parsery a XSLT procesory. Pokud se vám jeden znelíbí, zkrátka použijete jiný. Snadnost použití je přitom na úrovni srovnatelné s MSXML.

Xerces je pouze XML parser, není důvod proč by měl umět transformace, na to se používá XSLT procesor. Nevím, jakou verzi Xercesu máte vy, ale dostupná kódování většinou kopírují možnosti vaší JVM. Kromě Xercesu se hodně používá i Crimson parser přímo od Sunu, který v mé JVM podporuje okolo 150 různých kódování včetně iso-8859-2 a windows-1250.

Výhodou většiny XSLT procesorů v Javě je možnost změny používaného XML parseru. Já například používám XSLT procesor Saxon, ale jako parser pro něm mám nastavený Crimson, který zvládá spoustu kódování a jde rozšířit o podporu katalogových souborů.

Možná by nebylo špatné rozlišovat standardy W3C od jejich implementace. Sebelepší standard lze naimplementovat dobře i špatně. To, že je jeden program špatný, ještě neznamená, že celá myšlenka je špatná.

Určitě si přečtěte

Články odjinud