Určení zdroje dat

Upravit obsah stránky

Nastavení zdroje prvku či oblasti dokumentu. Klíčová vlastnost pro strukturu dokumentu a jeho databázového modelu.

own::   |   ( [foreign | initial | lexicon ]:[{source-doc-name}]:[{service-absolute-reference}] )   |   (count::{expression} )

Atribut source je nepovinný a udává, zda budou segmenty ukládány do vlastních databázových polí nebo zda budou ukládány do polí segmentu jiného dokumentu či zda z nich budou do vlastních polí načítána a dojde tak kevzájemné provázanosti dokumentů.

V části zabývající se metodami tvorby definice jsme se již problematikou propojení dokumentů zabývali v kapitole službydokumentů. Nyní se podíváme na konkrétní možnosti vlastnosti source, která na zmíněné služby odkazuje, a která určuje způsob využití zdroje nebo definuje, že segment nemá propojení na jiné dokumenty.

Do atributu se zadává textovýřetězec složený ze tří částí vzájemně oddělených dvojtečkami.

mechanismus:dokument:odkaz

1. mechanismus - určuje způsob propojení segmentu (prvku či oblasti) do ke zdroji nebo je zde uvedeno, že tento segment mávlastní zdroj

2. dokument - zde je obsažen název zdrojového dokumentu. Pokud segment neobsahuje propojení do cizího dokumentu, nebo pokud toto propojení určila již rodičovská oblast, je tato část prázdná

3.odkaz - absolutní odkaz na službu cizího dokumentu od kmene služeb cizího dokumentu nebo výraz pro výpočet dynamické hodnoty (viz dále)

Pokud máme cizí oblast (tj. source="initial:dok:/..." či ="foreign:dok:/..."), pak v této oblasti mohou být prvky aoblasti se zdrojem respektujícím zdrojový mechanismus nebo mechanismus own a respektující instanci (tj. u potomků se může vyskytovat source="::/..." nebo source="own::"). V propojení na zdroj u potomků není možné kombinovat mechanismy (u mechanismu s výše uvedenou výjimkou own::).

1. Mechanismus zdroje

Zvláštní případ je mechanismus výpočtu obsahu - count. Zde platí základní pravidlo - pro výpočet není možné používat prvky cizího dokumentu. Pro tento výpočet je možné použít jen některý z prvků danéhodokumentu. Vypočtená hodnota se pak ukládá stejně jako u mechanismu own. Navíc se ještě ukládá logický údaj, určující, zda došlo k ruční opravě údaje uživatelem či nikoli. Pokud ano, jsou další výpočty hodnoty vypnuty a ručně nastavená hodnota zůstává až do případnéhoopětovného zapnutí výpočtu uživatelem.

Mechanismus lexicon také, podobně jako přdchozí initial vytváří kopie zdrojových údajů, ale již neukládá klíč. Mechanismus lexiconnevytváří relaci na úrovni klíčového propojení. Dochází tak jen ke kopírování zvolených údajů. Je tak možné ze zdrojového dokumentu udělat roletku nebo načístat celou oblast. I přesto, že se klíče neukládají, je možné využívat vlastnosti source-key i v případě mechanismulexicon.

Jinak je tomu u mechanismu initial, který sice využívá dat cizího zdroje (má stejný odkaz jako foreign), ale využívá jej k načtení těchto dat do vlastního uložiště a jejich případnádalší změna nemá na zdrojové údaje žádný vliv. Stejně tak případná úprava zdrojového dokumentu při mechanismu initial nemá žádný vliv na již načtené údaje. Ale stále platí, že initial vytváří v databázi relaci pomocí klíčů pdk «» fdk. To už neplatío posledním ze 3 způsobů využití jednoho dokumentu jiným.

Mechanismus foreign v definici zdroje říká, že definovaný segment nemá vlastní zdroj. Obsahem tohoto segmentu jsou údaje z jiného segmentu v jiném dokumentu. Znamená to tedy, žeopraví-li uživatel v tomto segmentu nějaké údaje, pak je zároveň upravuje i ve zdrojovém dokumentu, nebo se jedná o společné úložiště těchto dat.

Mechanismy foreign, initial a lexicon označujítři možné způsoby využití odkazovaného segmentu cizího dokumentu.

