Hlavní navigace

Akta X 0404

Petr Cimprich 5. 5. 2004

Kompaktní syntaxe pro XML. Zbytečné berličky, nebo užitečné nástroje? Zřejmě jak kde a jak pro koho. V průběhu dubna se v této oblasti objevily některé nové iniciativy, jimiž jsem se nechal inspirovat při volbě tématu pro tento článek.

Kompaktní syntaxe nabízejí řešení těm, kdo chtějí používat XML, ale přitom se jim zdá příliš obtížné ručně psát špičaté závorky. Význam kompaktních syntaxí tedy má spočívat v usnadnění editace XML, zrychlení zápisu a zpřehlednění čtení. Tyto výhody jsou ze své podstaty subjektivní. Někomu přijde přehlednější to, druhému zase ono. Kompaktních syntaxí je mnoho. Mohli bychom je rozdělit na dvě skupiny. Tu první tvoří obecné, univerzálně použitelné návrhy alternativních syntaxí, ve druhé jsou syntaxe zaměřené na konkrétní aplikace XML.

Lx

Syntaxe nazvaná Lx, ohlášená před několika týdny Normanem Grayem, patří do první skupiny. Má usnadnit zápis dokumentů XML, které obsahují více značek než samotného obsahu. Krátký ukázkový dokument

<?xml version="1.0"?>
<person id="QT2">
  <given-name>Jackie</given-name>
  <surname>Brown</surname>
</person>

v Lx vypadá takto:

(lx:let
  (person id: QT2
    (given-name "Jackie")
    (surname "Brown")
  )
)

Gray svou syntaxi doporučuje například pro psaní transformací XSLT, které jsou podle něho v běžné syntaxi XML příliš ošklivé. Přiznám se, že mi při představě XSLT v Lx vstávají hrůzou vlasy na hlavě. Ke cti budiž Normanu Grayovi přičteno, že nezůstal pouze u slov, ale také vyrobil implementaci tříd SAX2, které dokáží s dokumenty Lx pracovat jako s běžnými dokumenty XML.

O Lx se nezmiňuji proto, že bych očekával jeho prosazení. Univerzálních kompaktních syntaxí existují desítky, možná stovky. Jejich autoři si většinou nenajdou čas, aby nejdříve trochu zapátrali po plodech úsilí svých předchůdců. Šance na významnější rozšíření je minimální, o standardizaci nemluvě. Když jsme u toho, existuje standardní notace zvaná ASN.1 Value Notation, která splňuje většinu požadavků kladených na alternativní kompaktní syntaxe. Tato notace však rozhodně nevznikla kvůli snadnějšímu psaní XML. ASN.1 je starší než XML a cílem mapování mezi ASN.1 a XML je propojení a sdílení výhod obou formátů.

Žádná obecná kompaktní syntaxe není příliš rozšířená. Potíž je asi v tom, že snadnější editace (měřeno počtem editovaných znaků) nestojí většině uživatelů za to, aby pracovali s další syntaxí. Někomu (například mně) se dokonce běžná syntaxe XML s redundantními koncovými značkami může zdát přehlednější. A zrychlení editace je práce pro textový editor; některé si s tímto úkolem dokážou poradit uspokojivě.

Kompaktní XUL

Ukázkou ze druhé skupiny je návrh kompaktní syntaxe pro XUL. Nejdřív ale musím trochu upřesnit, o jaký XUL se zde jedná. Definiční jazyk pro uživatelská rozhraní XUL samozřejmě patří k Mozille. Kromě toho ale zkratku XUL používá také Gerald Bauer v obecném významu aplikace XML pro popis uživatelských rozhraní (viz Open XUL Alliance). Bauer se nijak netrápí tím, že zkratka XUL už měla svůj význam. Asi to bude tím, že není zbytečně úzkoprsý. XUL z Mozilly, ale také například microsoftí XAML, považuje za pouhé dialekty svého velkého XULu. Ale zpět ke kompaktním syntaxím: Aby svůj XUL zpřístupnil i začátečníkům, kteří by se „mohli obávat komplexity XML“, navrhl Bauer hned čtyři verze kompaktní syntaxe. Inu, velkorysá povaha se nezapře. Co si o syntaktické explozi myslí chudáci „začátečníci“, se mi nepodařilo zjistit.

