Způsoby a syntaxe tvorby služeb dokumentů

Služby dokumentu se umísťují do elementu struktury services, který je sourozencem k elementu struktury area) a na rozdíl od obsahu dokumentu může celou službu tvořit i jediný prvek (tag element).

Například jednoduchý dokument clovek může být definován takto:

<DocumentDef>
<label>Čověk</label>
<name>clovek</name>
<group>kontakty</group>
<content>
<area label="Celé jméno" name="cele_jmeno">
<element label="Křestní jméno" name="krestni_jmeno" short="kjm" based-on="kratky_text"/>
<element label="Příjmení" name="prijmeni" short="pjm" based-on="kratky_text"/>
</area>
<area label="Privátní adresa" name="adresa" based-on="adresa"/>
<area name="telefony" short="tely">
<area name="telefon" based-on="telefon" repetition="type:depend;"/>
</area>
<area label="Další údaje" name="dalsi_udaje" short="dlsud">
<element label="Rodné číslo" name="rodne_cislo" short="rci" based-on="kratky_text"/>
<element label="Pohlaví" name="pohlavi" short="phl" based-on="seznam" data="type:char;length:1;">
<select>
<option value="m">muž</option>
<option value="z">žena</option>
</select>
</element>
</area>
<area label="Zařazení člověka" name="zarazeni_cloveka">
<element label="Je osoba zákazníkem" name="je_osoba_zakaznikem" short="jezak" based-on="volba" initial="false"/>
<area label="Zařazení zákazníka" name="zarazeni_zakaznika" short="zarzak" appear-if="../je_osoba_zakaznikem = true">
<element name="bonita_zakaznika" based-on="bonita"/>
<element label="Datum zařazení jako zákazníka" name="datum_zarz_zakaznika" short="dtmzrz" based-on="datum" initial="today()"/>
</area>
</area>
</content>
<services>
<area label="Jméno a adresa" name="jmeno_a_adresa" based-on="adresa" take-from="adresa">
<element name="jmeno" order="1" take-from="/cele_jmeno/jmeno"/>
<element name="prijmeni" order="2" take-from="/cele_jmeno/prijmeni"/>
</area>
<area name="dalsi_udaje">
<element name="rodne_cislo"/>
<element name="pohlavi"/>
</area>
</services>
</DocumentDef>

Definice dokumentu je obsažena v tagu DocumentDef a vedle obecných tagů jako label a name definice obsahuje pro dokumenty specifickou definici skupiny - group. Pak již následují tagy struktury content pro definici obsahu a services pro definici služeb.

Vlastní dokument obsahuje nejprve oblast pro zadání celého jména osoby, kde by mohlo být například ještě druhé křestní jméno, rodné příjmení případně titul a jiné. Pro jednoduchost jsme však volili opravdu základní prvky, což platí i o zbytku uvedeného příkladu. V další kmenové oblasti dokumentu se nachází oblast pro zadání privátní adresy, jenž je založena na obecné definici adresy, jenž je možné využít i pro další dokumenty. Obsahuje prvky ulice, místo a PSČ.

Následuje další oblast pro zadání telefonního spojení obsahující podoblast s obecně předdefinovaným obsahem jako tomu bylo u adresy, která je navíc definována jako opakovatelná. Tato podoblast obsahuje prvky státní předvolba, místní předvolba a telefonní číslo. Navíc obecná definice určuje, že se jedná o tabulku se stylem inline, což znamená, že jednotlivé prvky oblasti budou poskládány vedle sebe do tabulkového řádku. To je i důvodem, proč je jí nadřazena oblast telefony, neboť oblast telefon je jen tabulkovým řádkem, který navíc nelze ve formuláři ani skrývat. Proto existuje nadřazená oblast, která všechny řádky ohraničí a umožní jejich skrývání ve formuláři. Tato konstrukce však není nezbytná - můžeme rovnou použít pouze oblast telefon - na kmenu dokumentu je však lepší tento typ oblasti nepoužívat.

Po telefonním spojení je možné ještě zadat další údaje v podobě rodného čísla a pohlaví dané osoby. U pohlaví si můžeme všimnout, že je u prvku definován i výběrový seznam, ze kterého uživatel vybírá.

Poslední oblastí dokumentu člověk je oblast pro zařazení člověka, kde se vyznačí, zda a od kdy je daná osoba zákazníkem firmy a jakou bonitu má jako klient. Tím jsme prošli strukturu dokumentu a můžeme na ni navázat služby dokumentu.


Způsoby a syntaxe tvorby služeb dokumentůZákladní zásady pro vytváření služebDalší zásady pro službyDědění struktury služby z jiné službyDoplnění cizího segmentu vlastnímOšetření vlastností pomocí služebShrnující služba bez odkazuOšetření bezpečnostních přístupů ve službáchMožnost použít jen vyjmenované potomky služby