Hlavní navigace

Akta X 0404

5. 5. 2004
Doba čtení: 4 minuty

Sdílet

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.

root_podpora

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

Byl pro vás článek přínosný?