Mechanismus je v atributu vždy pojmenován. Pokud ho při návrhu neuvedete, automaticky se doplní podle rodiče. Je-li segmentem kmenová oblast dokumentu a rodičem je tedy dokument, pak je v takovém případěnastaven mechanismus own. Pokud je na začátku atributu source uveden mechanismus own, vždy následují dvě dvojtečky, takže cizí dokument ani odkaz do něj nejsou uvedeny (nemají zde význam). Opomenutí dvojteček u mechanismuown, není kritickou chybou - dvojtečky jsou replikátorem doplněny.

bullet

count - vlastní zdroj s dynamickým výpočtem hodnoty

bullet

lexicon - vlastní zdroj s načítáním z cizíhobez ukládání klíče

bullet

initial - vlastní zdroj s načítáním kopie údajů z cizího vč. klíče

bullet

foreign - cizí zdroj, v cíli se ukládá jen klíč;

bullet

own - vlastní zdroj

Mechanismus obsahuje jedno z následujících klíčových slov:

2. Zdrojový dokument

Jako typ zdrojového dokumentu je možné zadat i typ dokumentu, který jeprávě definován. To může být úžitečné například při vytváření a popisu vztahu mezi dvěma osobami (tj. mezi dvěma dokumenty typu osoba) apod.

Naopak neuvedení názvu, jak již bylo zmíněno, povede k navázání na instanci zdrojového dokumentu vybraného rodičem segmentu (viz.přebírání cesty).

Zde je v případě mechanismu foreign, initial či lexicon uveden název zdrojového dokumentu (resp. jeho typu) odkud se údaje přebírají. Je však možné jméno dokumentu neuvádět aniu těchto dvou metod. Je to tehdy, kdy z nějakého důvodu upřesňujeme potomka zdroje a jméno dokumentu je uvedeno u rodiče, který logicky čerpá rovněž z téže instance téhož typu zdrojového dokumentu. Uvedení či neuvedení typu dokumentu mezi dvojtečkami v atributu source máklíčový význam na vznik tzv. výběrového uzlu v daném dokumentu. Pokud totiž tento název uvedeme, znamená to při současném neuvedení odkazu do vlastnosti source-key (viz. dále) jednoznačně vznik uzlu, do kterého je volena instance vepsaného typu zdrojovéhodokumentu.

3. Odkaz na službu dokumentu

U mechanismu count je na tomto místě uveden výraz s možností odkazů na jiné prvky téhož dokumentu. Výraz dodržuje stejnou syntaxi, jakou využívají akce dokumentů (jen bezmožnosti tvorby proměnných). Odkazy ve výrazu mechanismu count mohou být na rozdíl od jiných metod i relativní. To je díky tomu, že se jedná o odkazy do téže instance dokumentu. Více o sytaxi zápisu výpočtového výrazu naleznete v páté kapitole této části, která se zabývátvorbou akcí.

Pokud je pomlčka uvedena, znamená to přebírání odkazu od rodiče segmentu a to včetně případné instance opakování zdroje. Pro lepší pochopení se podíváme na konkrétní příklady přebírání odkazu.

Tento odkaz však nemá úplněshodnou sytaxi s XPath. Oproti XPath je tu jedna zvláštnost související (podobně jako u názvu dokumentu uprostřed atributu) s možností vynechání názvu segmentu mezi lomítky. Vynechání názvu segmentu cizího dokumentu má podobný význam jako vynechání názvu dokumentu - jde o přebírání instancepřípadného zdrojového opakování. Vynechání názvu se realizuje pomlčkou na místo Qname zdrojového segmentu. Pokud je pomlčka uplatněna, pak musí být uplatněna od začátku odkazu (tj. je možné /-/-/jmeno, ale není možné /jmeno/-/jmeno).

U metodforeign, initial a lexicon je v této části uveden absolutní odkaz připomínající XPath bez výběrových podmínek (tj. bez hranatých závorek). Vminulé kapitole jsme se seznámili s existencí a významemslužeb v dokumentu. Právě tento odkaz je nasměrován nikoli do nitra dokumentu, ale právě na některou z jeho služeb uvedených v tagu struktury services v rámci finální definice dokumentu.Prvním krokem odkazu hned za lomítkem je vždy jméno služby tj. klíčový identifikátor name segmentu area nebo element, které jsou potomky zmíněného tagu struktury services.