Zaměřím se především na popis jednotlivých XML dokumentů, které si budou moduly
mezi sebou předávat, protože otázku, jakým způsobem se přesně budou jednotlivé
moduly volat (nejspíš include a následné volání jednotlivých funkcí, ale pokud
si vzpomínám padaly i jiné návrhy), lze dost možná ještě odložit.
Každý XML dokument bude mít pochopitelně XML deklaraci, následovat musí kořenový
element, například "caddis" (navrhuji pro veškerá jména elementů a atributů
používat malých písmen, abychom se vyhnuli case-sensitivitě; pro hodnoty
atributů už by to mohlo být nežádoucí, tam bych rozhodnutí ponechal na
později). Jako jeho první vnořený element bych zvolil něco jako "head" se zatím
blíže neurčitým obsahem, protože mám takové nejasné tušení, že si pravděpodobně
z implementačních důvodů budeme muset předávat nějaké informace, na které si
momentálně nevzpomeneme, a tudíž se taková hlavička bude hodit, když zůstane
nevyužita, nic se nestane. Jako další synovský element "caddisu" navrhuji
"data", což bude jenom obecný kontejner pro veškerá data předávaná mezi
moduly. Čili úplně základní schéma by vypadalo asi takto:
...
...
První věcí, která mě například napadla, že by mohla být součástí hlavičky, je
informace o tom, který modul XML vygeneroval a odeslal. Tady se naráží na dvě
možné koncepce - buďto bude volající modul volat přímo nějakou konkrétní funkci
s jasně danou činností, potom je informace o volajícím dle mého názoru zbytečná,
protože by tuto informaci ta funkce neměla potřebovat. Druhá možnost je, že
všechny moduly budou nějakém jiném modulu volat jedinou funkci, která bude
zvenku vidět a tato funkce se až na základě XML rozhodne, co vlastně se bude
přesně dít, pak je tam ta informace pochopitelně nezbytná. Jde o to posoudit,
zda je lepší, aby se například Formulářník rozhodoval, co přesně bude chtít po
Plánovači (první varianta), nebo aby naopak Plánovač vzal XML, z hlavičky si
přečetl, že je od Formulářníka a sám si rozhodl, co to tak asi po něm ten
Formulářník může chtít.
Z obecných záležitostí bych jenom ještě upozornil, že veškeré názvy elementů a
atributů jsou většinou to první, co mě zrovna napadne a pravděpodobně ne zrovna
to nejlepší a očekávám o nich pochopitelně další diskuzi; připadalo mi však na
druhou stranu nepřehledné používat například neustále element1, element2, atd.
V popisu konkrétních XML začnu od uživatele, který bude (s výjimkou případů
odesílání dat e-mailem) komunikovat s Formulářníkem. Hned ovšem úvodní stránka
Caddisu (kterou bude obstarávat rovněž Formulářník) je speciální případ, který
bude nejspíš vyžadovat i samostatnou XSL šablonu obsahující nějaké to úvodní
povídání a pak místo nějakého formuláře naopak seznam existujících formulářů
(jako nynější verze). V tomto případě bude tedy XML od Formulářníka velice
jednoduché - hlavička (nejspíš) bude obsahovat něco jako
a datová část bude prázdná. V odpovědi, kterou Formulářník očekává může být
redundantně pro sichr zopakováno, oč bylo žádáno (třeba jako ), nebo taky nemusí, ale především v datové části seznam všech
formulářů, které Caddis nabízí:
...
...
...
Pak již nebude problém uživateli poskytnou patřičný výstup. Další situace
nastává v momentě, kdy si uživatel vybere jeden z formulářů, pak Formulářník
odešle v hlavičce například . Odpověď
bude v datové části obsahovat element "formular", který bude obsahovat sadu
elementů "formitem" - ty reprezentující informace o jednotlivých prvcích. Každý
takový bude obsahovat element "type" určující, jaký datový typ je v daném místě
očekáván. To je důležité jednak proto, aby se Formulářník rozhodl, který
formulářový prvek vlastně použije (nejčastěji textový input, ale občas i něco
jiného) a jednak proto, že to nebude pouze datový typ, ale spíše nějaký
identifikátor, který bude zároveň určovat, zda a proti čemu se mají data této
položky validovat. Dále bude obsahovat element "width", což bude určovat šířku
formulářového prvku tak, jak má být vykreslen, vzhledem k nějaké prozatím
fiktivní jednotce. Nakonec ještě element "label" obsahující textový popisek,
který se má před formulářovým prvkem objevit. Dost možná by stálo za to zvážit,
zda by nebylo lepší vyhradit si labely rovnou dva - jeden před formulářový prvek
a druhý za něj, bude-li to potřeba (tedy buď něco ve smyslu a
nebo