XML data specification
XML data is the part of XML file that contains the object configuration of D2000 System or its sections.
Reserved sections
REFERENCES - the section includes the structures representing the object and column references of object
CFGRECORDS - the section includes the structure representing the data of object
MEMBEROFLOGGROUP - the section includes member elements defining the logical group which the given object belongs to
MEMBEROFRESGROUP - the section includes member elements defining the group of object which the given object belongs to
CRC - the section includes the MD5 hash of data
OBJLIFELOGS - the section includes the logs about the object history
The detailed information about the structures defining the objects of D2000 System, the attributes of structures, the value types of attributes and the values the attributes can acquire, can be find by the program to show the actual structure. This listing includes the unsupported objects and enumerated types.
The example of section:
(the complete example is here)
<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>
It includes the structures:
HOBJ_REF - they represent the object references of object
COL_REF - they represent the column references of object (object must be a structure definition or the object refers to it)
Properties of the object references:
minimal attribute name must be set in each object reference
uid, objType and valType attributes are optional
uid attribute has a priority to the name attribute at object references matching
Properties of the column references:
the column reference follows the object reference
minimal attribute col_name must be set in each column reference
col_idx and col_valType attributes in column reference are optional
col_idx attribute has the priority to the col_name attribute at column references matching
The example of section:
(the complete example is here)
<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>
This section must contain just the one structure TObjItemData at the beginning. It identifies the object uniquely. The configuration of this object is saved in XML file.
This structure is followed by another structures, they count and name depends on a particular type of object. See the example: the object is of USER_VAR type and contains the structure tUserVarData_Full.
Properties of identification structure:
Id attribute represents an Id of object (it is important at XML Import)
Name attribute need always to be set
uuid attribute has a priority to the Name attribute at object matching
The example of section:
(the complete example is here)
<member>SELT\CD8FD25EF8A690341B111F5274CDB5AB</member>
Properties of member value:
it represents the object classification in the logical groups
it must contain the name of logical group (before the sign '\')
it can also contain uid of logical group (after the sign '\')
Note: This value affects the object membership in the logical groups at XML Import.
The example of section:
(the complete example is here)
<member>Home_s\04CB44144B2CD8E46955D846D30B0F72</member>
Properties of member value:
it represents the object classification in the object groups
it must contain the name of object group (before the sign '\')
it can also contain uid of the object group (after the sign '\')
if the name of object group is enclosed in '[' and ']' the object with children was inserted into group
The example of section:
(the complete example is here)
a7a8bda021932a3547e6553cb8980273
The CRC value represents MD5 hash formed from the contents of XML file. It includes data from <ROOT> element (<ROOT> element inclusive) to the row before CRC section (the signs CR, LF or both inclusive). The evaluation of CRC value is important for XML Import and XML Repository.
The evaluation of CRC value:
the section is included in data
:
MD5 hash corresponds to this value - data have not been modified
MD5 hash differs from this value - data have been modified
the section is not included in data - it is not possible to define whether data have been modified
The evaluation of CRC value influences the validity of ModifyTime attribute in TObjItemData structure of <CRGRECORDS> section. It becomes evident at XML Import as follows:
if the CRC value is valid the modify time of object is set on the value of ModifyTime attribute from XML file
if the CRC value is invalid the modify time of object is set on the time of XML file or on the current time (if the time of XML file was undefined)
if the CRC value was invalid or was not in XML file and, before the XML Import, the time to be changed is equal to the primary modify time of object the XML Import will change this modify time to the current time
The example of section:
(the complete example is here)
<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>
tObjLifeLogData structures represent the logs about the object history.
Properties of log structure:
name in logs can differ from name of object (as the object could has been renamed)
uid and id are not in log, because they are directly in object
only those logs are imported to the target configuration that have not been inserted in it for the given object
A supported value types of the structure attributes are:
Enumerated type | Description of value | Example of element in XML file |
|---|---|---|
T_RECORD_NAME | Internal name of structure. | Tag name of structure |
T_RECORD | Value of structure type. | Nested structure <tCalcData> in <tCalcData_Full>. |
T_ARRAY | Value of structure array type of the same type. | Nested structure array <Tprvok_pola_?> v <STRIP_DATA>. |
T_HOBJ | Object name. | <ParentId>DIAGRAMS</ParentId> |
T_HOBJ_KEY | Object name which is a key item. | <ID_RESOURCE>Home_Pjanko</ID_RESOURCE> |
T_VOBJ | Object name, row and column. | <CtrlObject>P.IF500_RS_WatchDog</CtrlObject> |
T_BOOLEAN | Enumerated type (True or False). | <Read_Only>False</Read_Only> |
T_BITSET | Array of enumerated types (enumerated values). | <IsValueDelay>Off</IsValueDelay> |
T_ENUM | Enumerated type (enumerated values). | <Typ>POINT</Typ> |
T_SIGNED_INT | Integer value <-2147483647 .. 2147483648>. | <TransPalIdx>0</TransPalIdx> |
T_UNSIGNED_INT | Integer value <0 .. 4294967295>. | <Id>200449</Id> |
T_SIGNED_INT_KEY | Integer key value <-2147483647 .. 2147483648>. | <grObjectNr>1163</grObjectNr> |
T_UNSIGNED_INT_KEY | Integer key value <0 .. 4294967295>. | <Row>0</Row> |
T_FLOAT | Floating point. The values greater than 1.0E+38 will be interpreted as the value 1.0E+38 and the values less than -1.0E+38 will be interpreted as the value -1.0E+38. | <BaseValue>1.00000000000000E+00</BaseValue> |
T_D2TIME | Value modifying a time and date. | <ModifyTime>18.07.2003 11:52:09.674</ModifyTime> |
T_STRING | Text with defined length. | <PassCode>ROOT_CFGRECORDS_TUserData_PassCode</PassCode> |
T_BOUNDED_STRING | Text with defined maximal length. | <Name>D.PIPA_CHSO2_Mh</Name> |
T_UNBOUNDED_STRING | Text with unlimited length. | <statement>TextTextTextTextText</statement> |
Value types can be:
structured - T_RECORD and T_ARRAY
simple - all the others
The string values T_STRING, T_BOUNDED_STRING or T_UNBOUNDED_STRING can be:
SDT_NORMAL - normal string
SDT_EXPRESSION - string of expression type
SDT_RAW_DATA - string defining the binary data
Properties of SDT_RAW_DATA type:
attribute of SDT_RAW_DATA type indicates that XML file has the binary file
data of binary file represents the real value of the attribute of SDT_RAW_DATA type
the value of attribute of SDT_RAW_DATA file, stated in XML file, contains the nesting of attribute (it is ignored)
XML Export saves the binary file with name <object_name>_<attribute_nesting>.bin
XML Import searches the binary file with name <xml_file_name>_<attribute_nesting>.bin
if the object name in XML file is not renamed (element <Name>), then both XML Export and XML Import works with the binary file of the same name (e.g. U.UserVar_ROOT_CFGRECORDS_TUserData_PassCode.bin) that is placed in the same directory as XML file (it is its necessary part)
Properties of T_ARRAY type:
item name is in form ItemName_[X] (instead of [X] is either a value range from 0..N or the values of enumerated type)
the items can be of T_RECORD type or single type
The following example demonstrates the saving of the object of USER_VAR type with the name U.TimeSlice into XML file:
<?xml version="1.0" encoding="windows-1250"?>
<!--$Date: 2012/07/04 05:05:23 $ $Revision: 1.10 $ $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>
Related pages: