XML Exchange Structure
This page contains the human readable description of the SLDragonBreath Exchange XML
Structure, their Fields and purposes. This description should help XSL authors generate
their Skins for the Dragon Breath system, but also help other coders and software
architects to access the data from the database.
An example of such a structure looks like this:
<sldb_exchange>
<sldb_datasets>
<sldb_dataset>
<sldb_record>
<sldb_field/>
<sldb_field/>
<sldb_field/>
</sldb_record>
</sldb_dataset>
</sldb_sessionset>
</sldb_exchange>
The root element is the sldb_exchange node. This
node contains at least 2 further nodes, both named with a descriptive name ending in *set. One
of both is the slsm_sessionset containing all session data as key value pairs of
the currently logged on user. The other node (sldb_dataset) can contain none,
one or multiple sldb_dataset's.
Every sldb_dataset is complete in itself. This means that every dataset contains records
and an errorset. So every recordset can have a set of errors and records, which themselfs
contain the data.
Representing this structure with a DTD the whole structure looks like this:
<!DOCTYPE sldb_exchange [
<!ELEMENT sldb_exchange (sldb_datasets+,slsm_sessionset)>
<!ELEMENT slsm_sessionset (#PCDATA)>
<!ELEMENT sldb_datasets (sldb_dataset*)>
<!ELEMENT sldb_dataset (sldb_records+,sldb_errorset,sldb_functionset)>
<!ELEMENT sldb_records (sldb_record*)>
<!ELEMENT sldb_errorset (sldb_records*)>
<!ELEMENT sldb_functionset (sldb_records*)>
<!ELEMENT sldb_record ((sldb_field|sldb_function_field|sldb_error_field)*)>
<!ELEMENT sldb_field (#PCDATA)>
<!ELEMENT sldb_function_field (#PCDATA)>
<!ELEMENT sldb_error_field (#PCDATA)>
<!ATTLIST sldb_dataset guid_exchange_session_id CDATA #REQUIRED>
<!ATTLIST sldb_record lng_record_id CDATA #REQUIRED>
<!ATTLIST sldb_errorset guid_exchange_session_id CDATA #REQUIRED>
<!ATTLIST sldb_field str_object CDATA #REQUIRED>
<!ATTLIST sldb_field str_field CDATA #REQUIRED>
<!ATTLIST sldb_field lng_record CDATA #REQUIRED>
<!ATTLIST sldb_field str_value_default CDATA #IMPLIED>
<!ATTLIST sldb_field lng_exchange_field_type CDATA #IMPLIED>
<!ATTLIST sldb_field int_record_state CDATA #IMPLIED>
<!ATTLIST sldb_field int_field_length CDATA #IMPLIED>
<!ATTLIST sldb_function_field ctr_form_id CDATA #REQUIRED>
<!ATTLIST sldb_function_field int_group_forms CDATA #IMPLIED>
<!ATTLIST sldb_function_field str_form_name CDATA #REQUIRED>
<!ATTLIST sldb_function_field str_target_name CDATA #IMPLIED>
<!ATTLIST sldb_function_field ctr_form_function_id CDATA #REQUIRED>
<!ATTLIST sldb_function_field lng_form_function_type CDATA #IMPLIED>
<!ATTLIST sldb_function_field b_default CDATA #IMPLIED>
<!ATTLIST sldb_function_field b_load_needed_afterwards CDATA #IMPLIED>
<!ATTLIST sldb_function_field str_form_function_name CDATA #REQUIRED>
<!ATTLIST sldb_function_field str_form_function_caption CDATA #REQUIRED>
]>
The rest of this document describes some of the special nodes from within the
sldb_exchange structure. Some is still outdated, since we did not have all the
time to update the whole documentation yet.
Record
The record node contains record and field sub-nodes which contain all data themselfs.
Which data is defined by the function which was executed to retrieve the whole structure.
<sldb_records>
<sldb_record lng_record_id='0'>
<sldb_field
lng_record=''
str_object=''
str_field=''
str_value_default=''
str_value=''
lng_exchange_field_type=''
int_record_state=''
int_field_length=''>
</sldb_field>
<sldb_field lng_record='0' />
<sldb_field lng_record='0' />
</sldb_record>
<sldb_record lng_record_id='1'/>
</sldb_records>
Errorset
In the errorset everything is stored which upset the sanity checker. So you generally
can read the state of the last process out of that node and subnodes.
<errorset>
<record
guid_exchange_session_id=''
str_error=''
int_error_type=''
str_error_value_1=''
str_error_value_2=''
str_error_value_3=''>
</record>
</errorset>
Sessionset
The sessionset contains all the session variables of the current user. Because
that part will be added to every request, this means that every request is
user based and that this this part of the XML is
prerendered for performance reasons. So every change done
to the session specific data in the database will call a trigger and update the
prerendered sessionset.
<sessionset>
<record
lng_user_id=''
str_key=''
str_val=''>
</record>
</sessionset>
Functionset
The functionset is very sophisticated and contains all the possible functions
which can be executed with the current data and the current status. So these
nodes change as example after a sucessful validation process. After you
have validate, you may save, but normaly you will not be able to save before
you validated the data.
<functionset>
<record
ctr_form_id=''
int_group_of_forms=''
str_form_name=''
str_target_name=''
ctr_form_function_id=''
lng_form_function_type=''
b_default=''
b_load_needed_afterwards=''
str_form_function_name=''
str_form_function_caption=''>
</record>
</functionset>