Zpracování XML šablony

Úvod
Prezentátor
Návrh
Celková architektura prezentačního systému
Zpracování XML šablony
Jádro systému
Rozhraní pro popis dotazů

Counter

Šablona bude XML dokumentem, a ty lze zpracovávat různými způsoby. Standardizováno je rozhraní pro zpracování SAX a DOM. Dále si uvedeme vlastnosti těchto rozhraní s ohledem na tvorbu prezentačního systému.

Rozhraní SAX má pro zpracování XML dokumentu tu výhodu, že umožňuje zpracovávat dokument aniž by jej načetla celý předem. Tato výhoda se projevuje předně při zpracování velkých dokumentů a při jejich průchodu mnoha stupni zpracování. Umožňuje, aby uživatel získával výsledný dokument postupně a ne až celý naráz. Navíc je výhodou tohoto API, že nemá velké paměťové nároky, což může hrát na vytížených serverech svou roli.

Rozhraní DOM je pro zpracování XML dokumentů vhodné pokud potřebujeme pracovat s celým dokumentem naráz. Celý dokument je přitom uložen v paměti, a to zpravidla ve stromové struktuře. Veškeré vyhledávání v dokumentu a získávání informací o něm může probíhat velmi rychle. Toto API je vhodné použít např. tehdy pokud proces, který zajišťujeme není přímočarý a jednoduchý. Je vhodné jej použít i tehdy, pokud se v řetězci transformací vyskytují transformace, které pracují v režimu DOM. Důvodem je fakt, že lze mnohdy výsledky transformací předávat dál v podobě stromu DOM a serializaci do výsledného dokumentu lze provést až nakonec. Tento argument má jednu slabinu, a tou je požadavek na stejnou reprezentaci DOM v rámci jednotlivých transformačních procesů. Může se stát, že každý proces bude pracovat s jinou implementací DOM, a že si procesy nebudou schopny dokument ve formátu DOM předat.

Protože většina současných XSLT procesorů pracuje s rozhraním DOM (Saxon, libxslt, Xalan, a další) a protože XSLT je součástí většiny transformačních řetězců, tak můžeme tvrdit, že je lepší používat při zpracování XML dokumentu DOM. Na druhou stranu předpokládáme, že snaha o co nejširší použití méně náročného a rychlejšího rozhraní SAX bude pokračovat, a tak v naší práci použijeme událostmi řízeného rozhraní SAX.

Dalším důvodem pro SAX je nedostatečná podpora DOM v plánovaném implementačním jazyce Perl.

Celkový pohled na zpracování dokumentu při zvoleném rozhraní SAX je uveden na obrázku . Protože SAX je řízené událostmi, tak v diagramu použijeme namísto názvů zpráv od objektu SAX názvy uzlů, které budou danou sekvenci vyvolávat. SAX parser bude mít roli aktora.


Sekvenční diagram zpracování šablony

V diagramu se vyskytuje šest rozhraní. SAXParser je aktorem, který spouští celou sekvenci, a to na základě typu objektu ve zpracovávané šabloně.

PresentatorSAX je rozhraním, které deleguje úkoly dále, a činí tak na základě událostí SAX a kontextu v rámci šablony. Jedná se v tomto případě o SAX filtr. Samotný výstup do řetězce je pak možné provést zřetězením filtrů a využitím filtrů pro zápis.

Format je rozhraním, které se stará o získávání informací o požadavcích na data, a o jejich začlenění do kontextu. Zpracovává veškerá data, která se nachází v kontextu elementu form.

Rozhraní QueriesFactory má na starosti poskytnutí takového rozhraní Select, v jehož kompetenci je získání požadovaných dat.

Rozhraní Select se starají o převod požadavků na data do rozhraní typu Result. Jeho úkolem bude většinou sestavení SQL dotazu a jeho provedení.

Rozhraní SQLResults slouží jako obal (wrapper) pro výsledky. Jeho úkolem je sjednotit přístup k datovým výsledkům. Jednotlivá pole z SQLResults jsou dostupná přes rozhraní SQLField