Popis nejpoužívanějších formátů
použitých v technologii FastX/Freelance:
· Název formátu: XIF [X Interchange Format]
XIF je ve Freelance nejpoužívanější formát.
Je součástí implementace jazyka X. Slouží k statickému
i operativnímu ukládaní strukturovaných textových dat, jako jsou například
šablony WFX, WTX, WRO
souborů, zdroje aplikace, debug info X modulů aj. Existují dvě základní entity
formátu: datová položka a blok.
* Datová položka je uspořádaná dvojice jméno_položky=hodnota_položky.
* Blok je pojmenovaný seznam obsahující jedné anebo více položek
anebo bloků.
* Bloky se mohou vnořovat.
* Blok se deklaruje jeho jménem následovaným znakem { a zakončuje znakem
}.
* Jednoznačné jméno datové položky je seznam všech jmen nadřízených
bloků uspořádaných od vnějšího směrem k bloku obsahujícímu položku
následovaný jménem položky. Jednotlivé položky seznamu jsou odděleny znakem |.
Jednoduchý zápis XIF formátu může vypadat
takto:
main{
subblockA{
VALUE{
X=1
Y=1
}
}
subblockB{
VALUE=1
}
subblockC{
VALUE=4
}
}
Výše uvedený příklad definuje XIF s jedním blokem, obsahujícím
tři podbloky, každý s další položkou. V prvním podbloku je položkou
další podblok. Vidíme, že v XIF formátu mohou existovat položky či bloky i
se stejnými jmény, jsou-li v různých blocích. Obecně platí, že
* jména všech položek a bloků v jediném bloku musí být unikátní.
Formát XIF a jeho implementace v X definuje dvě direktivy pro
implementaci odkazů na další XIF soubory:
#include jméno_XIF_souboru
#embed maska_XIF_souborů
Mezi oběma direktivami je následující rozdíl: include nepodporuje
masku pro zadání vkládaných souborů, zato si vkládané bloky pamatují,
z jakého souboru byly načteny. To má význam v případě ukládání změn
v XIFech operátorem xifsave() jazyka X – rozložení bloků
v souborech se nezmění. Direktiva embed podporuje zadání masky
vkládaných XIF souborů, vkládané bloky si však nepamatují, z jakého
souboru pocházejí. Při případném uložení změn operátorem xifsave() se všechny
uloží do souboru na místo embed direktivy.
I direktiva embed má své uplatnění: používá se v případech, že
potřebujeme vytvořit XIF strukturu ze sady souborů, kterou dopředu neznáme;
kupříkladu FastX server čte při initializaci XIF uložený v souboru init.
Tento soubor obsahuje mimo jiné direktivu embed, kterou se načtou
XIF-deskriptory všech FastX aplikací.
· Název formátu: html, gif, jpeg, … běžně používané standardy
·
Název formátu: LISTEX
Formát LISTEX se
využívá při dynamické konstrukci seznamů (menu) hodnot editačního pole anebo
sloupce tabulky. Seznam má formu strukturovaného popup-menu. Definice se skládá
ze dvou textových řetězců. První z nich (SHOWLIST) obsahuje definici
zobrazovaných hodnot, druhý (DATALIST), obsahuje odpovídající datové hodnoty.
Je-li DATALIST prázdný, datové hodnoty jsou jednotlivé prvky SHOWLISTU. Dále platí,
že je-li definován DATALIST, uživatel nemá možnost zadat jinou hodnotu než
některý prvek SHOWLISTu.
1.
Definice SHOWLISTu: seznam popisovačů jednotlivých hodnot s
rozšiřující syntaxí pro tvorbu struktovaných menu
SHOWLIST=<popis hodnoty 1>~<popis hodnoty 2>~…<popis hodnoty
N>
Je-li <popis hodnoty N> ROVEN >>>, systém k předchozí
hodnotě vytvoří podmenu a následné popisovače vkládá do tohoto podmenu
Je-li <popis hodnoty N> ROVEN <<<, systém ukončí
stávající podmenu a následné popisovače vkládá do nadřízeného seznamu
Příklad
Alfa~>>>~alfa1~alfa2~alfa3~<<<~Beta~>>>~beta1~beta2~beta3~<<<
definuje
menu hodnot: Alfa a Beta, přičemž každá položka má podmenu se třemi položkami
Popis hodnoty má následující strukturu:
POPIS = text_menu anebo
POPIS = text_menu//:pojmenovany_obrazek
2.
Definice DATALISTu: nepovinný seznam datových hodnot odpovídajících
jednotlivým položkám SHOWLISTu.
DATALIST=< hodnota 1>~< hodnota 2>~…<hodnota N>
UPOZORNĚNÍ:
Je nezbytné v DATALISTu uvádět hodnoty i pro syntaktické operátory >>>
a <<<, ačkoli tyto hodnoty nemají význam a mohou být prázdné.
Příklad
SHOWLIST: Alfa~>>>~alfa1~alfa2~alfa3~<<<~Beta~>>>~beta1~beta2~beta3//:iSEMAPHOR~<<<
DATALIST: alfa~~Alfa1~Alfa2~Alfa3~~beta~~Beta1~Beta2~Beta3~
definuje
menu hodnot: Alfa a Beta, přičemž každá položka má podmenu se třemi položkami.
Datalist tyto hodnoty (v databázi) mapuje na hodnoty s odlišným zápisem
velkých a malých písmen. Všimněte si zdvojených ~~, které reprezentují prázdné
datovéhodnotypro operátory >>> a <<< . Podmenu beta3 má navíc
obrázek iSEMAPHOR.