Příklady kompaktního XULu uvádět nebudu, jsou k vidění zde. Jednotlivé verze se vzájemně moc neliší a konec konců se tak moc neliší ani od příkladu uvedeného výše v tomto článku. Chci jen upozornit na jeden zajímavý aspekt kompaktního XULu. XUL vyjímá definice řídicích prvků ze zdrojového kódu programu a strukturované seznamy převádí na XML. Kompaktní XUL pak definice z XML vrací do podoby velmi blízké výchozímu stavu. Pokrok se prostě nedá zastavit.

Úspěšné kompaktní syntaxe

Abych si dnes jen neutahoval z tápání kolem kompaktního zápisu XML, uvedu také příklady úspěšných a používaných kompaktních syntaxí. Všechny, či přesněji řečeno oba, které mě napadají, patří do druhé skupiny syntaxí pro specifické aplikace XML.

Prvním příkladem budiž kompaktní syntaxe pro RelaxNG. Uživatelé RNG si zkrácený zápis velmi pochvalují a tvrdí, že je intuitivní a přirozený. Schémata jsou většinou psána rukou, jsou často dlouhá a opakují se v nich stále stejné prvky. To jsou dobré předpoklady pro vznik užitečné kompaktní syntaxe. Spolu s existencí kvalitních nástrojů pro převod do RNG/XML a dalších jazyků (XML Schema, DTD) mohou být základem úspěchu. Kompaktní syntaxe pro RNG je, stejně RNG/XML, specifikací konsorcia OASIS.

Jinou kompaktní syntaxí, která se potkala s poptávkou uživatelů, je RDF/N3. Zápis RDF do XML je sice robustní, ale mimořádně špatně čitelný (a psatelný). Při práci s ontologiemi, logikou a správou znalostí hraničí používání RDF/XML s masochismem. Proto se uchytila syntaxe zvaná Notation3. Při práci na projektu PerlRDF jsem měl příležitost důkladně se s RDF/N3 seznámit a zařadil jsem se do tábora příznivců této notace. Přestože je autorem syntaxe N3 Tim Berners-Lee (t. č. ředitel W3C), nechystá se zatím její standardizace, ani na ni bohužel nejsou brány ohledy při navrhování změn v RDF.

Stav XML podle Dumbilla

Nyní už nekompaktně: Na XML.com byla uveřejněna závěrečná řečEdda Dumbilla z nedávno proběhlé konference XML Europe 2004. Pokouší se o stručné shrnutí současného stavu XML. Možná vás některé postřehy a závěry zaujmou stejně jako mě.

Našli jste v článku chybu?

5. 5. 2004 12:19

Karel Zak (neregistrovaný)

Presne tak. To, ze na praci s XML se pouziva zase XML a ne neco jineho je velke plus. Proste staci jen jeden parser. Urcite by pro XHTML prohlizec bylo jednodusi pracovat s necim jako je CSS ale psanem v XML nez nutnost implementovat dalsi parser.

I kdyz osobne bych ocenil i existenci neceho daleko jednodusiho nez je XSLT pro pripady kdy neni treba transformovat, ale jen nekam v XML dosadit nejake hodnoty. Tedy takove CSS zalozene na XPath a XML :-))

<set to="//xhtml:table[@id='x']/@bgc…



5. 5. 2004 11:49

Jirka Kosek (neregistrovaný)

CSS je pro nějaké seriózní formátování XML v podstatě nepoužitelné, protože mu chybí transformační možnosti. Pomocí CSS nevygenerujete obsah, nesečtete fakturu, což jsou zcela běžné požadavky při formátování dokumentů XML.

I kdybyste výše popsané funkce oželel, stejně je v současné době XML+CSS v praxi nepoužitelné, protože současné prohlížeče nejsou schopné v takovém dokumentu zobrazit obrázky nebo odkazy (tedy odkazy XLink Mozilla umí, ale většina uživatelů má IE, ve kterém si ani nekliknou…

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

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

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

Jsou čajové sáčky toxické?

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

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

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

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

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

Recenze Westworld: zavraždit a...

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR