Sample Program to Generate XML Output

The following program illustrates the use of XML commands to generate XML output:

let $pop = '123'
let #num = 100.9999999

EDIT_XML_ROOT 'Progressreport' 'default:student,n1:space1,n2:space2'

DEFINE_XML_TEMPLATE 'grand_child' 'default'
ADD_ELEMENT 'Column1'
ADD_ELEMENT 'Column2'
END_XML_TEMPLATE


DEFINE_XML_TEMPLATE 'child' 'default'
ADD_ELEMENT 'Column11'
ADD_ELEMENT 'Column22'
ADD_AS_CHILD 'grand_child'
END_XML_TEMPLATE

ADD_DATA_TO_XML_RECORD  'grand_child'  'Column1' 'ABC'
ADD_DATA_TO_XML_RECORD  'grand_child'  'Column2' '12'

ADD_DATA_TO_XML_RECORD  'child'  'Column11' $pop
ADD_DATA_TO_XML_RECORD  'child'  'Column22' #num
ADD_CHILD_TO_XML_RECORD 'child' 'grand_child'

WRITE_TO_XML_FILE 'child' 'default'

DEFINE_XML_TEMPLATE  'n1:subject' 'default'
ADD_ELEMENT 'subject_name'  
ADD_ELEMENT 'subject_score' 
END_XML_TEMPLATE 

DEFINE_XML_TEMPLATE  'n2:subject' 'default'
ADD_ELEMENT 'subject_name2'  
ADD_ELEMENT 'subject_score2' 
END_XML_TEMPLATE 

DEFINE_XML_TEMPLATE 'Address'   'default'
ADD_ELEMENT 'Building' 
ADD_ELEMENT 'Street'   
ADD_ELEMENT 'ZIP'    
ADD_ELEMENT_FORCE_EMPTY  'Empty_column'
ADD_ELEMENT 'Non_Empty'    
END_XML_TEMPLATE

DEFINE_XML_TEMPLATE 'student'   'default'
ADD_ELEMENT 'Name'  
ADD_ELEMENT 'Age'   
ADD_ELEMENT 'Date'  
INHERIT_ELEMENTS 'Address' 
ADD_AS_CHILD 'n1:subject'
ADD_AS_CHILD 'n2:subject'
END_XML_TEMPLATE 

ADD_DATA_TO_XML_RECORD   'student'  'Name' 'ABC&' 
ADD_DATA_TO_XML_RECORD   'student'  'Age'  12 
ADD_DATA_TO_XML_RECORD   'student'  'Date' '1/1/2013' 
ADD_DATA_TO_XML_RECORD   'student'  'Building' '123/4D' 
ADD_DATA_TO_XML_RECORD   'student'  'Street' 'Baker Street' 
ADD_DATA_TO_XML_RECORD   'student'  'ZIP' 654687 

ADD_DATA_TO_XML_RECORD   'n1:subject'  'subject_name' 'Mathematics' 
ADD_DATA_TO_XML_RECORD   'n1:subject'  'subject_score' '90' 

ADD_CHILD_TO_XML_RECORD   'student'  'n1:subject'

CLEAR_XML_RECORD 'n1:subject'

ADD_DATA_TO_XML_RECORD   'n2:subject'  'subject_name2' 'Science' 
ADD_DATA_TO_XML_RECORD   'n2:subject'  'subject_score2' 45 

ADD_ATTRIBUTE_TO_XML_RECORD 'n2:subject' 'subject_score2' 'out_of' '100'

ADD_CHILD_TO_XML_RECORD   'student'  'n2:subject'

ADD_COMMENT_TO_XML_FILE  'Results of students' 
WRITE_TO_XML_FILE 'student'  'default'
WRITE_CDATA_TO_XML_FILE  'Test CDATA' 

DEFINE_XML_TEMPLATE 'MESSAGE_CATALOG' 'default'
ADD_ELEMENT 'MESSAGE_SET_NBR'  
ADD_ELEMENT 'MESSAGE_NBR'   
ADD_ELEMENT 'LANGUAGE_CD'  
ADD_ELEMENT 'MESSAGE_TEXT'
END_XML_TEMPLATE

begin-select
MESSAGE_SET_NBR	  &MESSAGE_SET_NBR
MESSAGE_NBR		  &MESSAGE_NBR
LANGUAGE_CD		  &LANGUAGE_CD
MESSAGE_TEXT	  &MESSAGE_TEXT

   ADD_DATA_TO_XML_RECORD  'MESSAGE_CATALOG' 	'MESSAGE_SET_NBR'  &MESSAGE_SET_NBR
   ADD_DATA_TO_XML_RECORD  'MESSAGE_CATALOG' 	'MESSAGE_NBR'      &MESSAGE_NBR
   ADD_DATA_TO_XML_RECORD  'MESSAGE_CATALOG'  	'LANGUAGE_CD'  	   &LANGUAGE_CD
   ADD_DATA_TO_XML_RECORD  'MESSAGE_CATALOG' 	'MESSAGE_TEXT'	   &MESSAGE_TEXT
   ADD_ATTRIBUTE_TO_XML_RECORD 'MESSAGE_CATALOG' 	'MESSAGE_TEXT' 'LANGUAGE_CD' &LANGUAGE_CD
   ADD_ATTRIBUTE_TO_XML_RECORD 'MESSAGE_CATALOG' 	'MESSAGE_TEXT' 'MESSAGE_NBR' &MESSAGE_NBR
   WRITE_TO_XML_FILE 'MESSAGE_CATALOG'  'default'
   CLEAR_XML_RECORD 'MESSAGE_CATALOG'
from psmsgcatlang
where MESSAGE_SET_NBR = 92
end-select

The following is the sample XML output that is generated:

<?xml version="1.0"  encoding="UTF-8"?>
<Progressreport xmlns="student" xmlns:n1="space1" xmlns:n2="space2">
<child>
<Column11>123</Column11>
<Column22>100.999999</Column22>
<grand_child>
<Column1>ABC</Column1>
<Column2>12</Column2>
</grand_child>
</child>
<!--Results of students-->
<student>
<Name>ABC&amp;</Name>
<Age>12</Age>
<Date>1/1/2013</Date>
<Building>123/4D</Building>
<Street>Baker Street</Street>
<ZIP>654687</ZIP>
<Empty_column></Empty_column>
<n1:subject>
<subject_name>Mathematics</subject_name>
<subject_score>90</subject_score>
</n1:subject>
<n2:subject>
<subject_name2>Science</subject_name2>
<subject_score2 out_of="100">45</subject_score2>
</n2:subject>
</student>
<![CDATA[
Test CDATA
]]>
<MESSAGE_CATALOG>
<MESSAGE_SET_NBR>92</MESSAGE_SET_NBR>
<MESSAGE_NBR>1</MESSAGE_NBR>
<LANGUAGE_CD>ARA</LANGUAGE_CD>
<MESSAGE_TEXT LANGUAGE_CD="ARA" MESSAGE_NBR="1">شجرة API</MESSAGE_TEXT>
</MESSAGE_CATALOG>
<MESSAGE_CATALOG>
<MESSAGE_SET_NBR>92</MESSAGE_SET_NBR>
<MESSAGE_NBR>1</MESSAGE_NBR>
<LANGUAGE_CD>ESP</LANGUAGE_CD>
<MESSAGE_TEXT LANGUAGE_CD="ESP" MESSAGE_NBR="1">ⓅTree APIⓍ</MESSAGE_TEXT>
</MESSAGE_CATALOG>
<MESSAGE_CATALOG>
<MESSAGE_SET_NBR>92</MESSAGE_SET_NBR>
<MESSAGE_NBR>1</MESSAGE_NBR>
<LANGUAGE_CD>FRA</LANGUAGE_CD>
<MESSAGE_TEXT LANGUAGE_CD="FRA" MESSAGE_NBR="1">API arbre</MESSAGE_TEXT>
</MESSAGE_CATALOG>
<MESSAGE_CATALOG>
<MESSAGE_SET_NBR>92</MESSAGE_SET_NBR>
<MESSAGE_NBR>1</MESSAGE_NBR>
<LANGUAGE_CD>JPN</LANGUAGE_CD>
<MESSAGE_TEXT LANGUAGE_CD="JPN" MESSAGE_NBR="1">ツリー API</MESSAGE_TEXT>
</MESSAGE_CATALOG>
<MESSAGE_CATALOG>
<MESSAGE_SET_NBR>92</MESSAGE_SET_NBR>
<MESSAGE_NBR>3260</MESSAGE_NBR>
<LANGUAGE_CD>JPN</LANGUAGE_CD>
<MESSAGE_TEXT LANGUAGE_CD="JPN" MESSAGE_NBR="3260">レベルを切り替えられませんでした。</MESSAGE_TEXT>
</MESSAGE_CATALOG>
</Progressreport>