Špecifikácia XML dát
Dáta XML súboru je tá časť v štruktúre XML súboru, ktorá obsahuje konfiguráciu objektov systému D2000 alebo jej časti.
Rezervované sekcie XML dát
REFERENCES - obsahuje štruktúry reprezentujúce objektové a stĺpcové referencie objektu
CFGRECORDS - obsahuje štruktúry reprezentujúce dáta objektu
MEMBEROFLOGGROUP - obsahuje za sebou uvedené member elementy, ktoré určujú, do akej logickej skupiny daný objekt patrí
MEMBEROFRESGROUP - obsahuje za sebou uvedené member elementy, ktoré určujú, do akej skupiny objektov daný objekt patrí
CRC - obsahuje MD5 hash dát
OBJLIFELOGS - obsahuje za sebou uvedené logy "života objektu"
Na získanie podrobných informácií o tom, ktorými štruktúrami sú definované objekty systému D2000, aké atribúty tieto štruktúry obsahujú, aké sú typy hodnôt týchto atribútov a aké hodnoty môžu tieto atribúty nadobúdať je možné použiť program pre výpis aktuálnej štruktúry. Súčasne tento výpis obsahuje nepodporované objekty a vymenované typy.
Obsah sekcie z príkladu XML súboru:
<HOBJ_REF>
<uid>A25DED0E4DA94B4895A119370E3AF4FB</uid>
<name>SV.Limits</name>
<objType>D2RECORD</objType>
<valType>Rec</valType>
</HOBJ_REF>
<COL_REF>
<col_idx>1</col_idx>
<col_name>VHL</col_name>
<col_valType>Int</col_valType>
</COL_REF>
<HOBJ_REF>
<uid>USER_VAR</uid>
<name>USER_VAR</name>
<objType>SYSTEM</objType>
<valType>NAN</valType>
</HOBJ_REF>
Obsahuje štruktúry:
HOBJ_REF reprezentujúce objektové referencie objektu
COL_REF reprezentujúce stĺpcové referencie objektu (objekt ich obsahuje, ak je objekt definícia štruktúry alebo na ňu odkazuje)
Popis vlastností objektových referencií:
každá objektová referencia musí mať nastavený minimálne atribút name
atribúty uid, objType a valType v objektovej referencii sú nepovinné
ak je atribút uid v objektovej referencii nastavený, pri párovaní objektových referencií má prioritu pred atribútom name
Popis vlastností stĺpcových referencií:
stĺpcové referencie musia nasledovať za príslušnou objektovou referenciou
každá stĺpcová referencia musí mať nastavený minimálne atribút col_name
atribúty col_idx a col_valType v stĺpcovej referencii sú nepovinné
ak je atribút col_idx v stĺpcovej referencii nastavený, ma párovaní stĺpcových referencií prioritu pred atribútom col_name
Obsah sekcie z príkladu XML súboru:
<TObjItemData>
<Id>0</Id>
<Name>U.TimeSlice</Name>
<Descript>Time Slice</Descript>
<Typ>USER_VAR</Typ>
<ParentId>USER_VAR</ParentId>
<Value_Type>TmR</Value_Type>
<CreateTime>08.10.2009 08:10:31.366</CreateTime>
<ModifyTime>08.10.2009 08:18:02.938</ModifyTime>
...
<uuid>5CB809E9342B7A46BD790A8C7D14C69E</uuid>
</TObjItemData>
<tUserVarData_Full>
<tUserVarData>
<MANUAL>True</MANUAL>
<MANUAL_VAL/>
<FLAGS/>
<VALUE_TIME>08.10.2009 08:10:31.379</VALUE_TIME>
<MONITOR>False</MONITOR>
<SAVE_VALUE>True</SAVE_VALUE>
</tUserVarData>
<startVal/>
</tUserVarData_Full>
V tejto sekcii sa musí vždy vyskytovať štruktúra TObjItemData (len jedenkrát) a to hneď na jej začiatku. Jednoznačne identifikuje objekt, ktorého konfigurácia je uložená v XML súbore. Za touto štruktúrou nasledujú štruktúry, ktorých počet a pomenovanie je závislé od konkrétneho typu objektu. Napríklad vyššie uvedený objekt je typu USER_VAR obsahuje ešte štruktúru s názvom tUserVarData_Full.
Popis vlastností identifikačnej šturktúry:
atribút Id reprezentuje Id objektu (údaj, ktorý ma význam pri operácii XML Import)
atribút Name musí byť vždy zadaný
atribút uuid, ak je zadaný, má pri párovaní objektov prioritu pred atribútom Name
Obsah sekcie z príkladu XML súboru:
<member>SELT\CD8FD25EF8A690341B111F5274CDB5AB</member>
Popis vlastností hodnoty memeber:
reprezentuje zaradenie objektov do logických skupín
musí obsahovať názov logickej skupiny (pred znakom '\')
môže obsahovať aj uid logickej skupiny (za znakom '\')
Poznámka: Pri operácii XML Import vplýva táto hodnota na členstvo objektu v jednotlivých logických skupinách.
Obsah sekcie z príkladu XML súboru:
<member>Home_s\04CB44144B2CD8E46955D846D30B0F72</member>
Popis vlastností hodnoty memeber:
reprezentuje zaradenie objektov do skupín objektov
musí obsahovať názov skupiny objektov (pred znakom '\')
môže obsahovať aj uid skupiny objektov (za znakom '\')
ak je názov skupiny objektov uzavretý v '[' a ']', objekt bol pridaný do skupiny s potomkami
Obsah sekcie z príkladu XML súboru:
a7a8bda021932a3547e6553cb8980273
Hodnota CRC predstavuje MD5 hash vytvorený z obsahu XML súboru. Zahŕňa dáta od <ROOT> elementu (včítane <ROOT> elementu) až po riadok pred CRC sekciou (vrátane znakov CR, LF alebo oboch). Vyhodnotenie CRC hodnoty má význam pre XML Import a XML Repository.
Vyhodnotenie CRC hodnoty:
sekcia sa v dátach nachádza
MD5 hash zodpovedá tejto hodnote - dáta neboli modifikované
MD5 hash nezodpovedá tejto hodnote - dáta boli modifikované
sekcia sa v dátach nenachádza - nedá sa určiť, či boli dáta modifikované
Vyhodnotenie tejto CRC hodnoty má zásadný vplyv na platnosť atribútu ModifyTime štruktúry TObjItemData v rezervovanej sekcii <CRGRECORDS>, čo sa prejaví pri operácii XML Import nasledovne:
ak je CRC hodnota platná, potom je čas modifikácie objektu nastavený na hodnotu atribútu ModifyTime z XML súboru
ak je CRC hodnota neplatná, potom je čas modifikácie objektu nastavený na čas XML súboru alebo na aktuálny čas, ak bol čas XML súboru nedefinovaný
ak bola CRC hodnota neplatná, alebo sa nenachádzala v XML súbore a pred operáciou XML Import je čas určený na zmenu rovný pôvodnému času modifikácie objektu, zmení import tento čas modifikácie na aktuálny čas
Obsah sekcie z príkladu XML súboru:
<tObjLifeLogData>
<name>U.TimeSlice</name>
<state>OLA_CREATED</state>
<modify_time>08.10.2009 08:16:23.761</modify_time>
<user_name>s</user_name>
<process_name>WS1JSTF2.CNF</process_name>
<computer_name>WS1JSTF2</computer_name>
<log_type>OLT_CONFIG</log_type>
<comment_text/>
</tObjLifeLogData>
Za sebou uvedené štruktúry tObjLifeLogData reprezentujú logy "života objektu"
Popis vlastností log štruktúry:
name v logu sa môže odlišovať od name objektu (nakoľko objekt mohol byť premenovaný)
uid a id sa v logu nenachádza, nakoľko je obsiahnuté priamo v objekte
do cieľovej konfigurácie sa importujú len tie logy objektu, ktoré tam ešte pre daný objekt nie sú
Medzi podporované typy hodnôt atribútov štruktúr patria:
Vymenovaný typ | Stručný popis hodnoty atribútu | Príklad elementu v XML súbore |
|---|---|---|
T_RECORD_NAME | Interné meno štruktúry. | meno tagu štruktúry |
T_RECORD | Hodnota typu štruktúra. | vnorená štruktúra <tCalcData> v <tCalcData_Full> |
T_ARRAY | Hodnota typu pole štruktúr rovnakého typu. | vnorené pole štruktúr <Tprvok_pola_?> v <STRIP_DATA> |
T_HOBJ | Meno objektu. | <ParentId>DIAGRAMS</ParentId> |
T_HOBJ_KEY | Meno objektu, ktoré je zároveň kľúčovou položkou. | <ID_RESOURCE>Home_Pjanko</ID_RESOURCE> |
T_VOBJ | Meno objektu, riadok a stĺpec. | <CtrlObject>P.IF500_RS_WatchDog</CtrlObject> |
T_BOOLEAN | Vymenovaný typ (hodnota True alebo False). | <Read_Only>False</Read_Only> |
T_BITSET | Pole vymenovaných typov (vymenované hodnoty). | <IsValueDelay>Off</IsValueDelay> |
T_ENUM | Vymenovaný typ (vymenované hodnoty). | <Typ>POINT</Typ> |
T_SIGNED_INT | Celočíselná hodnota <-2147483647 .. 2147483648>. | <TransPalIdx>0</TransPalIdx> |
T_UNSIGNED_INT | Celočíselná hodnota <0 .. 4294967295>. | <Id>200449</Id> |
T_SIGNED_INT_KEY | Celočíselná kľúčová hodnota <-2147483647 .. 2147483648>. | <grObjectNr>1163</grObjectNr> |
T_UNSIGNED_INT_KEY | Celočíselná kľúčová hodnota <0 .. 4294967295>. | <Row>0</Row> |
T_FLOAT | Neceločíselná hodnota. Hodnoty väčšie ako 1.0E+38 budú interpretované ako hodnota 1.0E+38 a hodnoty menšie ako -1.0E+38 budú interpretované ako hodnota -1.0E+38. | <BaseValue>1.00000000000000E+00</BaseValue> |
T_D2TIME | Hodnota určujúca čas a dátum. | <ModifyTime>18.07.2003 11:52:09.674</ModifyTime> |
T_STRING | Textová hodnota s presne definovanou dĺžkou. | <PassCode>ROOT_CFGRECORDS_TUserData_PassCode</PassCode> |
T_BOUNDED_STRING | Textová hodnota s definovanou maximálnou dĺžkou. | <Name>D.PIPA_CHSO2_Mh</Name> |
T_UNBOUNDED_STRING | Textová hodnota s neobmedzenou dĺžkou. | <statement>TextTextTextTextText</statement> |
Typy hodnôt sa delia na:
štruktúrované - T_RECORD a T_ARRAY
jednoduché - všetky ostatné
Reťazové hodnoty T_STRING, T_BOUNDED_STRING alebo T_UNBOUNDED_STRING sa ďalej členia na:
SDT_NORMAL - klasický reťazec
SDT_EXPRESSION - reťazec typu výraz
SDT_RAW_DATA - reťazec označujúci binárne dáta
Vlastnosti typu SDT_RAW_DATA:
atribút typu SDT_RAW_DATA poukazuje na skutočnosť, že k danému XML súboru existuje binárny súbor
dáta binárneho súboru predstavujú skutočnú hodnotu atribútu typu SDT_RAW_DATA
hodnota atribútu typu SDT_RAW_DATA uvedená v XML súbore obsahuje vnorenie atribútu (je ignorovaná)
XML Export ukladá binárny súbor pod názvom <meno_objektu>_<vnorenie_atribútu>.bin
XML Import hľadá binárny súbor pod názvom <meno_xml_súboru>_<vnorenie_atribútu>.bin
pokiaľ nie je názov objektu v XML súbore premenovaný (element <Name>), potom XML Export aj XML Import pracuje s rovnakým názvom binárneho súboru (napríklad U.UserVar_ROOT_CFGRECORDS_TUserData_PassCode.bin), ktorý je uložený pri XML súbore (je jeho nevyhnutnou súčasťou)
Vlastnosti typu T_ARRAY:
názov položiek má tvar NazovPolozky_[X] (namiesto [X] je buď rozsah hodnôt 0..N alebo hodnoty vymenovaného typu)
samotné položky môžu byť typu T_RECORD, alebo niektorého jednoduchého typu
Nasledujúci príklad zobrazuje uloženie konfigurácie objektu typu USER_VAR s názvom U.TimeSlice do XML súboru:
<?xml version="1.0" encoding="windows-1250"?>
<!--$Date: 2012/10/19 05:30:58 $ $Revision: 1.7 $ $Author: pbrezina $ $ExpSubDir: Common\Planner $-->
<ROOT>
<REFERENCES>
<HOBJ_REF>
<uid>A25DED0E4DA94B4895A119370E3AF4FB</uid>
<name>SV.Limits</name>
<objType>D2RECORD</objType>
<valType>Rec</valType>
</HOBJ_REF>
<COL_REF>
<col_idx>1</col_idx>
<col_name>VHL</col_name>
<col_valType>Int</col_valType>
</COL_REF>
<HOBJ_REF>
<uid>USER_VAR</uid>
<name>USER_VAR</name>
<objType>SYSTEM</objType>
<valType>NAN</valType>
</HOBJ_REF>
</REFERENCES>
<CFGRECORDS>
<TObjItemData>
<Id>0</Id>
<Name>U.TimeSlice</Name>
<Descript>Time Slice</Descript>
<Typ>USER_VAR</Typ>
<ParentId>USER_VAR</ParentId>
<Value_Type>TmR</Value_Type>
<CreateTime>08.10.2009 08:10:31.366</CreateTime>
<ModifyTime>08.10.2009 08:18:02.938</ModifyTime>
<Text_Palette/>
<Read_Only>False</Read_Only>
<TECH_UNIT/>
<UseLimits>False</UseLimits>
<VHL>1.00000000000000E+38</VHL>
<HL>1.00000000000000E+38</HL>
<LL>-1.00000000000000E+38</LL>
<VLL>-1.00000000000000E+38</VLL>
<VHL_ID>SV.Limits[1]^VHL</VHL_ID>
<HL_ID/>
<LL_ID/>
<VLL_ID/>
<Hysterezia>0.00000000000000E+00</Hysterezia>
<TransPalIdx>0</TransPalIdx>
<Hidden>False</Hidden>
<uuid>5CB809E9342B7A46BD790A8C7D14C69E</uuid>
</TObjItemData>
<tUserVarData_Full>
<tUserVarData>
<MANUAL>True</MANUAL>
<MANUAL_VAL/>
<FLAGS/>
<VALUE_TIME>08.10.2009 08:10:31.379</VALUE_TIME>
<MONITOR>False</MONITOR>
<SAVE_VALUE>True</SAVE_VALUE>
</tUserVarData>
<startVal/>
</tUserVarData_Full>
</CFGRECORDS>
<MEMBEROFLOGGROUP>
<member>SELT\CD8FD25EF8A690341B111F5274CDB5AB</member>
</MEMBEROFLOGGROUP>
<MEMBEROFRESGROUP>
<member>Home_s\04CB44144B2CD8E46955D846D30B0F72</member>
</MEMBEROFRESGROUP>
<CRC>a7a8bda021932a3547e6553cb8980273</CRC>
<OBJLIFELOGS>
<tObjLifeLogData>
<name>U.TimeSlice</name>
<state>OLA_CREATED</state>
<modify_time>08.10.2009 08:16:23.761</modify_time>
<user_name>s</user_name>
<process_name>WS1JSTF2.CNF</process_name>
<computer_name>WS1JSTF2</computer_name>
<log_type>OLT_CONFIG</log_type>
<comment_text/>
</tObjLifeLogData>
</OBJLIFELOGS>
</ROOT>
Súvisiace stránky: