summaryrefslogtreecommitdiff
path: root/xmerge/java/org/openoffice/xmerge/converter/palm
diff options
context:
space:
mode:
Diffstat (limited to 'xmerge/java/org/openoffice/xmerge/converter/palm')
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java472
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java183
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java238
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java199
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java165
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java109
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/Record.java219
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/build.xml134
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/makefile.mk36
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/package.html144
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/README50
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/README6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/rd24
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/spose108
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/verify_sane.pl112
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_comparator.pl259
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_test_driver.pl848
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/run-convtest540
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/env/master.env85
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/lists/master.list55
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_animatedgif.pdbbin0 -> 208 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bolddoc.pdbbin0 -> 243 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bookmarks.pdbbin0 -> 648 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bulletorderedlist.pdbbin0 -> 237 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_emptydoc.pdbbin0 -> 111 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_firstlineindent.pdbbin0 -> 254 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_fontsize.pdbbin0 -> 261 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading.pdbbin0 -> 159 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading1.pdbbin0 -> 160 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading2.pdbbin0 -> 150 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_hyperlink.pdbbin0 -> 304 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_justified.pdbbin0 -> 169 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_linebreaks.pdbbin0 -> 362 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_linespacing.pdbbin0 -> 435 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_numberorderedlist.pdbbin0 -> 232 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_pagebreak.pdbbin0 -> 174 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_paragraph.pdbbin0 -> 240 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple01.pdbbin0 -> 158 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple02.pdbbin0 -> 158 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple03.pdbbin0 -> 158 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple04.pdbbin0 -> 158 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple05.pdbbin0 -> 158 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_standard.pdbbin0 -> 158 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_subscript.pdbbin0 -> 161 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_superscript.pdbbin0 -> 164 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_symbols.pdbbin0 -> 190 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_tab.pdbbin0 -> 240 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_table.pdbbin0 -> 165 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_textspan.pdbbin0 -> 364 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_unorderedlist.pdbbin0 -> 428 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_wordwrap.pdbbin0 -> 221 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet1.pdbbin0 -> 670 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet1.pdbbin0 -> 1534 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet1.pdbbin0 -> 558 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet1.pdbbin0 -> 670 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet1.pdbbin0 -> 282 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet1.pdbbin0 -> 614 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet1.pdbbin0 -> 324 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet1.pdbbin0 -> 651 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet1.pdbbin0 -> 631 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet1.pdbbin0 -> 455 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet1.pdbbin0 -> 485 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet1.pdbbin0 -> 475 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet1.pdbbin0 -> 250 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet1.pdbbin0 -> 573 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet1.pdbbin0 -> 3957 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet1.pdbbin0 -> 1086 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet1.pdbbin0 -> 958 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet1.pdbbin0 -> 608 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet2.pdbbin0 -> 238 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet1.pdbbin0 -> 779 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet2.pdbbin0 -> 373 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet3.pdbbin0 -> 371 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet1.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet1.pdbbin0 -> 353 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet1.pdbbin0 -> 518 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet1.pdbbin0 -> 683 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet1.pdbbin0 -> 651 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet1.pdbbin0 -> 675 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet1.pdbbin0 -> 250 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet2.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet3.pdbbin0 -> 188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd38
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_animatedgif.sxwbin0 -> 52952 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bolddoc.sxwbin0 -> 5500 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bookmarks.sxwbin0 -> 6047 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bulletorderedlist.sxwbin0 -> 6347 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_emptydoc.sxwbin0 -> 5701 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_firstlineindent.sxwbin0 -> 5519 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_fontsize.sxwbin0 -> 6130 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading.sxwbin0 -> 5518 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading1.sxwbin0 -> 5640 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading2.sxwbin0 -> 5964 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_hyperlink.sxwbin0 -> 5514 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_justified.sxwbin0 -> 6088 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_linebreaks.sxwbin0 -> 6269 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_linespacing.sxwbin0 -> 5618 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_numberorderedlist.sxwbin0 -> 6188 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_pagebreak.sxwbin0 -> 5534 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_paragraph.sxwbin0 -> 5914 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple01.sxwbin0 -> 5823 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple02.sxwbin0 -> 5821 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple03.sxwbin0 -> 5817 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple04.sxwbin0 -> 5792 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple05.sxwbin0 -> 5791 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_standard.sxwbin0 -> 5797 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_subscript.sxwbin0 -> 5798 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_superscript.sxwbin0 -> 5799 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_symbols.sxwbin0 -> 4916 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_tab.sxwbin0 -> 5731 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_table.sxwbin0 -> 6011 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_textspan.sxwbin0 -> 5958 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_unorderedlist.sxwbin0 -> 6817 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_wordwrap.sxwbin0 -> 5363 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_addition.sxcbin0 -> 5829 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_alignment.sxcbin0 -> 6383 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_backwardrange.sxcbin0 -> 5995 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_basic.sxcbin0 -> 5830 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_boolean.sxcbin0 -> 6066 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellcurrencyalue.sxcbin0 -> 6776 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellpercentvalue.sxcbin0 -> 6318 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellstringvalue.sxcbin0 -> 6009 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_columnswidth.sxcbin0 -> 6127 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cyclic.sxcbin0 -> 6005 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_dividefloating.sxcbin0 -> 6315 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_forwardrange.sxcbin0 -> 6058 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_insertimage.sxcbin0 -> 40476 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_invalidcellref.sxcbin0 -> 5838 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_largerange.sxcbin0 -> 6306 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_listrange.sxcbin0 -> 6162 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_mathematical.sxcbin0 -> 6026 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_protection.sxcbin0 -> 6839 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_sheetreference.sxcbin0 -> 6173 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple01.sxcbin0 -> 5080 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple02.sxcbin0 -> 4962 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple03.sxcbin0 -> 4995 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple04.sxcbin0 -> 5007 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_smallrange.sxcbin0 -> 5924 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_styles.sxcbin0 -> 6531 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_textimage.sxcbin0 -> 40702 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod232
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod172
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod841
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod147
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/form.mod312
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod94
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod54
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd58
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.mod238
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/script.mod55
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod53
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/style.mod395
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/table.mod497
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/text.mod1103
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_animatedgif.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bolddoc.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bookmarks.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bulletorderedlist.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_emptydoc-mod.infile9
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_emptydoc.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_firstlineindent.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_fontsize.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading1.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading2.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_hyperlink.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_justified.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_linebreaks.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_linespacing.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_numberorderedlist.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_pagebreak.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_paragraph.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple01.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple02.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple03.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple04.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple05.infile5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_standard.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_subscript.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_superscript.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_symbols.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_tab.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_table.infile5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_textspan.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_unorderedlist.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_wordwrap.infile4
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_addition01-mod.infile5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_alignment.infile4
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_backwardrange-mod.infile6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_basic-mod.infile5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_bob-mod.infile5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_boolean-mod.infile6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellcurrencyvalue.infile5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellpercentvalue-mod.infile8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellstringvalue-mod.infile10
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_columnswidth-mod.infile3
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cyclic-mod.infile12
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_dividefloating-mod.infile8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_forwardrange-mod.infile6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_insertimage.infile4
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_insertrow-mod.infile13
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_invalidcellref-mod.infile10
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_largerange-mod.infile6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_listrange-mod.infile6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_mathematical-mod.infile10
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_multi_boolean.infile5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_protection-mod01.infile6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_sheetreference-mod.infile6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple01-mod.infile13
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple02-mod.infile13
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple03-mod.infile22
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple04-mod.infile14
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_smallrange-mod.infile6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_styles.infile3
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_textimage.infile12
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/empty01.infile3
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/hyperlink01.infile4
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/image01.infile4
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple01.infile3
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple02.infile3
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple03.infile3
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple04.infile3
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple05.infile4
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table01.infile3
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table02.infile3
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table03.infile4
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table04.infile4
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_animatedgif.sxwbin0 -> 53136 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bolddoc.sxwbin0 -> 5664 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bookmarks.sxwbin0 -> 6227 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bulletorderedlist.sxwbin0 -> 6347 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc-mod.sxwbin0 -> 5880 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc.sxwbin0 -> 5880 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_firstlineindent.sxwbin0 -> 5683 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_fontsize.sxwbin0 -> 6315 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading.sxwbin0 -> 5700 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading1.sxwbin0 -> 5819 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading2.sxwbin0 -> 6142 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_hyperlink.sxwbin0 -> 5673 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_justified.sxwbin0 -> 6269 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_linebreaks.sxwbin0 -> 6444 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_linespacing.sxwbin0 -> 5783 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_numberorderedlist.sxwbin0 -> 6366 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_pagebreak.sxwbin0 -> 5698 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_paragraph.sxwbin0 -> 6093 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple01.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple02.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple03.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple04.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple05.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_standard.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_subscript.sxwbin0 -> 5980 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_superscript.sxwbin0 -> 5981 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_symbols.sxwbin0 -> 5106 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_tab.sxwbin0 -> 5912 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_table.sxwbin0 -> 6181 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_textspan.sxwbin0 -> 6142 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_unorderedlist.sxwbin0 -> 6817 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_wordwrap.sxwbin0 -> 5524 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_addition.sxcbin0 -> 6020 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_alignment.sxcbin0 -> 6535 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_backwardrange.sxcbin0 -> 6204 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_basic.sxcbin0 -> 6020 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_boolean.sxcbin0 -> 6239 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellcurrencyalue.sxcbin0 -> 6776 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellpercentvalue.sxcbin0 -> 6495 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellstringvalue.sxcbin0 -> 6172 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_columnswidth.sxcbin0 -> 6287 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cyclic.sxcbin0 -> 6005 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_dividefloating.sxcbin0 -> 6315 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_forwardrange.sxcbin0 -> 6259 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_insertimage.sxcbin0 -> 40702 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_insertrow.sxcbin0 -> 5157 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_invalidcellref.sxcbin0 -> 6035 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_largerange.sxcbin0 -> 6487 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_listrange.sxcbin0 -> 6370 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_mathematical.sxcbin0 -> 6351 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_multi_boolean.sxcbin0 -> 5338 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_protection.sxcbin0 -> 6839 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_sheetreference.sxcbin0 -> 6358 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple01.sxcbin0 -> 5176 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple02.sxcbin0 -> 4999 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple03.sxcbin0 -> 5044 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple04.sxcbin0 -> 5083 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_smallrange.sxcbin0 -> 6129 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_styles.sxcbin0 -> 6531 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_textimage.sxcbin0 -> 40702 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/empty01.sxwbin0 -> 5880 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/hyperlink01.sxwbin0 -> 6088 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/image01.sxwbin0 -> 53136 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple01.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple02.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple03.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple04.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple05.sxwbin0 -> 5978 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table01.sxwbin0 -> 6443 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table02.sxwbin0 -> 6443 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table03.sxwbin0 -> 6443 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table04.sxwbin0 -> 6443 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/mysplit.pl60
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/tappen.pl63
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/template.pl57
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/test_driver.pl787
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/OfficeZip.java244
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBDecoder.java138
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBHeader.java157
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBUtil.java104
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PalmDB.java353
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/README10
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/Record.java170
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/SimplePdbCompare.java97
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.java468
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.properties13
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlWrapper.java156
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlZipExtract.java149
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/comparator.pl249
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/Blocklist.dtd38
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/chart.mod232
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/datastyl.mod172
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/drawing.mod841
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/dtypes.mod147
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/form.mod312
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/meta.mod94
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/nmspace.mod54
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.dtd58
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.mod238
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/script.mod55
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/settings.mod53
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/style.mod395
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/table.mod497
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/text.mod1103
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/pdbcomparison.java545
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Doc_descriptions.sxcbin0 -> 8347 bytes
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Spreadsheet_descriptions.csv39
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Spreadsheet_descriptions.sxcbin0 -> 5752 bytes
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/lib/converterlib.pm1176
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/palm-session/session8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/test_spec/convertor_test_spec.html2274
385 files changed, 20289 insertions, 0 deletions
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java
new file mode 100644
index 000000000000..4c0ab0ffaeaf
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java
@@ -0,0 +1,472 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PalmDB.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.xmerge.converter.palm;
+
+import java.io.OutputStream;
+import java.io.InputStream;
+import java.io.DataOutputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * <p>This class contains data for a single Palm database for use during
+ * a conversion process.</p>
+ *
+ * <p>It contains zero or more <code>Record</code> objects stored in an
+ * array. The index of the <code>Record</code> object in the array is
+ * the <code>Record</code> id or number for that specific <code>Record</code> object.
+ * Note that this class does not check for maximum number of Records
+ * allowable in an actual PDB.</p>
+ *
+ * <p>This class also contains the PDB name associated with the Palm
+ * database it represents. A PDB name consists of 32 bytes of a
+ * certain encoding (extended ASCII in this case).</p>
+ *
+ * <p>The non default constructors take in a name parameter which may not
+ * be the exact PDB name to be used. The name parameter in
+ * <code>String</code> or <code>byte</code> array are converted to an exact
+ * <code>NAME_LENGTH</code> byte array. If the length of the name is less
+ * than <code>NAME_LENGTH</code>, it is padded with '\0' characters. If it
+ * is more, it gets truncated. The last character in the resulting byte
+ * array is always a '\0' character. The resulting byte array is stored in
+ * <code>bName</code>, and a corresponding String object <code>sName</code>
+ * that contains characters without the '\0' characters.</p>
+ *
+ * <p>The {@link #write write} method is called within the
+ * {@link org.openoffice.xmerge.converter.palm.PalmDocument#write
+ * PalmDocument.write} method for writing out its data to the <code>OutputStream</code>
+ * object.</p>
+ *
+ * <p>The {@link #read read} method is called within the
+ * {@link org.openoffice.xmerge.converter.palm.PalmDocument#read
+ * PalmDocument.read} method for reading in its data from the <code>InputStream</code>
+ * object.</p>
+ *
+ * @author Akhil Arora, Herbie Ong
+ * @see PalmDocument
+ * @see Record
+ */
+
+public final class PalmDB {
+
+ /* Backup attribute for a PDB. This corresponds to dmHdrAttrBackup. */
+ public final static short PDB_HEADER_ATTR_BACKUP = 0x0008;
+
+ /** Number of bytes for the name field in the PDB. */
+ public final static int NAME_LENGTH = 32;
+
+ /** List of <code>Record</code> objects. */
+ private Record[] records;
+
+ /** PDB name in bytes. */
+ private byte[] bName = null;
+
+ /** PDB name in String. */
+ private String sName = null;
+
+ /** Creator ID. */
+ private int creatorID = 0;
+
+ /** Type ID */
+ private int typeID = 0;
+
+ /**
+ * PDB version. Palm UInt16.
+ * It is treated as a number here, since there is no unsigned 16 bit
+ * in Java, int is used instead, but only 2 bytes are written out or
+ * read in.
+ */
+ private int version = 0;
+
+ /**
+ * PDB attribute - flags for the database.
+ * Palm UInt16. Unsignedness should be irrelevant.
+ */
+ private short attribute = 0;
+
+
+ /**
+ * Default constructor.
+ *
+ * @param creatorID The PDB Creator ID.
+ * @param typeID The PDB Type ID.
+ * @param version The PDB header version.
+ * @param attribute The PDB header attribute.
+ */
+ public PalmDB(int creatorID, int typeID, int version, short attribute) {
+
+ records = new Record[0];
+ setAttributes(creatorID, typeID, version, attribute);
+ }
+
+
+ /**
+ * Constructor to create <code>PalmDB</code> object with
+ * <code>Record</code> objects. <code>recs.length</code>
+ * can be zero for an empty PDB.
+ *
+ * @param name Suggested PDB name in a <code>String</code>.
+ * @param creatorID The PDB Creator ID.
+ * @param typeID The PDB Type ID.
+ * @param version The PDB header version.
+ * @param attribute The PDB header attribute.
+ * @param recs Array of <code>Record</code> objects.
+ *
+ * @throws UnsupportedEncodingException If <code>name</code> is
+ * not properly encoded.
+ * @throws NullPointerException If <code>recs</code> is null.
+ */
+ public PalmDB(String name, int creatorID, int typeID, int version,
+ short attribute, Record[] recs)
+ throws UnsupportedEncodingException {
+
+ this(name.getBytes(PdbUtil.ENCODING), creatorID, typeID, version,
+ attribute, recs);
+ }
+
+
+ /**
+ * Constructor to create object with <code>Record</code>
+ * objects. <code>recs.length</code> can be zero for an
+ * empty PDB.
+ *
+ * @param name Suggested PDB name in a <code>byte</code>
+ * array.
+ * @param creatorID The PDB Creator ID.
+ * @param typeID The PDB Type ID.
+ * @param version The PDB header version.
+ * @param attribute The PDB header attribute.
+ * @param recs Array of <code>Record</code> objects.
+ *
+ * @throws UnsupportedEncodingException If <code>name</code> is
+ * not properly encoded.
+ * @throws NullPointerException If recs is null.
+ */
+ public PalmDB(byte[] name, int creatorID, int typeID, int version,
+ short attribute, Record[] recs) throws UnsupportedEncodingException {
+
+ store(name);
+
+ records = new Record[recs.length];
+ System.arraycopy(recs, 0, records, 0, recs.length);
+ setAttributes(creatorID, typeID, version, attribute);
+ }
+
+
+ /**
+ * Set the attributes for the <code>PalmDB</code> object.
+ *
+ * @param creatorID The PDB Creator ID.
+ * @param typeID The PDB Type ID.
+ * @param version The PDB header version.
+ * @param attribute The PDB header attribute.
+ */
+ public void setAttributes (int creatorID, int typeID, int version, short attribute) {
+ this.creatorID = creatorID;
+ this.typeID = typeID;
+ this.version = version;
+ this.attribute = attribute;
+ }
+
+
+ /**
+ * This private method is mainly used by the constructors above.
+ * to store bytes into name and also create a <code>String</code>
+ * representation. and also by the <code>read</code> method.
+ *
+ * TODO: Note that this method assumes that the <code>byte</code>
+ * array parameter contains one character per <code>byte</code>,
+ * else it would truncate improperly.
+ *
+ * @param bytes PDB name in <code>byte</code> array.
+ *
+ * @throws UnsupportedEncodingException If ENCODING is
+ * not supported.
+ */
+ private void store(byte[] bytes) throws UnsupportedEncodingException {
+
+ // note that this will initialize all bytes in name to 0.
+ bName = new byte[NAME_LENGTH];
+
+ // determine minimum length to copy over from bytes to bName.
+ // Note that the last byte in bName has to be '\0'.
+
+ int lastIndex = NAME_LENGTH - 1;
+
+ int len = (bytes.length < lastIndex)? bytes.length: lastIndex;
+
+ int i;
+
+ for (i = 0; i < len; i++) {
+
+ if (bytes[i] == 0) {
+ break;
+ }
+
+ bName[i] = bytes[i];
+ }
+
+ // set sName, no need to include the '\0' character.
+ sName = new String(bName, 0, i, PdbUtil.ENCODING);
+ }
+
+
+ /**
+ * Returns creator ID.
+ *
+ * @return The creator ID.
+ */
+ public int getCreatorID() {
+
+ return creatorID;
+ }
+
+
+ /**
+ * Returns type ID.
+ *
+ * @return The type ID.
+ */
+ public int getTypeID() {
+
+ return typeID;
+ }
+
+
+ /**
+ * Returns attribute flag.
+ *
+ * @return The attribute flag.
+ */
+ public short getAttribute() {
+
+ return attribute;
+ }
+
+
+ /**
+ * Returns version.
+ *
+ * @return The version.
+ */
+ public int getVersion() {
+
+ return version;
+ }
+
+
+ /**
+ * Return the number of Records contained in this
+ * PDB <code>PalmDB</code> object.
+ *
+ * @return Number of <code>Record</code> objects.
+ */
+ public int getRecordCount() {
+
+ return records.length;
+ }
+
+
+ /**
+ * Return the specific <code>Record</code> object associated
+ * with the <code>Record</code> number.
+ *
+ * @param index <code>Record</code> index number.
+ *
+ * @return The <code>Record</code> object in the specified index
+ *
+ * @throws ArrayIndexOutOfBoundsException If index is out of bounds.
+ */
+ public Record getRecord(int index) {
+
+ return records[index];
+ }
+
+
+ /**
+ * Return the list of <code>Record</code> objects.
+ *
+ * @return The array of <code>Record</code> objects.
+ */
+ public Record[] getRecords() {
+
+ return records;
+ }
+
+ /**
+ * Return the PDB name associated with this object.
+ *
+ * @return The PDB name.
+ */
+ public String getPDBNameString() {
+
+ return sName;
+ }
+
+
+ /**
+ * Return the PDB name associated with this object in
+ * <code>byte</code> array of exact length of 32 bytes.
+ *
+ * @return The PDB name in <code>byte</code> array of
+ * length 32.
+ */
+ public byte[] getPDBNameBytes() {
+
+ return bName;
+ }
+
+
+ /**
+ * Write out the number of Records followed by what
+ * will be written out by each <code>Record</code> object.
+ *
+ * @param os The <code>OutputStream</code> to write the
+ * object.
+ *
+ * @throws IOException If any I/O error occurs.
+ */
+ public void write(OutputStream os) throws IOException {
+
+ DataOutputStream out = new DataOutputStream(os);
+
+ // write out PDB name
+ out.write(bName);
+
+ // write out 2 bytes for number of records
+ out.writeShort(records.length);
+
+ // let each Record object write out its own info.
+ for (int i = 0; i < records.length; i++)
+ records[i].write(out);
+ }
+
+ /**
+ * Read the necessary data to create a PDB from
+ * the <code>InputStream</code>.
+ *
+ * @param is The <code>InputStream</code> to read data
+ * in order to restore the object.
+ *
+ * @throws IOException If any I/O error occurs.
+ */
+ public void read(InputStream is) throws IOException {
+
+ DataInputStream in = new DataInputStream(is);
+
+ // read in the PDB name.
+ byte[] bytes = new byte[NAME_LENGTH];
+ in.readFully(bytes);
+ store(bytes);
+
+ // read in number of records
+ int nrec = in.readUnsignedShort();
+ records = new Record[nrec];
+
+ // read in the Record infos
+ for (int i = 0; i < nrec; i++) {
+
+ records[i] = new Record();
+ records[i].read(in);
+ }
+ }
+
+ /**
+ * Override equals method of <code>Object</code>.
+ *
+ * Two <code>PalmDB</code> objects are equal if they contain
+ * the same information, i.e. PDB name and Records.
+ *
+ * This is used primarily for testing purposes only for now.
+ *
+ * @param obj A <code>PalmDB</code> <code>Object</code> to
+ * compare.
+ *
+ * @return true if <code>obj</code> is equal to this, otherwise
+ * false.
+ */
+ public boolean equals(Object obj) {
+
+ boolean bool = false;
+
+ if (obj instanceof PalmDB) {
+
+ PalmDB pdb = (PalmDB) obj;
+
+ checkLabel: {
+
+ // compare sName
+
+ if (!sName.equals(pdb.sName)) {
+
+ break checkLabel;
+ }
+
+ // compare bName
+
+ if (bName.length != pdb.bName.length) {
+
+ break checkLabel;
+ }
+
+ for (int i = 0; i < bName.length; i++) {
+
+ if (bName[i] != pdb.bName[i]) {
+
+ break checkLabel;
+ }
+ }
+
+ // compare each Record
+
+ if (records.length != pdb.records.length) {
+
+ break checkLabel;
+ }
+
+ for (int i = 0; i < records.length; i++) {
+
+ if (!records[i].equals(pdb.records[i])) {
+
+ break checkLabel;
+ }
+ }
+
+ // all checks done
+ bool = true;
+ }
+ }
+
+ return bool;
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java
new file mode 100644
index 000000000000..d26b2d5ef7e9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java
@@ -0,0 +1,183 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PalmDocument.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.xmerge.converter.palm;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ByteArrayOutputStream;
+
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+
+import org.openoffice.xmerge.Document;
+
+/**
+ * <p> A <code>PalmDocument</code> is palm implementaion of the
+ * <code>Docuemnt</code> interface.</p>
+ *
+ * <p>This implementation allows the Palm device format to be
+ * read via an <code>InputStream</code> and written via an
+ * <code>OutputStream</code>.</p>
+ *
+ * @author Martin Maher
+ */
+
+public class PalmDocument
+ implements Document {
+
+ /**
+ * The internal representation of a pdb.
+ */
+ private PalmDB pdb;
+
+ /**
+ * The file name.
+ */
+ private String fileName;
+
+ /**
+ * Constructor to create a <code>PalmDocument</code>
+ * from an <code>InputStream</code>.
+ *
+ * @param is <code>InputStream</code> containing a PDB.
+ *
+ * @throws IOException If any I/O error occurs.
+ */
+ public PalmDocument(InputStream is) throws IOException {
+ read(is);
+ }
+
+
+ /**
+ * Constructor to create a <code>PalmDocument</code> with
+ * <code>Record</code> objects. <code>recs.length</code>
+ * can be zero for an empty PDB.
+ *
+ * @param name Suggested PDB name in <code>String</code>.
+ * @param creatorID The PDB Creator ID.
+ * @param typeID The PDB Type ID.
+ * @param version The PDB header version.
+ * @param attribute The PDB header attribute.
+ * @param recs Array of <code>Record</code> objects.
+ *
+ * @throws NullPointerException If <code>recs</code> is null.
+ */
+ public PalmDocument(String name, int creatorID, int typeID, int version,
+ short attribute, Record[] recs)
+ throws UnsupportedEncodingException {
+ pdb = new PalmDB(name, creatorID, typeID, version, attribute, recs);
+ fileName = pdb.getPDBNameString();
+ }
+
+
+ /**
+ * Reads in a file from the <code>InputStream</code>.
+ *
+ * @param is <code>InputStream</code> to read in its content.
+ *
+ * @throws IOException If any I/O error occurs.
+ */
+
+ public void read(InputStream is) throws IOException {
+ PdbDecoder decoder = new PdbDecoder();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int b;
+ while (is.available()>0)
+ {
+ baos.write(is.read());
+ }
+ byte[] bytearr = baos.toByteArray();
+ pdb = decoder.parse(bytearr);
+ fileName = pdb.getPDBNameString();
+ }
+
+
+ /**
+ * Writes the <code>PalmDocument</code> to an <code>OutputStream</code>.
+ *
+ * @param is The <code>OutputStream</code> to write the content.
+ *
+ * @throws IOException If any I/O error occurs.
+ */
+ public void write(OutputStream os) throws IOException {
+ PdbEncoder encoder = new PdbEncoder(pdb);
+ encoder.write(os);
+ }
+
+
+ /**
+ * Returns the <code>PalmDB</code> contained in this object.
+ *
+ * @return The <code>PalmDB</code>.
+ */
+ public PalmDB getPdb() {
+ return pdb;
+ }
+
+
+ /**
+ * Sets the <code>PalmDocument</code> to a new <code>PalmDB</code>
+ * value.
+ *
+ * @param pdb The new <code>PalmDB</code> value.
+ */
+ public void setPdb(PalmDB pdb) {
+ this.pdb = pdb;
+
+ String name = pdb.getPDBNameString();
+ fileName = name;
+ }
+
+
+ /**
+ * Returns the name of the file.
+ *
+ * @return The name of the file represented in the
+ * <code>PalmDocument</code>.
+ */
+ public String getFileName() {
+ return fileName + ".pdb";
+ }
+
+
+ /**
+ * Returns the <code>Document</code> name.
+ *
+ * @return The <code>Document</code> name.
+ */
+ public String getName() {
+ return fileName;
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java
new file mode 100755
index 000000000000..0eed10bd3417
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java
@@ -0,0 +1,238 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PdbDecoder.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.xmerge.converter.palm;
+
+import java.io.RandomAccessFile;
+import java.io.IOException;
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+
+import org.openoffice.xmerge.converter.palm.*;
+
+/**
+ * <p>Provides functionality to decode a PDB formatted file into
+ * a <code>PalmDB</code> object given an <code>InputStream</code>.
+ * This class is only used by the <code>PalmDB</code> object.</p>
+ *
+ * <p>Sample usage:</p>
+ *
+ * <blockquote><pre><code>
+ * PdbDecoder decoder = new PdbDecoder("sample.pdb");
+ * PalmDB palmDB = decoder.parse();
+ * </code></pre></blockquote>
+ *
+ * <p>This decoder has the following assumptions on the PDB file:</p>
+ *
+ * <p><ol>
+ * <li>There is only one RecordList section in the PDB.</li>
+ * <li>The <code>Record</code> indices in the RecordList are sorted in
+ * order, i.e. the first <code>Record</code> index refers to
+ * <code>Record</code> 0, and so forth.</li>
+ * <li>The raw <code>Record</code> in the <code>Record</code> section
+ * are sorted as well in order, i.e. first <code>Record</code>
+ * comes ahead of second <code>Record</code>, etc.</li>
+ * </ol></p>
+ *
+ * <p>Other decoders assume these as well.</p>
+ *
+ * @author Herbie Ong
+ * @see PalmDB
+ * @see Record
+ */
+public final class PdbDecoder {
+
+
+ /**
+ * <p>This method decodes a PDB file into a <code>PalmDB</code>
+ * object.</p>
+ *
+ * <p>First, the header data is read using the <code>PdbHeader</code>
+ * <code>read</code> method. Next, the RecordList section is
+ * read and the <code>Record</code> offsets are stored for use when
+ * parsing the Records. Based on these offsets, the bytes
+ * corresponding to each <code>Record</code> are read and each is
+ * stored in a <code>Record</code> object. Lastly, the data is
+ * used to create a <code>PalmDB</code> object.</p>
+ *
+ * @param fileName PDB file name.
+ *
+ * @throws IOException If I/O error occurs.
+ */
+ public PalmDB parse(String fileName) throws IOException {
+
+ RandomAccessFile file = new RandomAccessFile(fileName, "r");
+
+ // read the PDB header
+ PdbHeader header = new PdbHeader();
+ header.read(file);
+
+ Record recArray[] = new Record[header.numRecords];
+ if (header.numRecords != 0) {
+
+ // read in the record indices + offsets
+
+ int recOffset[] = new int[header.numRecords];
+ byte recAttrs[] = new byte[header.numRecords];
+
+ for (int i = 0; i < header.numRecords; i++) {
+
+ recOffset[i] = file.readInt();
+
+ // read in attributes (1 byte) + unique id (3 bytes)
+ // take away the unique id, store the attributes
+
+ int attr = file.readInt();
+ recAttrs[i] = (byte) (attr >>> 24);
+ }
+
+
+ // read the records
+
+ int len = 0;
+ byte[] bytes = null;
+
+ int lastIndex = header.numRecords - 1;
+
+ for (int i = 0; i < lastIndex; i++) {
+
+ file.seek(recOffset[i]);
+ len = recOffset[i+1] - recOffset[i];
+ bytes = new byte[len];
+ file.readFully(bytes);
+ recArray[i] = new Record(bytes, recAttrs[i]);
+ }
+
+ // last record
+ file.seek(recOffset[lastIndex]);
+ len = (int) file.length() - recOffset[lastIndex];
+ bytes = new byte[len];
+ file.readFully(bytes);
+ recArray[lastIndex] = new Record(bytes, recAttrs[lastIndex]);
+
+ }
+
+ file.close();
+
+ // create PalmDB and return it
+ PalmDB pdb = new PalmDB(header.pdbName, header.creatorID,
+ header.typeID, header.version, header.attribute, recArray);
+
+ return pdb;
+ }
+
+ /**
+ * <p>This method decodes a PDB file into a <code>PalmDB</code>
+ * object.</p>
+ *
+ * <p>First, the header data is read using the <code>PdbHeader</code>
+ * <code>read</code> method. Next, the RecordList section is
+ * read and the <code>Record</code> offsets are stored for use when
+ * parsing the Records. Based on these offsets, the bytes
+ * corresponding to each <code>Record</code> are read and each is
+ * stored in a <code>Record</code> object. Lastly, the data is
+ * used to create a <code>PalmDB</code> object.</p>
+ *
+ * @param b <code>byte[]</code> containing PDB.
+ *
+ * @throws IOException If I/O error occurs.
+ */
+
+ public PalmDB parse(byte[] b) throws IOException {
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ DataInputStream dis = new DataInputStream(bais);
+
+ // read the PDB header
+
+ PdbHeader header = new PdbHeader();
+ header.read(dis);
+
+ Record recArray[] = new Record[header.numRecords];
+ if (header.numRecords != 0) {
+
+ // read in the record indices + offsets
+
+ int recOffset[] = new int[header.numRecords];
+ byte recAttrs[] = new byte[header.numRecords];
+
+ for (int i = 0; i < header.numRecords; i++) {
+
+ recOffset[i] = dis.readInt();
+
+ // read in attributes (1 byte) + unique id (3 bytes)
+ // take away the unique id, store the attributes
+
+ int attr = dis.readInt();
+ recAttrs[i] = (byte) (attr >>> 24);
+ }
+
+ // read the records
+
+ int len = 0;
+ byte[] bytes = null;
+
+ int lastIndex = header.numRecords - 1;
+
+ for (int i = 0; i < lastIndex; i++) {
+
+ //dis.seek(recOffset[i]);
+ dis.reset();
+ dis.skip(recOffset[i]);
+ len = recOffset[i+1] - recOffset[i];
+ bytes = new byte[len];
+ dis.readFully(bytes);
+ recArray[i] = new Record(bytes, recAttrs[i]);
+ }
+
+ // last record
+
+ dis.reset();
+ len = (int) dis.available() - recOffset[lastIndex];
+ dis.skip(recOffset[lastIndex]);
+ bytes = new byte[len];
+ dis.readFully(bytes);
+ recArray[lastIndex] = new Record(bytes, recAttrs[lastIndex]);
+ }
+
+
+
+ // create PalmDB and return it
+
+ PalmDB pdb = new PalmDB(header.pdbName, header.creatorID,
+ header.typeID, header.version, header.attribute, recArray);
+
+ return pdb;
+ }
+
+
+
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java
new file mode 100755
index 000000000000..5a1d81a475b9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java
@@ -0,0 +1,199 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PdbEncoder.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.xmerge.converter.palm;
+
+import java.io.OutputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Date;
+
+/**
+ * <p>Provides functionality to encode a <code>PalmDB</code> object
+ * into a PDB formatted file given a file <code>OutputStream</code>.
+ * This class is only used by the <code>PalmDB</code> object.</p>
+ *
+ * <p>One needs to create one <code>PdbEncoder</code> object per
+ * <code>PalmDB</code> object to be encoded. This class keeps
+ * the PDB header data and functionality in the <code>PdbHeader</code>
+ * class.</p>
+ *
+ * <p>Sample usage:</p>
+ *
+ * <blockquote><pre><code>
+ * PdbEncoder encoder = new PdbEncoder(palmDB, "STRW", "data");
+ * encoder.write(new FileOutputStream("sample.pdb"));
+ * </code></pre></blockquote>
+ *
+ * @author Herbie Ong
+ * @see PalmDB
+ * @see Record
+ */
+public final class PdbEncoder {
+
+ /** PDB header. */
+ private PdbHeader header = null;
+
+ /** the PalmDB object. */
+ private PalmDB db = null;
+
+ /**
+ * The pattern for unique_id=0x00BABE(start).
+ */
+ private final static int START_UNIQUE_ID = 0x00BABE;
+
+
+ /**
+ * Constructor.
+ *
+ * @param db The <code>PalmDB</code> to be encoded.
+ */
+ public PdbEncoder(PalmDB db) {
+
+ header = new PdbHeader();
+ header.version = db.getVersion();
+
+ header.attribute = db.getAttribute();
+
+ this.db = db;
+
+ header.pdbName = db.getPDBNameBytes();
+ header.creatorID = db.getCreatorID();
+ header.typeID = db.getTypeID();
+
+ // set the following dates to current date
+ Date date = new Date();
+ header.creationDate = (date.getTime() / 1000) + PdbUtil.TIME_DIFF;
+ header.modificationDate = header.creationDate;
+
+ header.numRecords = db.getRecordCount();
+ }
+
+
+ /**
+ * <p>Write out a PDB into the given <code>OutputStream</code>.</p>
+ *
+ * <p>First, write out the header data by using the
+ * <code>PdbHeader</code> <code>write</code> method. Next,
+ * calculate the RecordList section and write it out.
+ * Lastly, write out the bytes corresponding to each
+ * <code>Record</code>.</p>
+ *
+ * <p>The RecordList section contains a list of
+ * <code>Record</code> index info, where each <code>Record</code>
+ * index info contains:</p>
+ *
+ * <p><ul>
+ * <li>4 bytes local offset of the <code>Record</code> from the
+ * top of the PDB.</li>
+ * <li>1 byte of <code>Record</code> attribute.</li>
+ * <li>3 bytes unique <code>Record</code> ID.</li>
+ * </ul></p>
+ *
+ * <p>There should be a total of <code>header.numRecords</code>
+ * of <code>Record</code> index info</p>.
+ *
+ * @param os <code>OutputStream</code> to write out PDB.
+ *
+ * @throws IOException If I/O error occurs.
+ */
+ public void write(OutputStream os) throws IOException {
+
+ BufferedOutputStream bos = new BufferedOutputStream(os);
+ DataOutputStream dos = new DataOutputStream(bos);
+
+ // write out the PDB header
+ header.write(dos);
+
+ if (header.numRecords > 0) {
+
+ // compute for recOffset[]
+
+ int recOffset[] = new int[header.numRecords];
+ byte recAttr[] = new byte[header.numRecords];
+
+ // first recOffset will be at PdbUtil.HEADER_SIZE + all the
+ // record indices (@ 8 bytes each)
+ recOffset[0] = PdbUtil.HEADER_SIZE + (header.numRecords * 8);
+
+ int lastIndex = header.numRecords - 1;
+
+ for (int i = 0; i < lastIndex; i++) {
+
+ Record rec = db.getRecord(i);
+ int size = rec.getSize();
+ recAttr[i] = rec.getAttributes();
+
+ recOffset[i+1] = recOffset[i] + size;
+ }
+
+ // grab the last record's attribute.
+
+ Record lastRec = db.getRecord(lastIndex);
+ recAttr[lastIndex] = lastRec.getAttributes();
+
+
+ int uid = START_UNIQUE_ID;
+
+ for (int i = 0; i < header.numRecords; i++) {
+
+ // write out each record offset
+ dos.writeInt(recOffset[i]);
+
+ // write out record attribute (recAttr) and
+ // unique ID (uid) in 4 bytes (int) chunk.
+ // unique ID's have to be unique, thus
+ // increment each time.
+ int attr = (((int) recAttr[i]) << 24 );
+ attr |= uid;
+ dos.writeInt(attr);
+ uid++;
+ }
+
+ // write out the raw records
+
+ for (int i = 0; i < header.numRecords; i++) {
+
+ Record rec = db.getRecord(i);
+ byte bytes[] = rec.getBytes();
+ dos.write(bytes);
+ }
+
+ } else {
+
+ // placeholder bytes if there are no records in the list.
+ dos.writeShort(0);
+ }
+
+ dos.flush();
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java
new file mode 100755
index 000000000000..40a54730a320
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java
@@ -0,0 +1,165 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PdbHeader.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.xmerge.converter.palm;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+/**
+ * <p>Class used only internally by <code>PdbEncoder</code> and
+ * <code>PdbDecoder</code> to store, read and write a PDB header.</p>
+ *
+ * <p>Note that fields are intended to be accessible only at the
+ * package level.</p>
+ *
+ * <p>Some of the fields are internally represented using a
+ * larger type since Java does not have unsigned types.
+ * Some are not since they are not relevant for now.
+ * The <code>read</code> and <code>write</code> methods should
+ * handle them properly.</p>
+ *
+ * @author Herbie Ong
+ * @see PalmDB
+ * @see Record
+ */
+final class PdbHeader {
+
+
+ /** Name of the database. 32 bytes. */
+ byte[] pdbName = null;
+
+ /**
+ * Flags for the database. Palm UInt16. Unsignedness should be
+ * irrelevant.
+ */
+ short attribute = 0;
+
+ /** Application-specific version for the database. Palm UInt16. */
+ int version = 0;
+
+ /** Date created. Palm UInt32. */
+ long creationDate = 0;
+
+ /** Date last modified. Palm UInt32. */
+ long modificationDate = 0;
+
+ /** Date last backup. Palm UInt32. */
+ long lastBackupDate = 0;
+
+ /**
+ * Incremented every time a <code>Record</code> is
+ * added, deleted or modified. Palm UInt32.
+ */
+ long modificationNumber = 0;
+
+ /** Optional field. Palm UInt32. Unsignedness should be irrelevant. */
+ int appInfoID = 0;
+
+ /** Optional field. Palm UInt32. Unsignedness should be irrelevant. */
+ int sortInfoID = 0;
+
+ /** Database type ID. Palm UInt32. Unsignedness should be irrelevant. */
+ int typeID = 0;
+
+ /** Database creator ID. Palm UInt32. Unsignedness should be irrelevant. */
+ int creatorID = 0;
+
+ /** ??? */
+ int uniqueIDSeed = 0;
+
+ /** See numRecords. 4 bytes. */
+ int nextRecordListID = 0;
+
+ /**
+ * Number of Records stored in the database header.
+ * If all the <code>Record</code> entries cannot fit in the header,
+ * then <code>nextRecordList</code> has the local ID of a
+ * RecordList that contains the next set of <code>Record</code>.
+ * Palm UInt16.
+ */
+ int numRecords = 0;
+
+
+ /**
+ * Read in the data for the PDB header. Need to
+ * preserve the unsigned value for some of the fields.
+ *
+ * @param di A <code>DataInput</code> object.
+ *
+ * @throws IOException If any I/O error occurs.
+ */
+ public void read(DataInput in) throws IOException {
+
+ pdbName = new byte[PalmDB.NAME_LENGTH];
+ in.readFully(pdbName);
+ attribute = in.readShort();
+ version = in.readUnsignedShort();
+ creationDate = ((long) in.readInt()) & 0xffffffffL;
+ modificationDate = ((long) in.readInt()) & 0xffffffffL;
+ lastBackupDate = ((long) in.readInt()) & 0xffffffffL;
+ modificationNumber = ((long) in.readInt()) & 0xffffffffL;
+ appInfoID = in.readInt();
+ sortInfoID = in.readInt();
+ creatorID = in.readInt();
+ typeID = in.readInt();
+ uniqueIDSeed = in.readInt();
+ nextRecordListID = in.readInt();
+ numRecords = in.readUnsignedShort();
+ }
+
+
+ /**
+ * Write out PDB header data.
+ *
+ * @param out A <code>DataOutput</code> object.
+ *
+ * @throws IOException If any I/O error occurs.
+ */
+ public void write(DataOutput out) throws IOException {
+
+ out.write(pdbName);
+ out.writeShort(attribute);
+ out.writeShort(version);
+ out.writeInt((int) creationDate);
+ out.writeInt((int) modificationDate);
+ out.writeInt((int) lastBackupDate);
+ out.writeInt((int) modificationNumber);
+ out.writeInt(appInfoID);
+ out.writeInt(sortInfoID);
+ out.writeInt(typeID);
+ out.writeInt(creatorID);
+ out.writeInt(uniqueIDSeed);
+ out.writeInt(nextRecordListID);
+ out.writeShort(numRecords);
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java
new file mode 100755
index 000000000000..69cae6d69e58
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java
@@ -0,0 +1,109 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PdbUtil.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+package org.openoffice.xmerge.converter.palm;
+
+/**
+ * Contains common static methods and constants for use within the package.
+ *
+ * @author Herbie Ong
+ */
+public final class PdbUtil {
+
+ /** Difference in seconds from Jan 01, 1904 to Jan 01, 1970. */
+ final static long TIME_DIFF = 2082844800;
+
+ /** Encoding scheme used. */
+ final static String ENCODING = "8859_1";
+
+ /** Size of a PDB header in bytes. */
+ final static int HEADER_SIZE = 78;
+
+
+ /**
+ * <p>This method converts a 4 letter string into the Palm ID
+ * integer.</p>
+ *
+ * <p>It is normally used to convert the Palm creator ID string into
+ * the integer version of it. Also use for data types, etc.</p>
+ *
+ * @param s Four character <code>String</code>.
+ *
+ * @return Palm ID representing the <code>String</code>.
+ *
+ * @throws ArrayIndexOutOfBoundsException If <code>String</code>
+ * parameter contains less than four characters.
+ */
+ public static int intID(String s) {
+
+ int id = -1;
+ int temp = 0;
+
+ // grab the first char and put it in the high bits
+ // note that we only want 8 lower bits of it.
+ temp = (int) s.charAt(0);
+ id = temp << 24;
+
+ // grab the second char and add it in.
+ temp = ((int) s.charAt(1)) & 0x00ff;
+ id += temp << 16;
+
+ // grab the second char and add it in.
+ temp = ((int) s.charAt(2)) & 0x00ff;
+ id += temp << 8;
+
+ // grab the last char and add it in
+ id += ((int) s.charAt(3)) & 0x00ff;
+
+ return id;
+ }
+
+
+ /**
+ * This method converts an integer into a <code>String</code>
+ * given the Palm ID format.
+ *
+ * @param i Palm ID.
+ *
+ * @return <code>String</code> representation.
+ */
+ public static String stringID(int i) {
+
+ char ch[] = new char[4];
+ ch[0] = (char) (i >>> 24);
+ ch[1] = (char) ((i >> 16) & 0x00ff);
+ ch[2] = (char) ((i >> 8) & 0x00ff);
+ ch[3] = (char) (i & 0x00ff);
+
+ return new String(ch);
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java b/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java
new file mode 100644
index 000000000000..41b2a289a8c5
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java
@@ -0,0 +1,219 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: Record.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.xmerge.converter.palm;
+
+import java.io.OutputStream;
+import java.io.InputStream;
+import java.io.DataOutputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+/**
+ * <p>Contains the raw bytes for a <code>Record</code> in a PDB.</p>
+ *
+ * <p>Note that it is not associated with a <code>Record</code> number
+ * or ID.</p>
+ *
+ * @author Akhil Arora, Herbie Ong
+ * @see PalmDocument
+ * @see PalmDB
+ */
+public final class Record {
+
+ /** <code>Record</code> <code>byte</code> array. */
+ private byte[] data;
+
+ /** <code>Record</code> attributes. */
+ private byte attributes = 0;
+
+
+ /**
+ * Default constructor.
+ */
+ public Record() {
+
+ data = new byte[0];
+ }
+
+
+ /**
+ * <p>Constructor to create a <code>Record</code> filled with
+ * bytes.</p>
+ *
+ * <p>Note that this does not check for 64k <code>Record</code>
+ * sizes. User of this class must check for that.</p>
+ *
+ * @param d <code>byte</code> array contents for this object.
+ */
+ public Record(byte[] d) {
+
+ this(d, (byte) 0);
+ }
+
+
+ /**
+ * <p>Constructor to create a <code>Record</code> filled with
+ * bytes and assign <code>Record</code> attributes.</p>
+ *
+ * <p>Note that this does not check for 64k <code>Record</code>
+ * sizes. User of this class must check for that.</p>
+ *
+ * @param d <code>byte</code> array contents for this object.
+ * @param attrs <code>Record</code> attributes.
+ */
+ public Record(byte[] d, byte attrs) {
+
+ data = new byte[d.length];
+ attributes = attrs;
+ System.arraycopy(d, 0, data, 0, d.length);
+ }
+
+
+ /**
+ * This method returns the number of bytes in this object.
+ *
+ * @return Number of bytes in this object.
+ */
+ public int getSize() {
+
+ return data.length;
+ }
+
+
+ /**
+ * This method returns the contents of this <code>Object</code>.
+ *
+ * @return Contents in <code>byte</code> array
+ */
+ public byte[] getBytes() {
+
+ return data;
+ }
+
+
+ /**
+ * <p>This method returns the <code>Record</code> attributes.</p>
+ *
+ * <blockquote><pre>
+ * <code>Record</code> attributes consists of (from high to low bit)
+ *
+ * delete (1) - dirty (1) - busy (1) - secret (1) - category (4)
+ * </pre></blockquote>
+ *
+ * @return <code>Record</code> attribute.
+ */
+ public byte getAttributes() {
+
+ return attributes;
+ }
+
+
+ /**
+ * Write out the <code>Record</code> attributes and
+ * <code>Record</code> length followed by the data in this
+ * <code>Record</code> object.
+ *
+ * @param out The <code>OutputStream</code> to write the object.
+ *
+ * @throws IOException If any I/O error occurs.
+ */
+ public void write(OutputStream outs) throws IOException {
+
+ DataOutputStream out = new DataOutputStream(outs);
+ out.writeByte(attributes);
+ out.writeShort(data.length);
+ out.write(data);
+ }
+
+
+ /**
+ * Read the necessary data to create a PDB from
+ * the <code>InputStream</code>.
+ *
+ * @param in The <code>InputStream</code> to read data from
+ * in order to restore the <code>object</code>.
+ *
+ * @throws IOException If any I/O error occurs.
+ */
+ public void read(InputStream ins) throws IOException {
+
+ DataInputStream in = new DataInputStream(ins);
+ attributes = in.readByte();
+ int len = in.readUnsignedShort();
+ data = new byte[len];
+ in.readFully(data);
+ }
+
+
+ /**
+ * <p>Override equals method of <code>Object</code>.</p>
+ *
+ * <p>Two <code>Record</code> objects are equal if they contain
+ * the same bytes in the array and the same attributes.</p>
+ *
+ * <p>This is used primarily for testing purposes only for now.</p>
+ *
+ * @param obj A <code>Record</code> object to compare with
+ *
+ * @return true if obj is equal, otherwise false.
+ */
+ public boolean equals(Object obj) {
+
+ boolean bool = false;
+
+ if (obj instanceof Record) {
+
+ Record rec = (Record) obj;
+
+ checkLabel: {
+
+ if (rec.getAttributes() != attributes) {
+
+ break checkLabel;
+ }
+
+ if (rec.getSize() == data.length) {
+
+ for (int i = 0; i < data.length; i++) {
+
+ if (data[i] != rec.data[i]) {
+ break checkLabel;
+ }
+ }
+
+ bool = true;
+ }
+ }
+ }
+ return bool;
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/build.xml b/xmerge/java/org/openoffice/xmerge/converter/palm/build.xml
new file mode 100644
index 000000000000..21e3905c1445
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/build.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: build.xml,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+<project name="xmrg_jooxc_palm" default="main" basedir=".">
+
+ <!-- ================================================================= -->
+ <!-- settings -->
+ <!-- ================================================================= -->
+
+ <!-- project prefix, used for targets and build.lst -->
+ <property name="prj.prefix" value="xmrg"/>
+
+ <!-- name of this sub target used in recursive builds -->
+ <property name="target" value="xmrg_jooxc_palm"/>
+
+ <!-- relative path to project directory -->
+ <property name="prj" value="../../../../../.."/>
+
+ <!-- start of java source code package structure -->
+ <property name="java.dir" value="${prj}/java"/>
+
+ <!-- path component for current java package -->
+ <property name="package"
+ value="org/openoffice/xmerge/converter/palm"/>
+
+ <!-- define how to handle CLASSPATH environment -->
+ <property name="build.sysclasspath" value="ignore"/>
+
+ <!-- classpath settings for javac tasks -->
+ <path id="classpath">
+ <pathelement location="${build.class}"/>
+ </path>
+
+ <!-- set whether we want to compile with or without deprecation -->
+ <property name="deprecation" value="on"/>
+
+ <!-- ================================================================= -->
+ <!-- solar build environment targets -->
+ <!-- ================================================================= -->
+
+ <target name="build_dir" unless="build.dir">
+ <property name="build.dir" value="${out}"/>
+ </target>
+
+ <target name="solar" depends="build_dir" if="solar.update">
+ <property name="solar.properties"
+ value="${solar.bin}/solar.properties"/>
+ </target>
+
+ <target name="init" depends="solar">
+ <property name="build.compiler" value="classic"/>
+ <property file="${solar.properties}"/>
+ <property file="${build.dir}/class/solar.properties"/>
+ </target>
+
+ <target name="info">
+ <echo message="--------------------"/>
+ <echo message="${target}"/>
+ <echo message="--------------------"/>
+ </target>
+
+
+ <!-- ================================================================= -->
+ <!-- custom targets -->
+ <!-- ================================================================= -->
+
+ <!-- the main target, called in recursive builds -->
+ <target name="main" depends="info,prepare,compile"/>
+
+ <!-- prepare output directories -->
+ <target name="prepare" depends="init" if="build.class">
+ <mkdir dir="${build.dir}"/>
+ <mkdir dir="${build.class}"/>
+ </target>
+
+ <!-- compile java sources in ${package} -->
+ <target name="compile" depends="prepare" if="build.class">
+ <javac srcdir="${java.dir}"
+ destdir="${build.class}"
+ debug="${debug}"
+ deprecation="${deprecation}"
+ optimize="${optimize}">
+ <classpath refid="classpath"/>
+ <include name="${package}/PalmDB.java"/>
+ <include name="${package}/PdbDecoder.java"/>
+ <include name="${package}/PdbEncoder.java"/>
+ <include name="${package}/PdbHeader.java"/>
+ <include name="${package}/PdbUtil.java"/>
+ <include name="${package}/Record.java"/>
+ <include name="${package}/PalmDocument.java"/>
+ </javac>
+ </target>
+
+ <!-- clean up -->
+ <target name="clean" depends="prepare">
+ <delete includeEmptyDirs="true">
+ <fileset dir="${build.class}">
+ <patternset>
+ <include name="${package}/*.class"/>
+ </patternset>
+ </fileset>
+ </delete>
+ </target>
+
+</project>
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/palm/makefile.mk
new file mode 100644
index 000000000000..23caa32f98a3
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/makefile.mk
@@ -0,0 +1,36 @@
+#***************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#***************************************************************************
+
+TARGET=xmrg_jooxc_palm
+PRJ=../../../../../..
+
+.INCLUDE : ant.mk
+ALLTAR: ANTBUILD
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/package.html b/xmerge/java/org/openoffice/xmerge/converter/palm/package.html
new file mode 100644
index 000000000000..89fbd4580c9c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/package.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: package.html,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+<html>
+<head>
+<title>org.openoffice.xmerge.converter.palm package</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Provides classes for converting Palm database data to/from a
+<code>PalmDocument</code> object, which can be used by the framework.
+
+<p>This package provides classes that handle the writing of data to
+an <code>OutputStream</code> object for the
+{@link org.openoffice.xmerge.DocumentSerializer DocumentSerializer}
+interface for; as well as the reading of data from an <code>InputStream</code>
+object for the framework's
+{@link org.openoffice.xmerge.DocumentDeserializer DocumentDeserializer}
+interface. Both these framework interfaces are simply converters from
+server-side documents to device specific documents and vice-versa.
+Since all Palm databases have a general record oriented format, a Palm
+database converter specific I/O stream format is specified for the Palm
+sync client application to handle the byte stream in a generic way.
+This also means that Palm database converters should read and/or write
+using this I/O stream format as specified in the next section.</p>
+
+<a name="streamformat">
+<h2>Palm database converter specific I/O stream format</h2>
+</a>
+
+<p>Note that the format of the byte stream is not exactly that of a PDB
+file encoding. It does not need to contain the PDB header information
+nor record indices section. Instead, it contains the following ...</p>
+
+<pre>
+ set header
+ 4 bytes - creator id
+ 4 bytes - type id
+ 2 bytes - PDB header version
+ 2 bytes - PDB header attribute
+ unsigned 2 bytes - number of PDB data to follow
+
+ for each PDB,
+ 32 bytes - name of PDB i
+ unsigned 2 bytes - number of records in PDB i
+
+ for each record contained in PDB i,
+ 1 byte - record attributes
+ unsigned 2 bytes - size of record j in PDB i
+ x bytes - data
+</pre>
+
+<p>Note that each PDB section is appended by another if there is more
+than one.</p>
+
+<p>Since the <code>PalmDocument</code> class takes care of the writing
+and reading of this format through its <code>write</code> and
+<code>read</code> methods, respectively, this format shall also be
+referred to as the <b>PalmDocument stream format</b>.</p>
+
+<h2>Usage of the classes for the specified I/O stream</h2>
+
+<p>When converting from a server document to device document(s), the
+framework requires writing the device document(s) to an
+<code>OutputStream</code> object via the <code>DocumentSerializer</code>
+interface. Note that a single server document may be converted
+into multiple PDB's on the Palm device. Each worksheet in the document
+is converted into a <code>PalmDocument</code> . Thus, if there is more
+than one worksheet in the document, more than one <code>PalmDocument</code>
+will be produced by the <code>DocumentSerializer</code>.</p>
+
+<p>A <code>DocumentSerializer</code> creates a <code>ConvertData</code> object,
+which contains all of the <code>PalmDocuments</code>. The
+{@link org.openoffice.xmerge.converter.palm.PalmDocument#write write}
+method to write to the given <code>OutputStream</code>. The <code>PalmDocument</code>
+object will take care of writing the data in the
+<a href=#streamformat>specified format</a>.</p>
+
+<p>A <code>DocumentDeserializer</code> can use the <code>PalmDocument</code> object's
+{@link org.openoffice.xmerge.converter.palm.PalmDocument#read read}
+method to fill in all the <code>PalmDocument</code> object's data.</p>
+
+<h2>PDB file encoding/decoding</h2>
+
+<p>The <code>PalmDocument</code> object's read and write functions are provided
+by the <code>PdbDecoder</code> and <code>PdbEncoder</code> objects. The
+<code>PdbEncoder</code> class provides the functionality of encoding a
+<code>PalmDB</code> object into an <code>InputStream</code>, while the
+<code>PdbDecoder</code> class provides the functionality of decoding a
+PDB file into an <code>OutputStream</code>.</p>
+
+<p>Refer to the class description of each for usage.</p>
+
+<h2>Important Note</h2>
+
+<p>Methods in these classes are not thread safe for performance reasons.
+Users of these classes will have to make sure that the usage of these classes
+are done in a proper manner. Possibly more on this later.</p>
+
+<h2>TODO list</h2>
+
+<p><ol>
+<li>Merge the PalmDB, PdbDecoder and PdbEncoder classes into the
+ PalmDocument class.</li>
+<li>After reading more on the palm file format spec, I realized
+ that there are certain optional fields that may need to be addressed
+ still, like the appInfo block and sortInfo block.</li>
+<li>The current PdbDecoder only returns a PalmDB object. There are other
+ information that we may want to expose from the PDB decoding process.</li>
+<li>Investigate on different language encoding on the Palm and how that
+ affects the PDB name.</li>
+</ol></p>
+
+</body>
+</html>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/README b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/README
new file mode 100644
index 000000000000..924f32fe0824
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/README
@@ -0,0 +1,50 @@
+The following is an outline of the usage of this test suite.
+
+Requirements
+^^^^^^^^^^^^
+The following are required for these qa scripts to run correctly.
+ 1. POSE: the Palm OS Emulator. This is available from the PalmOS website.
+ 2. A Palm pilot rom. Also available from Palm.
+ 3. Compiled xmerge jar files (xmerge.jar, aportisdoc.jar etc.)
+ 4. Xerces.jar: required by the xmerge framework. This is available from org.apache.com.
+
+
+
+Test directory Contents
+^^^^^^^^^^^^^^^^^^^^^^^
+This test environment consists on 3 directories.
+ 1. bin : This contains some helper scripts that are used by the test environment but can be used in a standalone fashion.
+ 2. qa : This directory contains the files necessary to run the POSE emulator and to compare this results of tests with a set of verified (golden-data) files.
+ 3. qa-wrapper: This directory contains some wrapper scripts and environment files, that allow a user to change the environment settings, without have to change the POSE control code itself.
+
+Setting up the environment
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+ The environment can be changes to reflect a particular users environment, by editing or creating an environment file. This files are usually kept in the qa-wrapper/env directory. These environment settings can then be used when running the scripts.
+
+Running the Scripts
+^^^^^^^^^^^^^^^^^^^
+ Once the environment file has been created, the test scripts can be run by executing the "run-convtest" script in the qa-wrapper/bin directory. This file takes the following arguments
+
+ run-convtest -env <ENVFILE> [-name RUNNAME]
+
+<ENVFILE> is the environment file to use
+optional <RUNNAME> This can be the name of the user running the scripts. This is used to name a directory for the test results to be kept in.
+
+ e.g. run-convtest -env ../env/master.env
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/README b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/README
new file mode 100644
index 000000000000..36fbcc6e1298
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/README
@@ -0,0 +1,6 @@
+To run the spose script, you must set the following environmental variables:
+
+ POSE2_EXE = Directory and name of the POSE executable file.
+ POSE3_EXE = Directory and name of the POSE executable file.
+ POSE_PRC = Directory containing the PRC files to be loaded
+ into the emulator
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/rd b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/rd
new file mode 100755
index 000000000000..db2dc56aee6b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/rd
@@ -0,0 +1,24 @@
+#!/bin/ksh
+#
+# Directories commonly used by this script...
+#
+
+#export LBHOME=$ZPHOME/lib
+#export CVHOME=$ZPHOME/converters
+#export CVHOME=/export/home/test/qadir/qa-new/classes
+
+# Set up classpath to include needed ZenSync jars. Honor the users
+# CLASSPATH by leaving it first. This allows users to specify their
+# own versions of the jar files in their CLASSPATH if they wish to
+# override these defaults.
+#
+
+export CLASSPATH=$CLASSES_DIR/xerces.jar:$CLASSES_DIR/jmc.jar:$CLASSES_DIR/xmerge.jar:$CLASSES_DIR/minicalc.jar:$CLASSES_DIR/aportisdoc.jar:$CLASSES_DIR/wordsmith.jar
+
+echo "The classpath is $CLASSPATH"
+
+# Run the test driver, passing along args.
+#
+# java com.sun.star.comp.documentconversion.test.Driver $*
+java -cp $CLASSPATH org.openoffice.xmerge.test.Driver $*
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/spose b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/spose
new file mode 100755
index 000000000000..29f6a9fe5218
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/spose
@@ -0,0 +1,108 @@
+#!/bin/perl
+#
+# spose - start pose
+#
+
+use Getopt::Std;
+
+# Location of needed files
+#
+$pose2_exe = $ENV{'POSE2_EXE'};
+$pose3_exe = $ENV{'POSE3_EXE'};
+$pose_prc = $ENV{'POSE_PRC'};
+
+
+if (getopts('23qmwo:r:d:v') != 1)
+{
+ &usage();
+}
+
+$apps_load = "";
+
+if ($opt_q)
+{
+ &add_app("$pose_prc/Quickword.PRC");
+}
+if ($opt_m)
+{
+ &add_app("$pose_prc/MiniCalc.prc");
+}
+if ($opt_w)
+{
+ &add_app("$pose_prc/WordSmith.PRC");
+}
+if ($opt_o)
+{
+ &add_app("$opt_o");
+}
+if ($opt_r)
+{
+ $run_prog .= "-run_app $opt_r";
+}
+if ($opt_d)
+{
+ $directory = $opt_d;
+ @files = `/bin/ls -1 $directory/*.pdb`;
+
+ for ($i=0; $i <= $#files; $i++)
+ {
+ $add_file = "$files[$i]";
+ chomp $add_file;
+ &add_app("$add_file");
+ }
+}
+
+if ($opt_3)
+{
+ $pose_exe = $pose3_exe;
+}
+else
+{
+ $pose_exe = $pose2_exe;
+}
+if ($pose_exe eq "")
+{
+ print "\nPose not found: Please set \n POSE2_EXE\n or POSE3_EXE\n";
+ exit 0;
+}
+if ($opt_v)
+{
+ print ("\n$pose_exe $apps_load $run_prog &\n\n");
+}
+else
+{
+ system ("$pose_exe $apps_load $run_prog &");
+}
+
+exit 0;
+
+sub usage
+{
+ print "\nUsage: getopt [ -m ] [ -q ] [ -w ] [ -o <PrcFile> ] [ -r <RunProg> ]\n";
+ print " -2 Runs pose version 3.2 [ current default ]\n";
+ print " -3 Runs pose version 3.3\n";
+ print " -d Load all PDB files in specified directory\n";
+ print " -m Load MiniCalc PRC file\n";
+ print " -q Load QuickWord PRC file\n";
+ print " -w Load WordSmith PRC file\n";
+ print " -o <PrcFile> Other PRC files to load\n";
+ print " -r <RunProg> Program to run on startup\n";
+ print " -v Display the command instead of running\n\n";
+ exit(-1);
+}
+
+sub add_app
+{
+ my $new_app = $_[0];
+
+ if ($apps_load ne "")
+ {
+ $apps_load .= ",";
+ }
+ else
+ {
+ $apps_load = "-load_apps ";
+ }
+
+ $apps_load .= "$new_app";
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/verify_sane.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/verify_sane.pl
new file mode 100755
index 000000000000..e0f5e4605cc3
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/verify_sane.pl
@@ -0,0 +1,112 @@
+#!/usr/bin/perl
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: verify_sane.pl,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+####################################################################
+# File Name: template.pl
+# Version : 1.0
+# Project : XMerge
+# Author : Brian Cameron
+# Date : 5th Sept. 2001
+#
+#
+# Takes x and y from the command line and taps the screen there.
+# Assumes pose is already running.
+#
+##########################################################################
+
+use POSIX "sys_wait_h"; # Need this for waitpid with WNOHANG
+use EmRPC; # EmRPC::OpenConnection, CloseConnection
+use EmFunctions;
+use EmUtils;
+
+if ($#ARGV != 0)
+{
+ print "\nUsage: $0 timeout\n\n";
+ exit -1;
+}
+
+$timeout = $ARGV[0];
+
+if (!defined($up_pid = fork()))
+{
+ print "ERROR, problem forking.\n"
+}
+elsif ($up_pid)
+{
+ print "\nChecking to see if pose is started properly.\n";
+
+ # Parent process
+ #
+ sleep($timeout);
+
+ waitpid($up_pid, WNOHANG);
+
+ if (kill(0, $up_pid))
+ {
+ print "Pose did not start successfully...\n";
+ kill(9, $up_pid);
+ exit(-1);
+ }
+ else
+ {
+ # The child process exited okay, so we know it will not
+ # hang...but the open_connection will just die if pose
+ # isn't started...so try it in the parent.
+ #
+ open_connection();
+ close_connection();
+
+ print "Verified pose started successfully...\n";
+ exit(0);
+ }
+}
+else
+{
+ # Child process - Try to open/close the connection. This
+ # can hang if pose did not start properly...
+ #
+ open_connection();
+ close_connection();
+}
+
+sub open_connection
+{
+ print "opening connection\n";
+ EmRPC::OpenConnection(6415, "localhost");
+}
+
+sub close_connection
+{
+ print "closing connection\n";
+ EmRPC::CloseConnection();
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_comparator.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_comparator.pl
new file mode 100755
index 000000000000..67ab1d43dbcd
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_comparator.pl
@@ -0,0 +1,259 @@
+#!/usr/bin/perl
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: qa_comparator.pl,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+$compare_home = $ENV{'QA_COMPARATOR_HOME'};
+
+if ($ENV{'CLASSPATH'})
+{
+ $classpath_val = "$compare_home:$ENV{'CLASSPATH'}";
+}
+else
+{
+ $classpath_val = "$compare_home";
+}
+
+print "classpath is $classpath_val\n";
+
+$list_file="";
+$orig_dir="";
+$new_dir="";
+$diff_type="";
+
+####### BEGIN MAIN ##############
+$cmdline_len = @ARGV;
+if ($cmdline_len <= 0)
+{
+ print_usage();
+ exit (0);
+}
+
+process_cmdline(@ARGV);
+print_env();
+open (LOGFILE, ">$logfile") || die "Cannot open log file $logfile";
+if ($test_list ne "")
+{
+ open (TESTLIST, $test_list) || die "Couldn't open diff list file $test_list";
+
+ while (<TESTLIST>)
+ {
+ chomp $_;
+ process_diff(get_file_title($_));
+ }
+}
+close TESTLIST;
+close LOGFILE;
+
+####### END MAIN ##############
+
+sub process_diff
+{
+# $_[0] =~ tr/A-Z/a-z/;
+
+ # chdir to the output directory so the temporary files created by
+ # the java programs are put in the right place.
+ #
+ chdir ($xml_new);
+
+ if ($diff_type eq "xml")
+ {
+ # Ugly hack, probably a way to tell xerces directly that the dtd's
+ # are in $compare_home/dtd.
+ #
+ `cp $compare_home/dtd/* $xml_new`;
+
+# $cmd = "java -classpath $classpath_val XmlWrapper $xml_orig/$_[0].sxw $xml_new/$_[0].sxw";
+ $cmd = "java -classpath $classpath_val XmlWrapper $xml_orig/$_[0] $xml_new/$_[0]";
+ print "Executing: $cmd\n";
+ $val = system($cmd)/256;
+ if ($val == 2)
+ {
+# print LOGFILE "$_[0]|TRUE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n";
+ print LOGFILE "$_[0]|TRUE|$xml_orig/$_[0]|$xml_new/$_[0]\n";
+ }
+ elsif($val == 3)
+ {
+# print LOGFILE "$_[0]|FALSE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n";
+ print LOGFILE "$_[0]|FALSE|$xml_orig/$_[0]|$xml_new/$_[0]\n";
+ }
+ else
+ {
+# print LOGFILE "$_[0]|ERROR|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n";
+ print LOGFILE "$_[0]|ERROR|$xml_orig/$_[0]|$xml_new/$_[0]\n";
+ }
+ }
+ elsif ($diff_type eq "pdb")
+ {
+# $cmd = "java -classpath $classpath_val SimplePdbCompare $pdb_orig/$_[0].pdb $pdb_new/$_[0].pdb\n";
+ $cmd = "java -classpath $classpath_val SimplePdbCompare $pdb_orig/$_[0] $pdb_new/$_[0]\n";
+ print "Executing: $cmd\n";
+ $val = system($cmd)/256;
+ if ($val == 2)
+ {
+# print LOGFILE "$_[0]|TRUE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n";
+ print LOGFILE "$_[0]|TRUE|$pdb_orig/$_[0]|$pdb_new/$_[0]\n";
+ }
+ elsif($val == 3)
+ {
+# print LOGFILE "$_[0]|FALSE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n";
+ print LOGFILE "$_[0]|FALSE|$pdb_orig/$_[0]|$pdb_new/$_[0]\n";
+ }
+ else
+ {
+# print LOGFILE "$_[0]|ERROR|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n";
+ print LOGFILE "$_[0]|ERROR|$pdb_orig/$_[0]|$pdb_new/$_[0]\n";
+ }
+ }
+ else
+ {
+ die "Don't understand test type of $diff_type.";
+ }
+}
+
+sub process_cmdline
+{
+ foreach $i (@_)
+ {
+ @arg= split('=', $i);
+ @arg[0] =~ tr/A-Z/a-z/;
+
+ if (@arg[0] eq "-pdb-orig")
+ {
+ $pdb_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "-pdb-new")
+ {
+ $pdb_new=$arg[1];
+ }
+ elsif (@arg[0] eq "-xml-orig")
+ {
+ $xml_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "-xml-new")
+ {
+ $xml_new=$arg[1];
+ }
+ elsif (@arg[0] eq "-env")
+ {
+ set_env_from_props($arg[1]);
+ }
+ elsif (@arg[0] eq "-list")
+ {
+ $test_list = $arg[1];
+ }
+ elsif (@arg[0] eq "-one")
+ {
+ $infile = $arg[1];
+ }
+ elsif (@arg[0] eq "-type")
+ {
+ $diff_type = $arg[1];
+ chomp $diff_type;
+ }
+ elsif (@arg[0] eq "-log")
+ {
+ $logfile = $arg[1];
+ }
+ else
+ {
+ print_usage();
+ die "Incorrect command line. Don't understand $i";
+ }
+ }
+}
+
+sub set_env_from_props
+{
+ open(PROPSFILE, $_[0]) || die "Could not open properties file";
+
+ while (<PROPSFILE>)
+ {
+ chomp $_;
+ @arg = split('=', $_);
+ @arg[0] =~ tr/a-z/A-Z/;
+ $len = @arg;
+ if ($len != 2)
+ {
+ die "Malformed property in $ARGV[0]";
+ }
+
+ if (@arg[0] eq "PDB_ORIG")
+ {
+ $pdb_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "PDB_NEW")
+ {
+ $pdb_new=$arg[1];
+ }
+ elsif (@arg[0] eq "XML_ORIG")
+ {
+ $xml_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "XML_NEW")
+ {
+ $xml_new=$arg[1];
+ }
+
+ }
+ close PROPSFILE;
+}
+
+sub print_usage
+{
+ print "Usage : compartor.pl - compare Office or pdb files\n";
+ print "\t-one=<file> :\t\t individual test case file to run\n";
+ print "\t-list=<file> :\t\t list of test case files\n";
+ print "\t-env=<file> :\t\t Properites like file defining env\n";
+ print "\t-pdb-orig=<path> :\t directory to hold original pdb files\n";
+ print "\t-pdb-new=<path> :\t directory to hold new pdb files\n";
+ print "\t-xml-orig=<path> :\t directory to hold original office documents\n";
+ print "\t-xml-new=<path> :\t directory to hold new office documents\n";
+ print "\t-type=<xml|pdb> :\t Invokes the merge option when converting\n";
+ print "\t-log=<logfile> :\t Save results to logfile.\n";
+}
+
+sub print_env
+{
+ print "Using the following environment:\n";
+ print "\tPDB_ORIG = $pdb_orig\n";
+ print "\tPDB_NEW = $pdb_new\n";
+ print "\tXML_ORIG = $xml_orig\n";
+ print "\tXML_NEW = $xml_new\n\n";
+}
+
+sub get_file_title
+{
+ @paths = split('\/', $_[0]);
+ $len = @paths;
+ return @paths[$len-1];
+# @names = split('\.', @paths[$len-1]);
+# return $names[0];
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_test_driver.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_test_driver.pl
new file mode 100755
index 000000000000..f3ca7195b975
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_test_driver.pl
@@ -0,0 +1,848 @@
+#!/usr/bin/perl
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: qa_test_driver.pl,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+####################################################################
+# File Name: test_driver.pl
+# Version : 1.0
+# Project : Xmerge
+# Author : Brian Cameron
+# Date : 5th Sept. 2001
+#
+#
+# This script does the following:
+#
+# Processes the input file, and runs the tests specified in that
+# file. This will do the following for each test:
+#
+# 1. Convert a file from XML to PDB format
+# 2. Starts up the Palm OS emulator with the appropriate program
+# running and the converted file loaded the program.
+# 3. Makes automated changes as specified in the inputfile to
+# this script..
+# 4. Returns to the main applications window.
+#
+# Parameter
+# Filename to convert and change
+#
+##########################################################################
+
+# Turn on auto-flushing
+#
+$|=1;
+
+use EmRPC;
+
+# Directory where converterlib is located...
+#
+#use lib "/export/home/test/qadir/qa/lib";
+use lib $ENV{'QA_LIB_HOME'};
+use converterlib;
+
+#-------------------- Start of main script ------------------------------------
+
+# Environmental Settings
+
+$pose_exe = "";
+$pose_prc = "";
+$test_list = "";
+$infile = "";
+$merge_opt = 0;
+# if testcase hasn't completed in 10 mins, then kill it off
+$testcase_timeout=600;
+
+# You may need to change this from the default if your pose emulator
+# starts faster or slower than mine.
+#
+if ($ENV{'POSE_TIMEOUT'})
+{
+ $pose_timeout = "$ENV{'POSE_TIMEOUT'}";
+}
+else
+{
+ $pose_timeout = 15;
+}
+
+$cmdline_len = @ARGV;
+if ($cmdline_len <= 0)
+{
+ print_usage();
+ exit (0);
+}
+
+&process_cmdline(@ARGV);
+&print_env();
+&verify_env_options();
+
+# Make the output directories with timestamps included in the
+# directory names.
+#
+mkdir $pdb_orig, 0777 || die "can not create directory <$pdb_orig>.";
+`chmod 777 $pdb_orig`;
+mkdir $pdb_new, 0777 || die "can not create directory <$pdb_new>.";
+`chmod 777 $pdb_new`;
+mkdir $xml_new, 0777 || die "can not create directory <$xml_new>.";
+`chmod 777 $xml_new`;
+
+&verify_prcs_exist("DBExporter.prc");
+
+if ($test_list ne "")
+{
+ open (TESTLIST, $test_list) || die "Couldn't open testcase list file $test_list";
+
+ while (<TESTLIST>)
+ {
+ &process_testcase($_);
+ }
+}
+elsif ($infile ne "")
+{
+ if (!defined($child_pid = fork()))
+ {
+ # there was an error forking a process
+ print "ERROR: Unable to fork process\n";
+ die "ERROR: Unable to fork process\n";
+ }
+ elsif ($child_pid)
+ {
+ # this is the parent process
+ # run the actual test here
+print "********\tPARENT (pid = $$): process_testcase...\n";
+ &process_testcase($infile);
+print "********\tPARENT (pid = $$): ...process_testcase finished normally\n";
+
+ # test finished normally, so kill the monitor
+ # that is running in the child process
+print "********\tPARENT (pid = $$): kill child process ($child_pid)\n";
+print "********\tPARENT Before:\n";
+system( "/usr/bin/ptree" );
+ kill( $child_pid );
+ kill( 9, $child_pid );
+print "********\tPARENT After:\n";
+system( "/usr/bin/ptree" );
+ }
+ else
+ {
+print "********\tCHILD (pid = $$): sleep for $testcase_timeout seconds\n";
+ # this is the child process
+ # wait on the test running in the parent, and
+ # kill it if it hasn't finished on time
+ sleep( $testcase_timeout );
+
+ # if the parent hasn't killed this process before it
+ # gets here, then it's probably hung, so we need to
+ # kill it.
+ print "********\tCHILD (pid = $$): TEST HUNG? still "
+ ."running after [$testcase_timeout] seconds - "
+ ."need to kill test process\n";
+ $parent = getppid;
+
+ if ( $parent != 1 ) {
+ print "********\nCHILD (pid = $$): Killing process ($parent)\n";
+ kill( $parent );
+ kill( 9, $parent );
+ } else {
+ # If we cannot get the ppid, then the parent might
+ # have died abnormally, before it got a chance to
+ # kill this (child) process.
+ print "********\nCHILD (pid = $$): cannot determine ppid - "
+ ."terminating\n";
+system( "/usr/bin/ptree" );
+ exit(2);
+ }
+
+ exit(1);
+ }
+}
+else
+{
+ die ("You didn't supply any test cases to process");
+}
+
+print "Finished.\n";
+exit(0);
+
+#-------------------- End of main script ----------------------------------------
+
+#--------------------------------------------------------------------------------
+# Various sub routines
+#--------------------------------------------------------------------------------
+
+# process_testcase
+# infile - test case file name
+#
+# This is the main driver function
+# Opens the infile, reads it in parses it, runs the appropriate conversion
+# starts pose and load the file into the emulator. It launches the
+# appropriate editor and then runs the commands specified in the test case.
+# It then exports the file and saves it locally. Finally it is converted
+# back to the original office format.
+#
+sub process_testcase
+{
+ my $infile = $_[0];
+ my $convert_file = "";
+ my $rc;
+
+ # Process the inputfile
+ #
+ open (INFILE, $infile) || die "Failed to open test case <$infile>";
+
+ $running_testtype = "";
+
+ # Process the input file.
+ #
+ while ($c_inline = <INFILE>)
+ {
+ chomp $c_inline;
+ @entry = split('\|', $c_inline);
+
+ # Process TEST
+ #
+ if ($c_inline =~ /^ *#/ || $c_inline =~ /^[ \t]*$/)
+ {
+ # skip comments and blank lines.
+ #
+ next;
+ }
+ elsif ("$entry[0]" eq "TEST")
+ {
+ # Close the test if one is running.
+ #
+ &close_program($convert_file);
+ $running_testtype = "";
+
+ $valid_test = 0;
+
+ if ($#entry != 3)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ else
+ {
+ # Start the test.
+ #
+ print "\nStarting test: $entry[1]\n";
+ $convert_file = $entry[3];
+
+ if ("$entry[2]" =~ /[Qq][Uu][Ii][Cc][Kk][Ww][Oo][Rr][Dd]/)
+ {
+ $xml_extension = "sxw";
+ $convert_to = "application/x-aportisdoc";
+
+ # Convert XML file to pdb format.
+ #
+ $rc = &convert_to_pdb("$xml_orig", $convert_file, $xml_extension ,
+ $convert_to,"$pdb_orig");
+ if ($rc != 0)
+ {
+ print "\nERROR, problem converting file $convert_file\n\n";
+ }
+ else
+ {
+ # Start pose
+ #
+ $rc = &start_pose("$pose_exe",
+ "$pose_prc/Quickword.PRC,$pose_prc/DBExporter.prc,$pdb_orig/$convert_file.pdb",
+ "Quickword", $pose_timeout);
+
+ if ($rc == 0)
+ {
+ &start_quickword();
+ $valid_test = 1;
+ $running_testtype = "QUICKWORD";
+ print "\npose launched, begin automated test sequence for QuickWord\n";
+ }
+ else
+ {
+ &kill_pose();
+ $running_testtype = "";
+ }
+ }
+ }
+ elsif ("$entry[2]" =~ /[Mm][Ii][Nn][Ii][Cc][Aa][Ll][Cc]/)
+ {
+ $xml_extension = "sxc";
+ $convert_to = "application/x-minicalc";
+
+ # Convert XML file to pdb format.
+ #
+ $rc = &convert_to_pdb("$xml_orig", $convert_file,
+ $xml_extension, $convert_to,"$pdb_orig");
+ if ($rc != 0)
+ {
+ print "\nERROR, problem converting file $convert_file\n\n";
+ }
+ else
+ {
+ # Get minicalc PDB file names, since an SXC file can
+ # be converted to more than one.
+ #
+ $pdb_files="";
+ $i = 1;
+ while (-f "$pdb_orig/$convert_file-Sheet$i.pdb")
+ {
+ if ($i > 1)
+ {
+ $pdb_files .= ",";
+ }
+ $pdb_files .= "$pdb_orig/$convert_file-Sheet$i.pdb";
+ $i++;
+ }
+ $number = $i-1;
+
+ # Start pose
+ #
+ $rc = &start_pose("$pose_exe",
+ "$pose_prc/MiniCalc.prc,$pose_prc/DBExporter.prc,$pdb_files",
+ "MiniCalc", $pose_timeout);
+
+ if ($rc == 0)
+ {
+ &start_minicalc();
+ $valid_test = 1;
+ $running_testtype = "MINICALC";
+ print "pose launched, begin automated test sequence for MiniCalc\n";
+ }
+ else
+ {
+ &kill_pose();
+ $running_testtype = "";
+ }
+ }
+ }
+ else
+ {
+ print "\nERROR, invalid extension <$entry[2]>\n\n";
+ }
+ }
+ }
+
+ # Process DB_EXPORT
+ #
+ elsif ("$entry[0]" eq "DB_EXPORT")
+ {
+ if ($#entry != 1)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ else
+ {
+ &db_export($entry[1]);
+ }
+ }
+
+ # Process TAP_APPLICATIONS
+ #
+ elsif ("$entry[0]" eq "TAP_APPLICATIONS")
+ {
+ if ($#entry != 0)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ else
+ {
+ &tap_applications(0);
+ }
+ }
+
+ # Process ENTER_STRING_AT_LOCATION
+ #
+ elsif ("$entry[0]" eq "ENTER_STRING_AT_LOCATION")
+ {
+ if ($#entry != 3)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &enter_string_at_location($entry[1], $entry[2],
+ $entry[3], $running_testtype);
+ }
+ }
+
+ # Process TAP_PEN
+ #
+ elsif ("$entry[0]" eq "TAP_PEN")
+ {
+ if ($#entry != 2)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &pose_tap_pen($entry[1], $entry[2], 0);
+ }
+ }
+
+ # Process TAP_BUTTON
+ #
+ elsif ("$entry[0]" eq "TAP_BUTTON")
+ {
+ if ($#entry != 1)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &pose_tap_button($entry[1], 0);
+ }
+ }
+
+ # Process TAP_PEN_HARD
+ #
+ elsif ("$entry[0]" eq "TAP_PEN_HARD")
+ {
+ if ($#entry != 2)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &pose_tap_pen_hard($entry[1],$entry[2], 0);
+ }
+ }
+
+
+ # Process SLEEP
+ #
+ elsif ("$entry[0]" eq "SLEEP")
+ {
+ if ($#entry != 1)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ else
+ {
+ &pose_sleep($entry[1]);
+ }
+ }
+
+ # Process MINICALC_ENTER_CELL
+ #
+ elsif ("$entry[0]" eq "MINICALC_ENTER_CELL")
+ {
+ if ($#entry != 3)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &minicalc_enter_cell($entry[1], $entry[2], $entry[3]);
+ }
+ }
+
+ # Process QUICKWORD_FIND_REPLACE
+ #
+ elsif ("$entry[0]" eq "QUICKWORD_FIND_REPLACE")
+ {
+ if ($#entry != 2)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &quickword_find_replace($entry[1], $entry[2]);
+ }
+ }
+ else
+ {
+ print "\nERROR, invalid line <$c_inline>\n";
+ }
+ }
+
+ &close_program($convert_file);
+}
+
+# close_program
+# convert_file - file to export
+#
+# closes the program running in pose and kills pose
+#
+sub close_program
+{
+ my $convert_file = $_[0];
+
+ if ($running_testtype eq "QUICKWORD")
+ {
+ print "QuickWord test completed.\n";
+ &close_program_quickword($convert_file);
+ }
+ elsif ($running_testtype eq "MINICALC")
+ {
+ print "MiniCalc test completed.\n";
+ &close_program_minicalc($convert_file, $number);
+ }
+}
+
+# close_program_quickword
+# convert_file - file to export
+#
+# Closes quickword and kills pose
+#
+sub close_program_quickword
+{
+ my $convert_file = $_[0];
+ my $error_file = "./error.txt";
+ my $rc;
+
+ &close_quickword();
+
+ &db_export($convert_file);
+ print "Moving /tmp/$convert_file.pdb to $pdb_new\n";
+ `mv /tmp/$convert_file.pdb $pdb_new`;
+ `chmod 666 $pdb_new/$convert_file.pdb`;
+
+ &close_connection(1);
+ &kill_pose();
+ print "\nFinishing test...\n";
+
+ # The path of where to put the error file should be specified
+ # in the properties file. Not sure if it is really necessary
+ # to put this out to a separate file. STDOUT should be fine.
+ #
+ $rc = &convert_to_xml($xml_new, $xml_orig,
+ "$pdb_new/$convert_file.pdb", "application/x-aportisdoc" ,
+ "sxw", $convert_file, $merge_opt);
+ if ($rc != 0)
+ {
+ print "\nERROR, problem converting file $pdb_new/$convert_file.pdb\n\n";
+ }
+}
+
+# close_program_minicalc
+# convert_file - file to export
+#
+# Closes minicalc and kills pose
+#
+sub close_program_minicalc
+{
+ my $convert_file = $_[0];
+ my $num_files = $_[1];
+ my $list="";
+ my $rc;
+
+ &close_minicalc();
+
+ for ($a=1; $a <= $num_files; $a++)
+ {
+ &db_export("$convert_file-Sheet$a");
+ print "Moving /tmp/$convert_file-Sheet$a.pdb to $pdb_new/\n";
+ `mv /tmp/$convert_file-Sheet$a.pdb $pdb_new/`;
+ `chmod 666 $pdb_new/$convert_file-Sheet$a.pdb`;
+ }
+
+ &close_connection(1);
+ &kill_pose();
+ print "\nFinishing test...\n";
+
+ for ($a=1; $a <= $num_files; $a++)
+ {
+ $list .="$pdb_new/$convert_file-Sheet$a.pdb "
+ }
+
+ $rc = &convert_to_xml($xml_new, $xml_orig, "$list",
+ "application/x-minicalc", "sxc", $convert_file, $merge_opt);
+ if ($rc != 0)
+ {
+ print "\nERROR, problem converting file(s) $list\n\n";
+ }
+
+ &pose_sleep(5);
+}
+
+# print_usage
+#
+# prints the usage for this program.
+#
+sub print_usage
+{
+ print "Usage : test_driver.pl\n";
+ print "\t-test=<file> \t\t: individual test case file to run\n";
+ print "\t-list=<file> \t\t: list of test case files\n";
+ print "\t-env=<file> \t\t: Properites like file defining env\n";
+ print "\t-pose-exe=<fullpath> \t: path to pose executable\n";
+ print "\t-pose-prc=<path> \t: path to directory holding prc files\n";
+ print "\t-pdb-orig=<path> \t: directory to hold original pdb files\n";
+ print "\t-pdb-new=<path> \t: directory to hold new pdb files\n";
+ print "\t-xml-orig=<path> \t: directory to hold original office documents\n";
+ print "\t-xml-new=<path> \t: directory to hold new office documents\n";
+ print "\t-merge \t: Invokes the merge option when converting\n";
+ print "\t \t from PDB back to XML.\n";
+}
+
+# print_env
+#
+# Prints the current environment.
+#
+sub print_env
+{
+ print "\nUsing the following environment:\n";
+ print "\tPOSE_EXE = $pose_exe\n";
+ print "\tPOSE_PRC = $pose_prc\n";
+ print "\tPDB_ORIG = $pdb_orig\n";
+ print "\tPDB_NEW = $pdb_new\n";
+ print "\tXML_ORIG = $xml_orig\n";
+ print "\tXML_NEW = $xml_new\n";
+}
+
+# process_cmdline
+#
+# command line options come in as key/value pairs.
+# read them and set the appropriate global variable
+#
+# Sets these globals: pose_exe, pose_prc, xml_orig, xml_new_dir,
+# xml_new, pdb_orig_dir, pdb_orig, pdb_new_dir, pdb_new.
+#
+sub process_cmdline
+{
+ foreach $i (@_)
+ {
+ my @arg= split('=', $i);
+ @arg[0] =~ tr/A-Z/a-z/;
+
+ if (@arg[0] eq "-pose-exe")
+ {
+ $pose_exe=$arg[1];
+ }
+ elsif (@arg[0] eq "-pose-prc")
+ {
+ $pose_prc=$arg[1];
+ }
+ elsif (@arg[0] eq "-pdb-orig")
+ {
+ $pdb_orig_dir=$arg[1];
+ $pdb_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "-pdb-new")
+ {
+ $pdb_new_dir=$arg[1];
+ $pdb_new=$arg[1];
+ }
+ elsif (@arg[0] eq "-xml-orig")
+ {
+ $xml_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "-xml-new")
+ {
+ $xml_new_dir=$arg[1];
+ $xml_new=$arg[1];
+ }
+ elsif (@arg[0] eq "-env")
+ {
+ &set_env_from_props($arg[1]);
+ }
+ elsif (@arg[0] eq "-list")
+ {
+ $test_list = $arg[1];
+ }
+ elsif (@arg[0] eq "-test")
+ {
+ $infile = $arg[1];
+ }
+ elsif (@arg[0] eq "-merge")
+ {
+ $merge_opt = 1;
+ }
+ else
+ {
+ print_usage();
+ die "Incorrect command line";
+ }
+ }
+}
+
+# set_env_from_props
+# infile - property file
+#
+# Read the properties file, of the form key=value
+# Valid key values are :
+# POSE_EXE
+# POSE_PRC
+# PDB_ORIG
+# PDB_NEW
+# XML_ORIG
+# XML_NEW
+# If a value is found the appropriate global variable is set.
+#
+# Sets these globals: pose_exe, pose_prc, xml_orig, xml_new_dir,
+# xml_new, pdb_orig_dir, pdb_orig, pdb_new_dir, pdb_new.
+#
+sub set_env_from_props
+{
+ my $infile = $_[0];
+
+ open(PROPSFILE, $infile) || die "Could not open properties file <$infile>";
+
+ while (<PROPSFILE>)
+ {
+ chomp $_;
+ my @arg = split('=', $_);
+ @arg[0] =~ tr/a-z/A-Z/;
+ my $len = @arg;
+ if ($len != 2)
+ {
+ die "Malformed property in $arg[0]";
+ }
+ if (@arg[0] eq "POSE_EXE")
+ {
+ $pose_exe=$arg[1];
+ }
+ elsif (@arg[0] eq "POSE_PRC")
+ {
+ $pose_prc=$arg[1];
+ }
+ elsif (@arg[0] eq "PDB_ORIG")
+ {
+ $pdb_orig_dir=$arg[1];
+ $pdb_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "PDB_NEW")
+ {
+ $pdb_new_dir=$arg[1];
+ $pdb_new=$arg[1];
+ }
+ elsif (@arg[0] eq "XML_ORIG")
+ {
+ $xml_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "XML_NEW")
+ {
+ $xml_new_dir=$arg[1];
+ $xml_new=$arg[1];
+ }
+
+ }
+ close PROPSFILE;
+}
+
+# verify_env_options
+#
+# Verify that input options are correctly set.
+# Assumes pose_exe, pose_prc, xml_orig, xml_new_dir,
+# pdb_orig_dir, and pdb_new_dir are already set.
+#
+sub verify_env_options
+{
+ if (!-e "$pose_exe")
+ {
+ die "The pose executable cannot be found at $pose_exe.";
+ }
+ if (!-x $pose_exe)
+ {
+ die "$pose_exe exists but is not executable.";
+ }
+
+ if (!-e "$pose_prc")
+ {
+ die "The PRC directory specified as $pose_prc does not exist.";
+ }
+ if (!-d "$pose_prc")
+ {
+ die "The PRC location specified as $pose_prc exists, but is not a directory.";
+ }
+
+ if (!-e "$pdb_orig_dir")
+ {
+ die "The original PDB directory specified as $pdb_orig_dir does not exist.";
+ }
+ if (!-d "$pdb_orig_dir")
+ {
+ die "The original PDB directory specified as $pdb_orig_dir exists but is not a directory.";
+ }
+
+ if (!-e "$pdb_new_dir")
+ {
+ die "The new PDB directory specified as $pdb_new_dir does not exist.";
+ }
+ if (!-d "$pdb_new_dir")
+ {
+ die "The new PDB directory specified as $pdb_new_dir exists but is not a directory.";
+ }
+
+ if (!-e "$xml_orig")
+ {
+ die "The original Office document directory specified as $xml_orig does not exist.";
+ }
+ if (!-d "$xml_orig")
+ {
+ die "The original Office document location specified as $xml_orig exists but is not a directory.";
+ }
+
+ if (!-e "$xml_new_dir")
+ {
+ die "The new Office document directory specified as $xml_new_dir does not exist.";
+ }
+ if (!-d "$xml_new_dir")
+ {
+ die "The new Office document location specified as $xml_new_dir exists but is not a directory.";
+ }
+}
+
+# verify_prcs_exist
+# prcfile - the PRC file to check
+#
+# Verifies that the specified PRC file exists.
+#
+sub verify_prcs_exist
+{
+ my $prcfile = $_[0];
+
+ if (!-e "$pose_prc/$prcfile")
+ {
+ die "The pose PRC directory ($pose_prc) is correct, but I can't find $prcfile there.";
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/run-convtest b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/run-convtest
new file mode 100755
index 000000000000..8b97b3ec71d3
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/run-convtest
@@ -0,0 +1,540 @@
+#!/bin/ksh
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: run-convtest,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+#set -x
+umask 0
+
+integer TOTAL_PASS=0
+integer TOTAL_FAIL=0
+integer TOTAL_RUN=0
+integer MAX_RETRIES=5
+typeset RUNNAME=`date +%Y%m%d%H%M%S`
+typeset PRINTDATE=`date`
+typeset PDB_INFILE_DIR
+typeset PDB_OUTFILE_DIR
+typeset XML_OUTFILE_DIR
+typeset REPORT
+typeset RESDIR
+typeset LOGFILE
+typeset COMPLOG
+typeset TEST_COMMENTS
+typeset BGCOLOR
+typeset ODD_BGCOLOR='#BBBBBB'
+typeset EVEN_BGCOLOR='#DCDCDC'
+typeset PASS_COLOR='#00ff00'
+typeset FAIL_COLOR='#ff4040'
+
+typeset ENVFILE=""
+# The following variables should be set in the env file
+typeset MASTERLIST=""
+typeset TESTCASEDIR=""
+typeset RESULTSBASE=""
+typeset XMERGE_JAR=""
+typeset APORTIS_JAR=""
+typeset WORDSMITH_JAR=""
+typeset MINICALC_JAR=""
+typeset PERL5LIB=""
+typeset POSE_EXE=""
+typeset POSE_PRC=""
+typeset TEST_DRIVER_PL=""
+typeset COMPARATOR_PL=""
+typeset COMPLIST=""
+typeset XML_INFILE_DIR=""
+typeset PDB_BASELINE_DIR=""
+typeset XML_BASELINE_DIR=""
+typeset EM_SCRIPT_HOME=""
+typeset QAWRAPPER_SCRIPT_HOME=""
+typeset EM_ROM_FILE=""
+typeset EM_SESSION_FILE=""
+typeset QA_LIB_HOME=""
+typeset QA_COMPARATOR_HOME=""
+typeset CLASSES_DIR=""
+
+
+
+################################################################################
+Usage() {
+ echo "Usage: run-convtest -env <ENVFILE> [-name RUNNAME]"
+ exit 1
+}
+
+
+################################################################################
+StartReportFile() {
+ typeset line=`date`
+
+ ReportLine "<HTML>"
+ ReportLine "<HEAD>"
+ ReportLine "<TITLE>XMerge Converters Test Results - ${RUNNAME}</TITLE>"
+ ReportLine "</HEAD>"
+ ReportLine "<BODY BGCOLOR=#ffffff>"
+ ReportLine "<H1 align=center>XMerge Converters Test Results - ${RUNNAME}</H1>"
+ ReportLine "<P>"
+ ReportLine "Test run on: ${PRINTDATE}"
+ ReportLine "<P>"
+ ReportLine "<CENTER>"
+ ReportLine "<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=2>"
+ ReportLine "<TR BGCOLOR='#9999CC'>"
+ ReportLine "<TH>Test Name</TH>"
+ ReportLine "<TH>Test File</TH>"
+ ReportLine "<TH>.ext</TH>"
+ ReportLine "<TH>Result</TH>"
+ ReportLine "<TH>Comments</TH>"
+ ReportLine "</TR>"
+}
+
+
+################################################################################
+EndReportFile() {
+ # remove full path from LOGFILE (link will be to current dir)
+ typeset loglink=${LOGFILE##*/}
+
+ ReportLine "<P>"
+ ReportLine "<CENTER>"
+ ReportLine "<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=2>"
+ ReportLine "<TR>"
+ ReportLine "<TH>Total Tests PASSED</TH>"
+ ReportLine "<TH>${TOTAL_PASS}</TH>"
+ ReportLine "</TR>"
+ ReportLine "<TR>"
+ ReportLine "<TH>Total Tests FAILED</TH>"
+ ReportLine "<TH>${TOTAL_FAIL}</TH>"
+ ReportLine "</TR>"
+ ReportLine "<TR>"
+ ReportLine "<TH>Total Tests Run</TH>"
+ ReportLine "<TH>${TOTAL_RUN}</TH>"
+ ReportLine "</TR>"
+ ReportLine "</TABLE>"
+ ReportLine "</CENTER>"
+ ReportLine "<P>"
+ ReportLine "<A HREF=${loglink}>Full logfile for test run</A>"
+ ReportLine "<P>"
+ ReportLine "<CENTER>"
+ ReportLine "</BODY>"
+ ReportLine "</HTML>"
+}
+
+################################################################################
+ReportLine() {
+ echo $1 >> $REPORT
+}
+
+################################################################################
+LogLine() {
+ echo $1 >> $LOGFILE
+}
+
+################################################################################
+ReportTestComments() {
+ if [[ $TEST_COMMENTS == "" ]] ; then
+ TEST_COMMENTS="&nbsp;"
+ fi
+
+ ReportLine "<TD>${TEST_COMMENTS}</TD>"
+}
+
+################################################################################
+GetParams() {
+ integer argc=$#
+ integer i=0
+
+ if [[ $argc -lt 1 ]] ; then
+ Usage
+ fi
+
+ while (($i < $argc)) ; do
+ arg=$1
+ shift
+ i=i+1
+
+ if [[ $arg == '-name' ]] ; then
+ if (( $i < $argc )) ; then
+ RUNNAME=$1
+ echo "RUNNAME=[$RUNNAME]"
+ shift
+ i=i+1
+ else
+ Usage
+ fi
+ elif [[ $arg == '-env' ]] ; then
+ if (( $i < $argc )) ; then
+ ENVFILE=$1
+ shift
+ i=i+1
+ else
+ Usage
+ fi
+ else
+ Usage
+ fi
+ done
+
+ if [[ $ENVFILE == "" ]] ; then
+ Usage
+ fi
+}
+
+
+################################################################################
+ReadEnvFile() {
+ . $ENVFILE
+
+
+ echo ""
+ echo "The following values have been set from $ENVFILE:"
+ echo "MASTERLIST=$MASTERLIST"
+ echo "TESTCASEDIR=$TESTCASEDIR"
+ echo "XMERGE_JAR=$XMERGE_JAR"
+ echo "APORTIS_JAR=$APORTIS_JAR"
+ echo "WORDSMITH_JAR=$WORDSMITH_JAR"
+ echo "MINICALC_JAR=$MINICALC_JAR"
+ echo "RESULTSBASE=$RESULTSBASE"
+ echo "PERL5LIB=$PERL5LIB"
+ echo "POSE_EXE=$POSE_EXE"
+ echo "POSE_PRC=$POSE_PRC"
+ echo "TEST_DRIVER_PL=$TEST_DRIVER_PL"
+ echo "COMPARATOR_PL=$COMPARATOR_PL"
+ echo "XML_INFILE_DIR=$XML_INFILE_DIR"
+ echo "PDB_BASELINE_DIR=$PDB_BASELINE_DIR"
+ echo "XML_BASELINE_DIR=$XML_BASELINE_DIR"
+ echo "EM_SCRIPT_HOME=$EM_SCRIPT_HOME"
+ echo "QAWRAPPER_SCRIPT_HOME=$QAWRAPPER_SCRIPT_HOME"
+ echo "EM_ROM_FILE=$EM_ROM_FILE"
+ echo "EM_SESSION_FILE=$EM_SESSION_FILE"
+ echo "QA_LIB_HOME=$QA_LIB_HOME"
+ echo "QA_COMPARATOR_HOME=$QA_COMPARATOR_HOME"
+ echo "CLASSES_DIR=$CLASSES_DIR"
+ echo "COMPLIST=$COMPLIST"
+}
+
+################################################################################
+POSESetup() {
+ export PERL5LIB
+ export EM_SCRIPT_HOME
+ export QAWRAPPER_SCRIPT_HOME
+ export EM_ROM_FILE
+ export EM_SESSION_FILE
+ export QA_LIB_HOME
+ export QA_COMPARATOR_HOME
+ export CLASSES_DIR
+
+}
+
+################################################################################
+TestSetup() {
+
+
+ POSESetup
+
+ export ZENDEBUG=1
+
+ COMPLIST="${COMPLIST}/tempcomp.${RUNNAME}.list"
+ # create the directories for the results of this test run
+ RESDIR="${RESULTSBASE}/${RUNNAME}"
+ \rm -Rf $RESDIR
+ mkdir $RESDIR
+
+ # Define the directories for the test input files,
+ # test output files, working directories and baseline files
+ PDB_INFILE_DIR="${RESDIR}/pdb-orig"
+ mkdir "${PDB_INFILE_DIR}"
+ PDB_OUTFILE_DIR="${RESDIR}/pdb-new"
+ mkdir "${PDB_OUTFILE_DIR}"
+ XML_OUTFILE_DIR="${RESDIR}/xml-new"
+ mkdir "${XML_OUTFILE_DIR}"
+
+ LOGFILE="${RESDIR}/logfile"
+ COMPLOG="${RESDIR}/complog"
+ REPORT="${RESDIR}/report.html"
+ StartReportFile
+
+ echo "Results in: $RESDIR"
+ echo "Report file: $REPORT"
+}
+
+################################################################################
+TestCleanup() {
+ EndReportFile
+}
+
+################################################################################
+TestCaseSetup() {
+ # where to pick up converter classes
+ export CLASSPATH=""
+ export CLASSPATH=$CLASSPATH:$XMERGE_JAR
+ export CLASSPATH=$CLASSPATH:$APORTIS_JAR
+ export CLASSPATH=$CLASSPATH:$WORDSMITH_JAR
+ export CLASSPATH=$CLASSPATH:$MINICALC_JAR
+}
+
+################################################################################
+TestCaseCleanup() {
+ # empty function
+ a=42
+}
+
+################################################################################
+RunTestCase() {
+ testcase=$1
+
+ LogLine ""
+ LogLine "test_driver output:"
+
+ # run test_driver in foreground
+ $TEST_DRIVER_PL\
+ -pose-prc=${POSE_PRC}\
+ -pose-exe=${POSE_EXE}\
+ -xml-orig=${XML_INFILE_DIR}\
+ -pdb-orig=${PDB_INFILE_DIR}\
+ -pdb-new=${PDB_OUTFILE_DIR}\
+ -xml-new=${XML_OUTFILE_DIR}\
+ -test=$testcase -merge >> $LOGFILE 2>&1
+
+ # cleanup in case zombie POSE processes are hanging around
+ pkill pose
+ pkill -9 pose
+}
+
+
+################################################################################
+ComparisonSetup() {
+ typeset file=$1
+
+
+ export CLASSPATH="$CLASSES_DIR/xerces.jar"
+
+ # create temporary comparator list file for this test case
+ echo $file > $COMPLIST
+}
+
+################################################################################
+ComparisonCleanup() {
+ # remove temporary comparator list file used for this test case
+ \rm -f $COMPLIST
+}
+
+################################################################################
+RunComparison() {
+ typeset type=$1
+
+ LogLine ""
+ LogLine "Comparator output:"
+ $COMPARATOR_PL\
+ -xml-orig=${XML_BASELINE_DIR}\
+ -pdb-orig=${PDB_BASELINE_DIR}\
+ -pdb-new=${PDB_INFILE_DIR}\
+ -xml-new=${XML_OUTFILE_DIR}\
+ -list=$COMPLIST -log=$COMPLOG -type=$type >> $LOGFILE 2>&1
+# -list=$COMPLIST -log=$COMPLOG -type=$type | tee -a $LOGFILE 2>&1
+
+ pass=`grep TRUE $COMPLOG | wc -l`
+
+ LogLine ""
+ LogLine "COMPLIST file:"
+ cat $COMPLIST >> $LOGFILE
+ LogLine ""
+ LogLine "Comparator logfile:"
+ cat $COMPLOG >> $LOGFILE
+
+ if [ $pass -eq 0 ]
+ then
+ TEST_COMMENTS="${TEST_COMMENTS}$type comparison ERROR<BR>"
+ echo "$type comparison ERROR"
+ return 0
+ fi
+
+ echo "$type comparison OK"
+ return 1
+}
+
+################################################################################
+CheckOutput() {
+ typeset xmlfile="${XML_OUTFILE_DIR}/$1"
+ typeset pdbfile="${PDB_INFILE_DIR}/$2"
+
+ if [ ! -f $pdbfile ] ; then
+ TEST_COMMENTS="${TEST_COMMENTS}[$pdbfile] does not exist<BR>"
+ LogLine "ERROR: $pdbfile does not exist"
+ echo "ERROR: $pdbfile does not exist"
+ return 0
+ fi
+
+ if [ ! -f $xmlfile ] ; then
+ TEST_COMMENTS="${TEST_COMMENTS}[$xmlfile] does not exist<BR>"
+ LogLine "ERROR: $xmlfile does not exist"
+ echo "ERROR: $xmlfile does not exist"
+ return 0
+ fi
+
+ return 1
+}
+
+################################################################################
+RunTest() {
+ typeset testcasename
+ typeset testcase
+ typeset testfile
+ typeset pdbfile
+ typeset xmlfile
+ typeset ext
+ integer try
+ integer finished_with_test
+ integer test_pass
+
+ TestSetup
+
+ BGCOLOR=$ODD_BGCOLOR
+
+ while read line ; do
+ # get chars up to 1st space
+ testcasename=${line%% *}
+ testcase="${TESTCASEDIR}/$testcasename"
+
+ # get 2nd word
+ testfile=${line#* }
+ testfile=${testfile%% *}
+
+ # get last word
+ ext=${line##* }
+
+ LogLine "############################################"
+ LogLine "Starting the following testcase"
+ LogLine "testcase = $testcase"
+ LogLine "testfile = $testfile"
+ LogLine "ext = $ext"
+
+ ReportLine "<TR BGCOLOR='${BGCOLOR}'>"
+ ReportLine "<TD valign=top>$testcasename</TD>"
+ ReportLine "<TD valign=top>$testfile</TD>"
+ ReportLine "<TD valign=top>$ext</TD>"
+
+ echo ""
+ echo "testcase = $testcase"
+ echo "testfile = $testfile"
+ echo "ext = $ext"
+
+ try=1
+ finished_with_test=0
+ TEST_COMMENTS=""
+
+ while (($finished_with_test == 0)) ; do
+
+ TestCaseSetup
+ RunTestCase $testcase
+ TestCaseCleanup
+
+ xmlfile="${testfile}.${ext}"
+
+ if [[ $ext == "sxc" ]] ; then
+ pdbfile="${testfile}-Sheet1.pdb"
+ else
+ pdbfile="${testfile}.pdb"
+ fi
+
+ CheckOutput $xmlfile $pdbfile
+ res=$?
+
+ if [[ $res -eq 1 ]] ; then
+ ComparisonSetup $pdbfile
+ RunComparison pdb
+ res=$?
+# ignore result until pdb comparator is fixed...
+res=1
+ ComparisonCleanup
+ fi
+
+ if [[ $res -eq 1 ]] ; then
+ ComparisonSetup $xmlfile
+ RunComparison xml
+ res=$?
+ ComparisonCleanup
+ fi
+
+ if [[ $res -eq 1 ]] ; then
+ TOTAL_PASS=TOTAL_PASS+1
+ ReportLine "<TD valign=top BGCOLOR='${PASS_COLOR}'>PASS</TD>"
+ ReportTestComments
+ ReportLine "</TR>"
+ LogLine "Test PASSED (on try $try)"
+ echo "Test PASSED (on try $try)"
+ finished_with_test=1
+ else
+ TEST_COMMENTS="${TEST_COMMENTS}error on try ${try}<BR>"
+ LogLine "TEST FAILED (on try $try)"
+ echo "TEST FAILED (on try $try)"
+
+ if [[ $try -eq $MAX_RETRIES ]] ; then
+ TOTAL_FAIL=TOTAL_FAIL+1
+ ReportLine "<TD valign=top BGCOLOR='${FAIL_COLOR}'>FAIL</TD>"
+ ReportTestComments
+ ReportLine "</TR>"
+ finished_with_test=1
+ fi
+ fi
+
+ try=try+1
+ done
+
+ TOTAL_RUN=TOTAL_RUN+1
+
+ # toggle BGCOLOR for next report line
+ if [[ $BGCOLOR == $ODD_BGCOLOR ]] ; then
+ BGCOLOR=$EVEN_BGCOLOR
+ else
+ BGCOLOR=$ODD_BGCOLOR
+ fi
+
+ done < $MASTERLIST
+
+ ReportLine "</TABLE>"
+ ReportLine "</CENTER>"
+
+ TestCleanup
+
+ echo "Total Tests PASSED: "${TOTAL_PASS}
+ echo "Total Tests FAILED: "${TOTAL_FAIL}
+ echo "Total Tests RUN: "${TOTAL_RUN}
+ echo "Results in: $RESDIR"
+ echo "Report file: $REPORT"
+}
+
+################################################################################
+################################################################################
+# main
+################################################################################
+################################################################################
+
+GetParams $@
+ReadEnvFile
+RunTest
+
+exit 0
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/env/master.env b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/env/master.env
new file mode 100755
index 000000000000..1571781bf475
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/env/master.env
@@ -0,0 +1,85 @@
+#The Qa-Test environment is defined in this file. All of the fields are
+#necessary in order for the scripts to run effectlively
+
+###########################################################
+# MASTERLIST file defines which test to run. These list are usually located in
+# the qa-wrapper/lists dir
+
+MASTERLIST=<listdir/list file>
+
+###########################################################
+#The TESTCASE dir is where the testcases to be run are located
+
+TESTCASEDIR=<testcase dir>
+
+###########################################################
+# Results are stored in a new directory at ${RESULTSBASE}/results-${RUNNAME}
+
+RESULTSBASE=/export/home/test/qadir/qa-wrapper/results
+
+###########################################################
+# Where to find the Xmerge JAR files
+
+APORTIS_JAR=/export/home/test/qadir/qa-wrapper/classes/aportisdoc.jar
+WORDSMITH_JAR=/export/home/test/qadir/qa-wrapper/classes/wordsmith.jar
+MINICALC_JAR=/export/home/test/qadir/qa-wrapper/classes/minicalc.jar
+CLASSES_DIR=<qa-wrapperdir>/classes
+
+###########################################################
+# setup which version of POSE to use
+
+PERL5LIB=<Pose directory>/Scripting/Perl
+POSE_EXE=<Pose directory>/posedist/pose
+POSE_PRC=<location of prc files to use for testing>
+
+###########################################################
+
+# Location of files required to run Pose
+
+EM_ROM_FILE=<location and name of palm rom file>
+EM_SESSION_FILE=<location of palm session file>
+
+
+###########################################################
+
+
+# where to get the executables for the test_driver and the comparator
+
+TEST_DRIVER_PL=<qa-wrapperdir>/bin/qa_test_driver.pl
+COMPARATOR_PL=<qa-wrapperdir>/bin/qa_comparator.pl
+COMPLIST=<qa-wrapperdir>/lists
+
+###########################################################
+# where to get the original XML test files
+
+XML_INFILE_DIR=<qa-wrapperdir>/testcases/xml-orig
+
+###########################################################
+# where to find the baseline PDB files
+
+PDB_BASELINE_DIR=<qa-wrapperdir>/results/baseline/pdb-base
+
+###########################################################
+# where to find the baseline XML files
+
+XML_BASELINE_DIR=<qa-wrapperdir>/results/baseline/xml-base
+
+###########################################################
+#Location of script that runs the conversions
+EM_SCRIPT_HOME=<location of rd script>
+
+###########################################################
+#Location of run-convtest.pl
+QAWRAPPER_SCRIPT_HOME=<qa-wrapperdir>/bin
+
+###########################################################
+#Location of converterlib.pm
+QA_LIB_HOME=<qa dir>/lib
+
+###########################################################
+#Location of comparator.pl
+QA_COMPARATOR_HOME=<qa dir>/comparator/
+
+
+
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/lists/master.list b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/lists/master.list
new file mode 100755
index 000000000000..d6be4fb063bd
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/lists/master.list
@@ -0,0 +1,55 @@
+c_addition01-mod.infile c_addition sxc
+c_alignment.infile c_alignment sxc
+c_backwardrange-mod.infile c_backwardrange sxc
+c_basic-mod.infile c_basic sxc
+c_boolean-mod.infile c_boolean sxc
+c_cellpercentvalue-mod.infile c_cellpercentvalue sxc
+c_cellstringvalue-mod.infile c_cellstringvalue sxc
+c_columnswidth-mod.infile c_columnswidth sxc
+c_cyclic-mod.infile c_cyclic sxc
+c_dividefloating-mod.infile c_dividefloating sxc
+c_forwardrange-mod.infile c_forwardrange sxc
+c_insertimage.infile c_insertimage sxc
+c_invalidcellref-mod.infile c_invalidcellref sxc
+c_largerange-mod.infile c_largerange sxc
+c_listrange-mod.infile c_listrange sxc
+c_mathematical-mod.infile c_mathematical sxc
+c_protection-mod01.infile c_protection sxc
+c_sheetreference-mod.infile c_sheetreference sxc
+c_simple01-mod.infile c_simple01 sxc
+c_simple02-mod.infile c_simple04 sxc
+c_simple03-mod.infile c_simple02 sxc
+c_simple04-mod.infile c_simple03 sxc
+c_smallrange-mod.infile c_smallrange sxc
+c_styles.infile c_styles sxc
+c_textimage.infile c_textimage sxc
+a_table.infile a_table sxw
+a_animatedgif.infile a_animatedgif sxw
+a_linebreaks.infile a_linebreaks sxw
+a_bulletorderedlist.infile a_bulletorderedlist sxw
+a_superscript.infile a_superscript sxw
+a_subscript.infile a_subscript sxw
+a_emptydoc.infile a_emptydoc sxw
+a_fontsize.infile a_fontsize sxw
+a_heading.infile a_heading sxw
+a_heading1.infile a_heading1 sxw
+a_heading2.infile a_heading2 sxw
+a_hyperlink.infile a_hyperlink sxw
+a_justified.infile a_justified sxw
+a_linespacing.infile a_linespacing sxw
+a_numberorderedlist.infile a_numberorderedlist sxw
+a_pagebreak.infile a_pagebreak sxw
+a_paragraph.infile a_paragraph sxw
+a_standard.infile a_standard sxw
+a_symbols.infile a_symbols sxw
+a_wordwrap.infile a_wordwrap sxw
+a_unorderedlist.infile a_unorderedlist sxw
+a_textspan.infile a_textspan sxw
+a_bolddoc.infile a_bolddoc sxw
+a_tab.infile a_tab sxw
+a_firstlineindent.infile a_firstlineindent sxw
+a_bookmarks.infile a_bookmarks sxw
+
+
+
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_animatedgif.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_animatedgif.pdb
new file mode 100755
index 000000000000..88dbf557cc4e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_animatedgif.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bolddoc.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bolddoc.pdb
new file mode 100755
index 000000000000..0bfadf294bdf
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bolddoc.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bookmarks.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bookmarks.pdb
new file mode 100755
index 000000000000..8c134002c9de
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bookmarks.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bulletorderedlist.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bulletorderedlist.pdb
new file mode 100755
index 000000000000..8f3d588dfb67
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_bulletorderedlist.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_emptydoc.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_emptydoc.pdb
new file mode 100755
index 000000000000..99c045e6113c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_emptydoc.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_firstlineindent.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_firstlineindent.pdb
new file mode 100755
index 000000000000..279d2287b65d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_firstlineindent.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_fontsize.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_fontsize.pdb
new file mode 100755
index 000000000000..8b3cef8cdedb
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_fontsize.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading.pdb
new file mode 100755
index 000000000000..deb8f613fdf3
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading1.pdb
new file mode 100755
index 000000000000..f3c89a917c21
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading2.pdb
new file mode 100755
index 000000000000..e954224020b7
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_heading2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_hyperlink.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_hyperlink.pdb
new file mode 100755
index 000000000000..88a3927fbd24
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_hyperlink.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_justified.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_justified.pdb
new file mode 100755
index 000000000000..c93da36ec630
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_justified.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_linebreaks.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_linebreaks.pdb
new file mode 100755
index 000000000000..8152cf5156d2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_linebreaks.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_linespacing.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_linespacing.pdb
new file mode 100755
index 000000000000..8cbe09e5ff1e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_linespacing.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_numberorderedlist.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_numberorderedlist.pdb
new file mode 100755
index 000000000000..f7c1835b8d0b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_numberorderedlist.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_pagebreak.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_pagebreak.pdb
new file mode 100755
index 000000000000..7ad393f3fd84
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_pagebreak.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_paragraph.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_paragraph.pdb
new file mode 100755
index 000000000000..5c2bfa52c77b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_paragraph.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple01.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple01.pdb
new file mode 100755
index 000000000000..b1ea0024c1f1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple01.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple02.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple02.pdb
new file mode 100755
index 000000000000..5eaf2292c34f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple02.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple03.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple03.pdb
new file mode 100755
index 000000000000..8c9d2bb568df
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple03.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple04.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple04.pdb
new file mode 100755
index 000000000000..7e88c9fe866a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple04.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple05.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple05.pdb
new file mode 100755
index 000000000000..d0959c91bd2d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_simple05.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_standard.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_standard.pdb
new file mode 100755
index 000000000000..694e33361df2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_standard.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_subscript.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_subscript.pdb
new file mode 100755
index 000000000000..d6a9081a0150
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_subscript.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_superscript.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_superscript.pdb
new file mode 100755
index 000000000000..e4349e79842f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_superscript.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_symbols.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_symbols.pdb
new file mode 100755
index 000000000000..7ef7f9daacc7
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_symbols.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_tab.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_tab.pdb
new file mode 100755
index 000000000000..0befa7c85eb2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_tab.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_table.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_table.pdb
new file mode 100755
index 000000000000..72a2f98f7485
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_table.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_textspan.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_textspan.pdb
new file mode 100755
index 000000000000..bbb4487c986f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_textspan.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_unorderedlist.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_unorderedlist.pdb
new file mode 100755
index 000000000000..214100ce6117
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_unorderedlist.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_wordwrap.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_wordwrap.pdb
new file mode 100755
index 000000000000..4c2179aada8e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/a_wordwrap.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet1.pdb
new file mode 100755
index 000000000000..c5a559ead4e7
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet2.pdb
new file mode 100755
index 000000000000..c633734b8f17
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet3.pdb
new file mode 100755
index 000000000000..c7571e003964
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_addition-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet1.pdb
new file mode 100755
index 000000000000..200026701dc6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet2.pdb
new file mode 100755
index 000000000000..1531205547ce
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet3.pdb
new file mode 100755
index 000000000000..089b36be0cdd
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_alignment-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet1.pdb
new file mode 100755
index 000000000000..a99167080c7e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet2.pdb
new file mode 100755
index 000000000000..6df6cb9cd183
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet3.pdb
new file mode 100755
index 000000000000..3f08a196172a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_backwardrange-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet1.pdb
new file mode 100755
index 000000000000..287a25bd0b87
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet2.pdb
new file mode 100755
index 000000000000..8efbe6d58e34
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet3.pdb
new file mode 100755
index 000000000000..b7cbfb7f8f5c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_basic-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet1.pdb
new file mode 100755
index 000000000000..458fcf18bfc5
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet2.pdb
new file mode 100755
index 000000000000..188dd9d5be96
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet3.pdb
new file mode 100755
index 000000000000..6568390100da
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_boolean-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet1.pdb
new file mode 100755
index 000000000000..984b1f14001c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet2.pdb
new file mode 100755
index 000000000000..9b0e50b204c1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet3.pdb
new file mode 100755
index 000000000000..c39410c5c656
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellcurrencyalue-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet1.pdb
new file mode 100755
index 000000000000..84b0c2aabaaa
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet2.pdb
new file mode 100755
index 000000000000..f8300622d553
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet3.pdb
new file mode 100755
index 000000000000..5c841af6f953
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellpercentvalue-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet1.pdb
new file mode 100755
index 000000000000..aeea92b92b38
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet2.pdb
new file mode 100755
index 000000000000..3230b1574a69
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet3.pdb
new file mode 100755
index 000000000000..8fcfd9940ead
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cellstringvalue-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet1.pdb
new file mode 100755
index 000000000000..db4ee52a9c1b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet2.pdb
new file mode 100755
index 000000000000..110ef180f613
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet3.pdb
new file mode 100755
index 000000000000..33c6c9f0061f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_columnswidth-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet1.pdb
new file mode 100755
index 000000000000..ee52655a0056
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet2.pdb
new file mode 100755
index 000000000000..c6caaf40132d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet3.pdb
new file mode 100755
index 000000000000..8b6a735edeb9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_cyclic-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet1.pdb
new file mode 100755
index 000000000000..53d2acbac676
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet2.pdb
new file mode 100755
index 000000000000..5a4a0460d258
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet3.pdb
new file mode 100755
index 000000000000..eaa43bc683b1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_dividefloating-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet1.pdb
new file mode 100755
index 000000000000..026634583a5b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet2.pdb
new file mode 100755
index 000000000000..b11956ab7c4a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet3.pdb
new file mode 100755
index 000000000000..56fef34f9c4e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_forwardrange-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet1.pdb
new file mode 100755
index 000000000000..f7c2e2188bfc
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet2.pdb
new file mode 100755
index 000000000000..cc2cc083533a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet3.pdb
new file mode 100755
index 000000000000..51328fd9c1ef
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_insertimage-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet1.pdb
new file mode 100755
index 000000000000..390fc9710723
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet2.pdb
new file mode 100755
index 000000000000..9efa6bbc78a9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet3.pdb
new file mode 100755
index 000000000000..62dc5629c67a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_invalidcellref-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet1.pdb
new file mode 100755
index 000000000000..cf485e74d8c9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet2.pdb
new file mode 100755
index 000000000000..ac000de5b8a0
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet3.pdb
new file mode 100755
index 000000000000..45d1faf2a293
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_largerange-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet1.pdb
new file mode 100755
index 000000000000..1b617ff67e32
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet2.pdb
new file mode 100755
index 000000000000..b2e34e5ec759
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet3.pdb
new file mode 100755
index 000000000000..0bb0d1a6b3d6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_listrange-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet1.pdb
new file mode 100755
index 000000000000..3f9fe58a186c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet2.pdb
new file mode 100755
index 000000000000..dddc94e07f02
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet3.pdb
new file mode 100755
index 000000000000..1f40204c7971
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_mathematical-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet1.pdb
new file mode 100755
index 000000000000..06fc72d829fe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet2.pdb
new file mode 100755
index 000000000000..03107c5d325d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet3.pdb
new file mode 100755
index 000000000000..de40bfd56ec6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_protection-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet1.pdb
new file mode 100755
index 000000000000..a9df85405e1a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet2.pdb
new file mode 100755
index 000000000000..e8412d07e081
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet3.pdb
new file mode 100755
index 000000000000..b6a2c0ef38d5
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_sheetreference-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet1.pdb
new file mode 100755
index 000000000000..72aa8c82ba4a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet2.pdb
new file mode 100755
index 000000000000..cb04d4125fc9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet3.pdb
new file mode 100755
index 000000000000..7a85aff6ba62
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple01-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet1.pdb
new file mode 100755
index 000000000000..383fb4cccfb5
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet2.pdb
new file mode 100755
index 000000000000..a5e9b8beea3b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet3.pdb
new file mode 100755
index 000000000000..6bce59077201
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple02-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet1.pdb
new file mode 100755
index 000000000000..09d9020bc61f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet2.pdb
new file mode 100755
index 000000000000..14e2723688c4
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet3.pdb
new file mode 100755
index 000000000000..705134770677
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple03-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet1.pdb
new file mode 100755
index 000000000000..efba83c29b8d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet2.pdb
new file mode 100755
index 000000000000..2811910ecd04
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet3.pdb
new file mode 100755
index 000000000000..08028abc6fd1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_simple04-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet1.pdb
new file mode 100755
index 000000000000..c7978fac0a6b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet2.pdb
new file mode 100755
index 000000000000..c8234832053d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet3.pdb
new file mode 100755
index 000000000000..78e2a4ea6b21
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_smallrange-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet1.pdb
new file mode 100755
index 000000000000..f622cd7d1243
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet2.pdb
new file mode 100755
index 000000000000..8c29018d9e8a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet3.pdb
new file mode 100755
index 000000000000..4eebe759c1db
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_styles-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet1.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet1.pdb
new file mode 100755
index 000000000000..169a2cc173b9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet1.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet2.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet2.pdb
new file mode 100755
index 000000000000..4dee2cab0d2b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet2.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet3.pdb b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet3.pdb
new file mode 100755
index 000000000000..999d53f16a0c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/pdb-base/c_textimage-Sheet3.pdb
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd
new file mode 100755
index 000000000000..c1d585a7b0a9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd
@@ -0,0 +1,38 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: Blocklist.dtd,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+<!ELEMENT block-list:block-list (block-list:block*) >
+<!ATTLIST block-list:block-list
+ block-list:list-name CDATA #REQUIRED>
+<!ELEMENT block-list:block EMPTY>
+<!ATTLIST block-list:block
+ block-list:abbreviated-name CDATA #REQUIRED
+ block-list:package-name CDATA #REQUIRED
+ block-list:name CDATA #REQUIRED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_animatedgif.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_animatedgif.sxw
new file mode 100755
index 000000000000..a8f7d91ef03f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_animatedgif.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bolddoc.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bolddoc.sxw
new file mode 100755
index 000000000000..9f0cb66d69ba
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bolddoc.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bookmarks.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bookmarks.sxw
new file mode 100755
index 000000000000..d3ea3431875d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bookmarks.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bulletorderedlist.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bulletorderedlist.sxw
new file mode 100755
index 000000000000..bd640d575fb2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_bulletorderedlist.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_emptydoc.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_emptydoc.sxw
new file mode 100755
index 000000000000..d4a0621ad46d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_emptydoc.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_firstlineindent.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_firstlineindent.sxw
new file mode 100755
index 000000000000..75a18d84a53f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_firstlineindent.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_fontsize.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_fontsize.sxw
new file mode 100755
index 000000000000..b87aa37523d0
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_fontsize.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading.sxw
new file mode 100755
index 000000000000..a6d25bd5cf8e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading1.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading1.sxw
new file mode 100755
index 000000000000..ed91418ab374
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading1.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading2.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading2.sxw
new file mode 100755
index 000000000000..2f767e6f1675
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_heading2.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_hyperlink.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_hyperlink.sxw
new file mode 100755
index 000000000000..6a04edd6a073
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_hyperlink.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_justified.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_justified.sxw
new file mode 100755
index 000000000000..ae33ab576588
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_justified.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_linebreaks.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_linebreaks.sxw
new file mode 100755
index 000000000000..27b1e73e0b50
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_linebreaks.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_linespacing.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_linespacing.sxw
new file mode 100755
index 000000000000..74436d8076c7
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_linespacing.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_numberorderedlist.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_numberorderedlist.sxw
new file mode 100755
index 000000000000..3d8e19970fd8
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_numberorderedlist.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_pagebreak.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_pagebreak.sxw
new file mode 100755
index 000000000000..d929cfe5c13f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_pagebreak.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_paragraph.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_paragraph.sxw
new file mode 100755
index 000000000000..5c74827d5663
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_paragraph.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple01.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple01.sxw
new file mode 100755
index 000000000000..2d3384d5f9f0
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple01.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple02.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple02.sxw
new file mode 100755
index 000000000000..404cfd5ffd92
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple02.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple03.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple03.sxw
new file mode 100755
index 000000000000..9b90d54cfc54
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple03.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple04.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple04.sxw
new file mode 100755
index 000000000000..dddb02f91248
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple04.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple05.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple05.sxw
new file mode 100755
index 000000000000..c811aabcf28d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_simple05.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_standard.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_standard.sxw
new file mode 100755
index 000000000000..b9ac1e688e71
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_standard.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_subscript.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_subscript.sxw
new file mode 100755
index 000000000000..78ed939f1f83
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_subscript.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_superscript.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_superscript.sxw
new file mode 100755
index 000000000000..7d44042aaf5f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_superscript.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_symbols.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_symbols.sxw
new file mode 100755
index 000000000000..a48137a8ded5
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_symbols.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_tab.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_tab.sxw
new file mode 100755
index 000000000000..5602764f3c9d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_tab.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_table.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_table.sxw
new file mode 100755
index 000000000000..a101ba833aa9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_table.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_textspan.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_textspan.sxw
new file mode 100755
index 000000000000..beae7b8c8a7a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_textspan.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_unorderedlist.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_unorderedlist.sxw
new file mode 100755
index 000000000000..ca5ee406ccc5
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_unorderedlist.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_wordwrap.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_wordwrap.sxw
new file mode 100755
index 000000000000..ece3fefae183
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/a_wordwrap.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_addition.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_addition.sxc
new file mode 100755
index 000000000000..6c4341f62ac2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_addition.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_alignment.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_alignment.sxc
new file mode 100755
index 000000000000..b9df5dd3b00e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_alignment.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_backwardrange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_backwardrange.sxc
new file mode 100755
index 000000000000..c61f460e9fd8
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_backwardrange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_basic.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_basic.sxc
new file mode 100755
index 000000000000..8a1ba23b78fc
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_basic.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_boolean.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_boolean.sxc
new file mode 100755
index 000000000000..c34e7608c129
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_boolean.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellcurrencyalue.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellcurrencyalue.sxc
new file mode 100755
index 000000000000..808d781162e6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellcurrencyalue.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellpercentvalue.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellpercentvalue.sxc
new file mode 100755
index 000000000000..9b4b9f024a6a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellpercentvalue.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellstringvalue.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellstringvalue.sxc
new file mode 100755
index 000000000000..b44496fdb57b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cellstringvalue.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_columnswidth.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_columnswidth.sxc
new file mode 100755
index 000000000000..9aeec30fb699
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_columnswidth.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cyclic.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cyclic.sxc
new file mode 100755
index 000000000000..196bd78962a9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_cyclic.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_dividefloating.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_dividefloating.sxc
new file mode 100755
index 000000000000..1e2c55b448c8
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_dividefloating.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_forwardrange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_forwardrange.sxc
new file mode 100755
index 000000000000..0e41c624511b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_forwardrange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_insertimage.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_insertimage.sxc
new file mode 100755
index 000000000000..bae72239f17e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_insertimage.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_invalidcellref.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_invalidcellref.sxc
new file mode 100755
index 000000000000..881b4ffdb966
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_invalidcellref.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_largerange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_largerange.sxc
new file mode 100755
index 000000000000..379b1cef6d62
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_largerange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_listrange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_listrange.sxc
new file mode 100755
index 000000000000..e0e05b128917
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_listrange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_mathematical.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_mathematical.sxc
new file mode 100755
index 000000000000..c9cf3e8bbc5e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_mathematical.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_protection.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_protection.sxc
new file mode 100755
index 000000000000..64f89cc61ce7
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_protection.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_sheetreference.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_sheetreference.sxc
new file mode 100755
index 000000000000..4239ab2fa908
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_sheetreference.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple01.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple01.sxc
new file mode 100755
index 000000000000..e508b749bb0d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple01.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple02.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple02.sxc
new file mode 100755
index 000000000000..d490ed66fe3c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple02.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple03.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple03.sxc
new file mode 100755
index 000000000000..1dee18c7ddd7
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple03.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple04.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple04.sxc
new file mode 100755
index 000000000000..5164313a79cf
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_simple04.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_smallrange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_smallrange.sxc
new file mode 100755
index 000000000000..8283b04c54e3
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_smallrange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_styles.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_styles.sxc
new file mode 100755
index 000000000000..21e0f1ab5ac0
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_styles.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_textimage.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_textimage.sxc
new file mode 100755
index 000000000000..9f42285d2881
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/c_textimage.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod
new file mode 100755
index 000000000000..dec81f10aac6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod
@@ -0,0 +1,232 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: chart.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+
+<!ENTITY % chart-class "(line|area|circle|ring|scatter|radar|bar|stock|add-in)">
+<!ENTITY % chart-solid-type "(cuboid|cylinder|cone|pyramid)">
+
+<!-- Chart element -->
+<!ELEMENT chart:chart ( chart:title?, chart:subtitle?, chart:legend?,
+ chart:plot-area,
+ table:table? )>
+<!ATTLIST chart:chart
+ chart:class %chart-class; #REQUIRED
+ chart:add-in-name %string; #IMPLIED
+ chart:table-number-list %string; #IMPLIED
+ draw:name %string; #IMPLIED
+ %draw-position;
+ %draw-size;
+ %draw-style-name;
+ chart:style-name %styleName; #IMPLIED>
+
+<!ATTLIST chart:chart %presentation-class; >
+<!ATTLIST chart:chart %zindex;>
+<!ATTLIST chart:chart %draw-end-position; >
+<!ATTLIST chart:chart draw:id %draw-shape-id; >
+<!ATTLIST chart:chart draw:layer %layerName; #IMPLIED>
+
+<!ATTLIST style:properties
+ chart:scale-text %boolean; "true"
+ chart:stock-updown-bars %boolean; "false"
+ chart:stock-with-volume %boolean; "false"
+ chart:three-dimensional %boolean; "false"
+ chart:deep %boolean; "false"
+ chart:lines %boolean; "false"
+ chart:percentage %boolean; "false"
+ chart:solid-type %chart-solid-type; "cuboid"
+ chart:splines %nonNegativeInteger; "0"
+ chart:stacked %boolean; "false"
+ chart:symbol %integer; "-1"
+ chart:vertical %boolean; "false"
+ chart:lines-used %nonNegativeInteger; "0"
+ chart:connect-bars %boolean; "false">
+
+<!-- Main/Sub Title -->
+<!-- the cell-address attribute is currently not supported for titles -->
+<!ELEMENT chart:title (text:p)?>
+<!ATTLIST chart:title
+ table:cell-range %cell-address; #IMPLIED
+ svg:x %coordinate; #IMPLIED
+ svg:y %coordinate; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!ELEMENT chart:subtitle (text:p)?>
+<!ATTLIST chart:subtitle
+ table:cell-range %cell-address; #IMPLIED
+ svg:x %coordinate; #IMPLIED
+ svg:y %coordinate; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!-- you must specify either a legend-position or both, x and y coordinates -->
+<!ELEMENT chart:legend EMPTY>
+<!ATTLIST chart:legend
+ chart:legend-position (top|left|bottom|right) "right"
+ svg:x %coordinate; #IMPLIED
+ svg:y %coordinate; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!-- Plot-Area specification -->
+
+<!ELEMENT chart:plot-area (dr3d:light*,
+ chart:axis*,
+ chart:categories?,
+ chart:series*,
+ chart:wall?,
+ chart:floor?) >
+
+<!ATTLIST chart:plot-area
+ svg:x %coordinate; #IMPLIED
+ svg:y %coordinate; #IMPLIED
+ svg:width %length; #IMPLIED
+ svg:height %length; #IMPLIED
+ chart:style-name %styleName; #IMPLIED
+ table:cell-range-address %cell-range-address; #IMPLIED
+ chart:table-number-list %string; #IMPLIED
+ chart:data-source-has-labels (none|row|column|both) "none" >
+
+<!-- 3d scene attributes on plot-area -->
+<!ATTLIST chart:plot-area
+ dr3d:vrp %vector3D; #IMPLIED
+ dr3d:vpn %vector3D; #IMPLIED
+ dr3d:vup %vector3D; #IMPLIED
+ dr3d:projection (parallel|perspective) #IMPLIED
+ dr3d:transform CDATA #IMPLIED
+ dr3d:distance %length; #IMPLIED
+ dr3d:focal-length %length; #IMPLIED
+ dr3d:shadow-slant %nonNegativeInteger; #IMPLIED
+ dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED
+ dr3d:ambient-color %color; #IMPLIED
+ dr3d:lighting-mode %boolean; #IMPLIED >
+
+<!ATTLIST style:properties
+ chart:series-source (columns|rows) "columns" >
+
+<!ELEMENT chart:wall EMPTY>
+<!ATTLIST chart:wall
+ svg:width %length; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!ELEMENT chart:floor EMPTY>
+<!ATTLIST chart:floor
+ svg:width %length; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!-- Axis -->
+
+<!ELEMENT chart:axis (chart:title?, chart:grid*)>
+<!ATTLIST chart:axis
+ chart:class (category|value|series|domain) #REQUIRED
+ chart:name %string; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!ATTLIST style:properties
+ chart:tick-marks-major-inner %boolean; "false"
+ chart:tick-marks-major-outer %boolean; "true"
+ chart:tick-marks-minor-inner %boolean; "false"
+ chart:tick-marks-minor-outer %boolean; "false"
+ chart:logarithmic %boolean; "false"
+ chart:maximum %float; #IMPLIED
+ chart:minimum %float; #IMPLIED
+ chart:origin %float; #IMPLIED
+ chart:interval-major %float; #IMPLIED
+ chart:interval-minor %float; #IMPLIED
+ chart:gap-width %integer; #IMPLIED
+ chart:overlap %integer; #IMPLIED
+ text:line-break %boolean; "true"
+ chart:display-label %boolean; "true"
+ chart:label-arrangement (side-by-side|stagger-even|stagger-odd) "side-by-side"
+ chart:visible %boolean; "true"
+ chart:link-data-style-to-source %boolean; "true" >
+
+<!ELEMENT chart:grid EMPTY>
+<!ATTLIST chart:grid
+ chart:class (major|minor) "major"
+ chart:style-name %styleName; #IMPLIED >
+
+
+<!ELEMENT chart:categories EMPTY>
+<!ATTLIST chart:categories
+ table:cell-range-address %cell-range-address; #REQUIRED >
+
+<!--
+ each series element must have an cell-range-address element that points
+ to the underlying table data.
+ Impl. Note: Internally all href elements are merged to one table range
+ that represents the data for the whole chart
+-->
+<!ELEMENT chart:series ( chart:domain*,
+ chart:data-point* )>
+<!ATTLIST chart:series
+ chart:values-cell-range-address %cell-range-address; #IMPLIED
+ chart:label-cell-address %cell-address; #IMPLIED
+ chart:class %chart-class; #IMPLIED
+ chart:attached-axis %string; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!ELEMENT chart:domain EMPTY>
+<!ATTLIST chart:domain
+ table:cell-range-address %cell-range-address; #IMPLIED >
+
+<!ELEMENT chart:data-point EMPTY>
+<!ATTLIST chart:data-point
+ chart:repeated %nonNegativeInteger; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!-- statistical properties -->
+
+<!ATTLIST style:properties
+ chart:mean-value %boolean; #IMPLIED
+ chart:error-category (none|variance|standard-deviation|percentage|error-margin|constant) "none"
+ chart:error-percentage %float; #IMPLIED
+ chart:error-margin %float; #IMPLIED
+ chart:error-lower-limit %float; #IMPLIED
+ chart:error-upper-limit %float; #IMPLIED
+ chart:error-upper-indicator %boolean; #IMPLIED
+ chart:error-lower-indicator %boolean; #IMPLIED
+ chart:regression-type (none|linear|logarithmic|exponential|power) "none" >
+
+<!-- data label properties -->
+
+<!ATTLIST style:properties
+ chart:data-label-number (none|value|percentage) "none"
+ chart:data-label-text %boolean; "false"
+ chart:data-label-symbol %boolean; "false" >
+
+<!-- general text properties -->
+
+<!ATTLIST style:properties text:rotation-angle %integer; "0" >
+
+<!-- symbol properties -->
+
+<!ATTLIST style:properties
+ chart:symbol-width %nonNegativeLength; #IMPLIED
+ chart:symbol-height %nonNegativeLength; #IMPLIED
+ chart:symbol-image-name %string; #IMPLIED >
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod
new file mode 100755
index 000000000000..31bf7a464c77
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod
@@ -0,0 +1,172 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: datastyl.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!-- data styles -->
+<!ENTITY % any-number "( number:number | number:scientific-number | number:fraction )">
+<!ENTITY % number-style-content "( (number:text,(%any-number;,number:text?)?) | (%any-number;,number:text?) )">
+<!ELEMENT number:number-style ( style:properties?, %number-style-content;, style:map* )>
+<!ELEMENT number:number EMPTY>
+<!ELEMENT number:scientific-number EMPTY>
+<!ELEMENT number:fraction EMPTY>
+
+<!ENTITY % currency-symbol-and-text "number:currency-symbol,number:text?">
+<!ENTITY % number-and-text "number:number,number:text?">
+<!ENTITY % currency-symbol-and-number "((%number-and-text;),(%currency-symbol-and-text;)?) | ((%currency-symbol-and-text;),(%number-and-text;)?)">
+<!ENTITY % currency-style-content "number:text?, (%currency-symbol-and-number;)?">
+
+<!ELEMENT number:currency-style ( style:properties?, (%currency-style-content;), style:map* )>
+<!ELEMENT number:currency-symbol (#PCDATA)>
+<!ATTLIST number:currency-symbol number:language CDATA #IMPLIED>
+<!ATTLIST number:currency-symbol number:country CDATA #IMPLIED>
+
+<!ENTITY % percentage-style-content "( (number:text,(%number-and-text;)?) | (%number-and-text;) )">
+<!ELEMENT number:percentage-style ( style:properties?, %percentage-style-content;, style:map* )>
+
+<!ENTITY % any-date "( number:day | number:month | number:year | number:era | number:day-of-week | number:week-of-year | number:quarter| number:hours | number:am-pm | number:minutes | number:seconds )">
+<!ENTITY % date-style-content "( (number:text,(%any-date;,number:text?)+) | (%any-date;,number:text?)+ )">
+<!ELEMENT number:date-style ( style:properties?, %date-style-content;, style:map* )>
+<!ELEMENT number:day EMPTY>
+<!ATTLIST number:day number:style (short|long) "short">
+<!ATTLIST number:day number:calendar CDATA #IMPLIED>
+<!ELEMENT number:month EMPTY>
+<!ATTLIST number:month number:textual %boolean; "false">
+<!ATTLIST number:month number:style (short|long) "short">
+<!ATTLIST number:month number:calendar CDATA #IMPLIED>
+<!ELEMENT number:year EMPTY>
+<!ATTLIST number:year number:style (short|long) "short">
+<!ATTLIST number:year number:calendar CDATA #IMPLIED>
+<!ELEMENT number:era EMPTY>
+<!ATTLIST number:era number:style (short|long) "short">
+<!ATTLIST number:era number:calendar CDATA #IMPLIED>
+<!ELEMENT number:day-of-week EMPTY>
+<!ATTLIST number:day-of-week number:style (short|long) "short">
+<!ATTLIST number:day-of-week number:calendar CDATA #IMPLIED>
+<!ELEMENT number:week-of-year EMPTY>
+<!ATTLIST number:week-of-year number:calendar CDATA #IMPLIED>
+<!ELEMENT number:quarter EMPTY>
+<!ATTLIST number:quarter number:style (short|long) "short">
+<!ATTLIST number:quarter number:calendar CDATA #IMPLIED>
+
+<!ENTITY % any-time "( number:hours | number:am-pm | number:minutes | number:seconds )">
+<!ENTITY % time-style-content "( (number:text,(%any-time;,number:text?)+) | (%any-time;,number:text?)+)">
+<!ELEMENT number:time-style ( style:properties?, %time-style-content;, style:map* )>
+<!ELEMENT number:hours EMPTY>
+<!ATTLIST number:hours number:style (short|long) "short">
+<!ELEMENT number:minutes EMPTY>
+<!ATTLIST number:minutes number:style (short|long) "short">
+<!ELEMENT number:seconds EMPTY>
+<!ATTLIST number:seconds number:style (short|long) "short">
+<!ATTLIST number:seconds number:decimal-places %integer; "0">
+<!ELEMENT number:am-pm EMPTY>
+
+<!ENTITY % boolean-style-content "( (number:text,(number:boolean,number:text?)?) | (number:boolean,number:text?) )">
+<!ELEMENT number:boolean-style ( style:properties?,%boolean-style-content;, style:map* )>
+<!ELEMENT number:boolean EMPTY>
+
+<!ENTITY % text-style-content "( (number:text,(number:text-content,number:text?)?) | (number:text-content,number:text?) )">
+<!ELEMENT number:text-style ( style:properties?,%text-style-content;, style:map* )>
+<!ELEMENT number:text (#PCDATA)>
+<!ELEMENT number:text-content EMPTY>
+
+<!ATTLIST number:number-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:currency-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:percentage-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:date-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:time-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:boolean-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:text-style style:name %styleName; #REQUIRED>
+
+<!ATTLIST number:number-style style:family CDATA #REQUIRED>
+<!ATTLIST number:currency-style style:family CDATA #REQUIRED>
+<!ATTLIST number:percentage-style style:family CDATA #REQUIRED>
+<!ATTLIST number:date-style style:family CDATA #REQUIRED>
+<!ATTLIST number:time-style style:family CDATA #REQUIRED>
+<!ATTLIST number:boolean-style style:family CDATA #REQUIRED>
+<!ATTLIST number:text-style style:family CDATA #REQUIRED>
+
+<!ATTLIST number:number-style number:language CDATA #IMPLIED>
+<!ATTLIST number:currency-style number:language CDATA #IMPLIED>
+<!ATTLIST number:percentage-style number:language CDATA #IMPLIED>
+<!ATTLIST number:date-style number:language CDATA #IMPLIED>
+<!ATTLIST number:time-style number:language CDATA #IMPLIED>
+<!ATTLIST number:boolean-style number:language CDATA #IMPLIED>
+<!ATTLIST number:text-style number:language CDATA #IMPLIED>
+
+<!ATTLIST number:number-style number:country CDATA #IMPLIED>
+<!ATTLIST number:currency-style number:country CDATA #IMPLIED>
+<!ATTLIST number:percentage-style number:country CDATA #IMPLIED>
+<!ATTLIST number:date-style number:country CDATA #IMPLIED>
+<!ATTLIST number:time-style number:country CDATA #IMPLIED>
+<!ATTLIST number:boolean-style number:country CDATA #IMPLIED>
+<!ATTLIST number:text-style number:country CDATA #IMPLIED>
+
+<!ATTLIST number:number-style number:title CDATA #IMPLIED>
+<!ATTLIST number:currency-style number:title CDATA #IMPLIED>
+<!ATTLIST number:percentage-style number:title CDATA #IMPLIED>
+<!ATTLIST number:date-style number:title CDATA #IMPLIED>
+<!ATTLIST number:time-style number:title CDATA #IMPLIED>
+<!ATTLIST number:boolean-style number:title CDATA #IMPLIED>
+<!ATTLIST number:text-style number:title CDATA #IMPLIED>
+
+<!ATTLIST number:number-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:currency-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:percentage-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:date-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:time-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:boolean-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:text-style style:volatile %boolean; #IMPLIED>
+
+<!ATTLIST number:currency-style number:automatic-order %boolean; "false">
+<!ATTLIST number:date-style number:automatic-order %boolean; "false">
+
+<!ATTLIST number:date-style number:format-source (fixed|language) "fixed">
+<!ATTLIST number:time-style number:format-source (fixed|language) "fixed">
+
+<!ATTLIST number:time-style number:truncate-on-overflow %boolean; "true">
+
+<!ATTLIST number:number number:decimal-places %integer; #IMPLIED>
+<!ATTLIST number:scientific-number number:decimal-places %integer; #IMPLIED>
+
+<!ATTLIST number:number number:min-integer-digits %integer; #IMPLIED>
+<!ATTLIST number:scientific-number number:min-integer-digits %integer; #IMPLIED>
+<!ATTLIST number:fraction number:min-integer-digits %integer; #IMPLIED>
+
+<!ATTLIST number:number number:grouping %boolean; "false">
+<!ATTLIST number:scientific-number number:grouping %boolean; "false">
+<!ATTLIST number:fraction number:grouping %boolean; "false">
+
+<!ATTLIST number:number number:decimal-replacement CDATA #IMPLIED>
+
+<!ATTLIST number:scientific-number number:min-exponent-digits %integer; #IMPLIED>
+
+<!ATTLIST number:fraction number:min-numerator-digits %integer; #IMPLIED>
+
+<!ATTLIST number:fraction number:min-denominator-digits %integer; #IMPLIED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod
new file mode 100755
index 000000000000..d200a39fe7f9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod
@@ -0,0 +1,841 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: drawing.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY % points "CDATA" >
+<!ENTITY % pathData "CDATA" >
+<!ENTITY % gradient-style "(linear|axial|radial|ellipsoid|square|rectangular)" >
+<!ENTITY % draw-position "svg:x %coordinate; #IMPLIED svg:y %coordinate; #IMPLIED">
+<!ENTITY % draw-end-position "table:end-cell-address %cell-address; #IMPLIED table:end-x %coordinate; #IMPLIED table:end-y %coordinate; #IMPLIED">
+<!ENTITY % draw-size "svg:width %coordinate; #IMPLIED svg:height %coordinate; #IMPLIED">
+<!ENTITY % draw-transform "draw:transform CDATA #IMPLIED">
+<!ENTITY % draw-viewbox "svg:viewBox CDATA #REQUIRED">
+<!ENTITY % draw-style-name "draw:style-name %styleName; #IMPLIED presentation:style-name %styleName; #IMPLIED draw:text-style-name %styleName; #IMPLIED">
+<!ENTITY % draw-shape-id "CDATA #IMPLIED" >
+<!ENTITY % draw-text "(text:p|text:unordered-list|text:ordered-list)*">
+<!ENTITY % zindex "draw:z-index %nonNegativeInteger; #IMPLIED">
+<!ENTITY % distance "CDATA">
+<!ENTITY % rectanglePoint "(top-left|top|top-right|left|center|right|bottom-left|bottom|bottom-right)">
+<!ENTITY % vector3D "CDATA">
+<!ENTITY % text-anchor "text:anchor-type %anchorType; #IMPLIED text:anchor-page-number %positiveInteger; #IMPLIED">
+<!ENTITY % layerName "CDATA">
+<!ENTITY % table-background "table:table-background (true | false) #IMPLIED">
+
+<!-- commont presentation shape attributes -->
+<!ENTITY % presentation-style-name "presentation:style-name %styleName; #IMPLIED">
+<!ENTITY % presentation-classes "(title|outline|subtitle|text|graphic|object|chart|table|orgchart|page|notes)" >
+<!-- ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED" -->
+<!ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED presentation:placeholder (true|false) #IMPLIED presentation:user-transformed (true|false) #IMPLIED">
+<!ENTITY % presentationEffects "(none|fade|move|stripes|open|close|dissolve|wavyline|random|lines|laser|appear|hide|move-short|checkerboard|rotate|stretch)" >
+<!ENTITY % presentationEffectDirections "(none|from-left|from-top|from-right|from-bottom|from-center|from-upper-left|from-upper-right|from-lower-left|from-lower-right|to-left|to-top|to-right|to-bottom|to-upper-left|to-upper-right|to-lower-right|to-lower-left|path|spiral-inward-left|spiral-inward-right|spiral-outward-left|spiral-outward-right|vertical|horizontal|to-center|clockwise|counter-clockwise)" >
+<!ENTITY % presentationSpeeds "(slow|medium|fast)" >
+
+<!-- Drawing shapes -->
+<!ELEMENT draw:rect ( office:events?, %draw-text; )>
+<!ATTLIST draw:rect %draw-position; >
+<!ATTLIST draw:rect %draw-end-position; >
+<!ATTLIST draw:rect %table-background; >
+<!ATTLIST draw:rect %draw-size; >
+<!ATTLIST draw:rect %draw-style-name; >
+<!ATTLIST draw:rect %draw-transform; >
+<!ATTLIST draw:rect draw:corner-radius %nonNegativeLength; #IMPLIED>
+<!ATTLIST draw:rect %zindex;>
+<!ATTLIST draw:rect draw:id %draw-shape-id;>
+<!ATTLIST draw:rect %text-anchor;>
+<!ATTLIST draw:rect draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:line ( office:events?, %draw-text; )>
+<!ATTLIST draw:line svg:x1 %length; #REQUIRED>
+<!ATTLIST draw:line svg:y1 %length; #REQUIRED>
+<!ATTLIST draw:line svg:x2 %length; #REQUIRED>
+<!ATTLIST draw:line svg:y2 %length; #REQUIRED>
+<!ATTLIST draw:line %draw-style-name; >
+<!ATTLIST draw:line %draw-transform; >
+<!ATTLIST draw:line %zindex;>
+<!ATTLIST draw:line %draw-end-position; >
+<!ATTLIST draw:line %table-background; >
+<!ATTLIST draw:line draw:id %draw-shape-id;>
+<!ATTLIST draw:line %text-anchor;>
+<!ATTLIST draw:line draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:polyline ( office:events?, %draw-text; )>
+<!ATTLIST draw:polyline %draw-position; >
+<!ATTLIST draw:polyline %draw-size; >
+<!ATTLIST draw:polyline %draw-viewbox; >
+<!ATTLIST draw:polyline draw:points %points; #REQUIRED>
+<!ATTLIST draw:polyline %draw-style-name; >
+<!ATTLIST draw:polyline %draw-transform; >
+<!ATTLIST draw:polyline %zindex;>
+<!ATTLIST draw:polyline %draw-end-position; >
+<!ATTLIST draw:polyline %table-background; >
+<!ATTLIST draw:polyline draw:id %draw-shape-id;>
+<!ATTLIST draw:polyline %text-anchor;>
+<!ATTLIST draw:polyline draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:polygon ( office:events?, %draw-text; )>
+<!ATTLIST draw:polygon %draw-position; >
+<!ATTLIST draw:polygon %draw-end-position; >
+<!ATTLIST draw:polygon %table-background; >
+<!ATTLIST draw:polygon %draw-size; >
+<!ATTLIST draw:polygon %draw-viewbox; >
+<!ATTLIST draw:polygon draw:points %points; #REQUIRED >
+<!ATTLIST draw:polygon %draw-style-name; >
+<!ATTLIST draw:polygon %draw-transform; >
+<!ATTLIST draw:polygon %zindex;>
+<!ATTLIST draw:polygon draw:id %draw-shape-id;>
+<!ATTLIST draw:polygon %text-anchor;>
+<!ATTLIST draw:polygon draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:path ( office:events?, %draw-text; )>
+<!ATTLIST draw:path %draw-position;>
+<!ATTLIST draw:path %draw-end-position; >
+<!ATTLIST draw:path %table-background; >
+<!ATTLIST draw:path %draw-size; >
+<!ATTLIST draw:path %draw-viewbox; >
+<!ATTLIST draw:path svg:d %pathData; #REQUIRED >
+<!ATTLIST draw:path %draw-style-name; >
+<!ATTLIST draw:path %draw-transform; >
+<!ATTLIST draw:path %zindex;>
+<!ATTLIST draw:path draw:id %draw-shape-id;>
+<!ATTLIST draw:path %text-anchor;>
+<!ATTLIST draw:path draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:circle ( office:events?, %draw-text; )>
+<!ATTLIST draw:circle %draw-position; >
+<!ATTLIST draw:circle %draw-size; >
+<!ATTLIST draw:circle %draw-style-name; >
+<!ATTLIST draw:circle %draw-transform; >
+<!ATTLIST draw:circle %zindex;>
+<!ATTLIST draw:circle %draw-end-position; >
+<!ATTLIST draw:circle %table-background; >
+<!ATTLIST draw:circle draw:id %draw-shape-id;>
+<!ATTLIST draw:circle draw:kind (full|section|cut|arc) "full">
+<!ATTLIST draw:circle draw:start-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST draw:circle draw:end-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST draw:circle %text-anchor;>
+<!ATTLIST draw:circle draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:ellipse ( office:events?, %draw-text; )>
+<!ATTLIST draw:ellipse %draw-position; >
+<!ATTLIST draw:ellipse %draw-size; >
+<!ATTLIST draw:ellipse %draw-style-name; >
+<!ATTLIST draw:ellipse %draw-transform; >
+<!ATTLIST draw:ellipse %zindex;>
+<!ATTLIST draw:ellipse %draw-end-position; >
+<!ATTLIST draw:ellipse %table-background; >
+<!ATTLIST draw:ellipse draw:id %draw-shape-id;>
+<!ATTLIST draw:ellipse draw:kind (full|section|cut|arc) "full">
+<!ATTLIST draw:ellipse draw:start-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST draw:ellipse draw:end-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST draw:ellipse %text-anchor;>
+<!ATTLIST draw:ellipse draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:connector ( office:events?, %draw-text;)>
+<!ATTLIST draw:connector draw:type (standard|lines|line|curve) "standard">
+<!ATTLIST draw:connector draw:line-skew CDATA #IMPLIED>
+<!ATTLIST draw:connector %draw-style-name;>
+<!ATTLIST draw:connector svg:x1 %coordinate; #REQUIRED>
+<!ATTLIST draw:connector svg:y1 %coordinate; #REQUIRED>
+<!ATTLIST draw:connector svg:x2 %coordinate; #REQUIRED>
+<!ATTLIST draw:connector svg:y2 %coordinate; #REQUIRED>
+<!ATTLIST draw:connector draw:start-shape %draw-shape-id;>
+<!ATTLIST draw:connector draw:start-glue-point %integer; #IMPLIED>
+<!ATTLIST draw:connector draw:end-shape %draw-shape-id;>
+<!ATTLIST draw:connector draw:end-glue-point %integer; #IMPLIED>
+<!ATTLIST draw:connector %zindex;>
+<!ATTLIST draw:connector %draw-end-position; >
+<!ATTLIST draw:connector %table-background; >
+<!ATTLIST draw:connector draw:id %draw-shape-id;>
+<!ATTLIST draw:connector %text-anchor;>
+<!ATTLIST draw:connector draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:control EMPTY>
+<!ATTLIST draw:control %draw-style-name;>
+<!ATTLIST draw:control %draw-position; >
+<!ATTLIST draw:control %draw-size; >
+<!ATTLIST draw:control %control-id; >
+<!ATTLIST draw:control %zindex;>
+<!ATTLIST draw:control %draw-end-position; >
+<!ATTLIST draw:control %table-background; >
+<!ATTLIST draw:control draw:id %draw-shape-id;>
+<!ATTLIST draw:control %text-anchor;>
+<!ATTLIST draw:control draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:g ( office:events?, (%shapes;)* ) >
+<!ATTLIST draw:g %draw-transform; >
+<!ATTLIST draw:g %draw-style-name; >
+<!ATTLIST draw:g %zindex;>
+<!ATTLIST draw:g %draw-end-position; >
+<!ATTLIST draw:g %table-background; >
+<!ATTLIST draw:g draw:id %draw-shape-id;>
+<!ATTLIST draw:g %text-anchor;>
+<!ATTLIST draw:g draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:page-thumbnail EMPTY>
+<!ATTLIST draw:page-thumbnail draw:page-number %positiveInteger; #IMPLIED>
+<!ATTLIST draw:page-thumbnail %draw-position; >
+<!ATTLIST draw:page-thumbnail %draw-size; >
+<!ATTLIST draw:page-thumbnail %draw-style-name; >
+<!ATTLIST draw:page-thumbnail %presentation-class; >
+<!ATTLIST draw:page-thumbnail %zindex;>
+<!ATTLIST draw:page-thumbnail %draw-end-position; >
+<!ATTLIST draw:page-thumbnail %table-background; >
+<!ATTLIST draw:page-thumbnail draw:id %draw-shape-id;>
+<!ATTLIST draw:page-thumbnail %text-anchor;>
+<!ATTLIST draw:page-thumbnail draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:caption ( office:events?, %draw-text;)>
+<!ATTLIST draw:caption %draw-position; >
+<!ATTLIST draw:caption %draw-end-position; >
+<!ATTLIST draw:caption %table-background; >
+<!ATTLIST draw:caption %draw-size; >
+<!ATTLIST draw:caption %draw-style-name; >
+<!ATTLIST draw:caption %draw-transform; >
+<!ATTLIST draw:caption draw:caption-point-x %coordinate; #IMPLIED>
+<!ATTLIST draw:caption draw:caption-point-y %coordinate; #IMPLIED>
+<!ATTLIST draw:caption %zindex;>
+<!ATTLIST draw:caption draw:id %draw-shape-id;>
+<!ATTLIST draw:caption %text-anchor;>
+<!ATTLIST draw:caption draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:caption draw:corner-radius %nonNegativeLength; #IMPLIED>
+
+<!ELEMENT draw:measure ( office:events?, %draw-text;)>
+<!ATTLIST draw:measure svg:x1 %coordinate; #REQUIRED>
+<!ATTLIST draw:measure svg:y1 %coordinate; #REQUIRED>
+<!ATTLIST draw:measure svg:x2 %coordinate; #REQUIRED>
+<!ATTLIST draw:measure svg:y2 %coordinate; #REQUIRED>
+<!ATTLIST draw:measure %draw-end-position; >
+<!ATTLIST draw:measure %table-background; >
+<!ATTLIST draw:measure %draw-style-name; >
+<!ATTLIST draw:measure %draw-transform; >
+<!ATTLIST draw:measure %zindex;>
+<!ATTLIST draw:measure draw:id %draw-shape-id;>
+<!ATTLIST draw:measure %text-anchor;>
+<!ATTLIST draw:measure draw:layer %layerName; #IMPLIED>
+
+<!-- graphic style elements -->
+<!ELEMENT draw:gradient EMPTY >
+<!ATTLIST draw:gradient draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:gradient draw:style %gradient-style; #REQUIRED>
+<!ATTLIST draw:gradient draw:cx %coordinate; #IMPLIED>
+<!ATTLIST draw:gradient draw:cy %coordinate; #IMPLIED>
+<!ATTLIST draw:gradient draw:start-color %color; #IMPLIED>
+<!ATTLIST draw:gradient draw:end-color %color; #IMPLIED>
+<!ATTLIST draw:gradient draw:start-intensity %percentage; #IMPLIED>
+<!ATTLIST draw:gradient draw:end-intensity %percentage; #IMPLIED>
+<!ATTLIST draw:gradient draw:angle %integer; #IMPLIED>
+<!ATTLIST draw:gradient draw:border %percentage; #IMPLIED>
+
+<!ELEMENT draw:hatch EMPTY >
+<!ATTLIST draw:hatch draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:hatch draw:style (single|double|triple) #REQUIRED >
+<!ATTLIST draw:hatch draw:color %color; #IMPLIED>
+<!ATTLIST draw:hatch draw:distance %length; #IMPLIED>
+<!ATTLIST draw:hatch draw:rotation %integer; #IMPLIED>
+
+
+<!ELEMENT draw:fill-image EMPTY >
+<!ATTLIST draw:fill-image draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:fill-image xlink:href %uriReference; #REQUIRED>
+<!ATTLIST draw:fill-image xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:fill-image xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:fill-image xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:fill-image svg:width %length; #IMPLIED>
+<!ATTLIST draw:fill-image svg:height %length; #IMPLIED>
+
+<!ELEMENT draw:transparency EMPTY>
+<!ATTLIST draw:transparency draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:transparency draw:style %gradient-style; #REQUIRED>
+<!ATTLIST draw:transparency draw:cx %coordinate; #IMPLIED>
+<!ATTLIST draw:transparency draw:cy %coordinate; #IMPLIED>
+<!ATTLIST draw:transparency draw:start %percentage; #IMPLIED>
+<!ATTLIST draw:transparency draw:end %percentage; #IMPLIED>
+<!ATTLIST draw:transparency draw:angle %integer; #IMPLIED>
+<!ATTLIST draw:transparency draw:border %percentage; #IMPLIED>
+
+<!ELEMENT draw:marker EMPTY>
+<!ATTLIST draw:marker draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:marker %draw-viewbox; >
+<!ATTLIST draw:marker svg:d %pathData; #REQUIRED>
+
+<!ELEMENT draw:stroke-dash EMPTY>
+<!ATTLIST draw:stroke-dash draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:stroke-dash draw:style (rect|round) #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:dots1 %integer; #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:dots1-length %length; #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:dots2 %integer; #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:dots2-length %length; #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:distance %length; #IMPLIED>
+
+<!-- stroke attributes -->
+<!ATTLIST style:properties draw:stroke (none|dash|solid) #IMPLIED>
+<!ATTLIST style:properties draw:stroke-dash CDATA #IMPLIED>
+<!ATTLIST style:properties svg:stroke-width %length; #IMPLIED>
+<!ATTLIST style:properties svg:stroke-color %color; #IMPLIED>
+<!ATTLIST style:properties draw:marker-start %styleName; #IMPLIED>
+<!ATTLIST style:properties draw:marker-end %styleName; #IMPLIED>
+<!ATTLIST style:properties draw:marker-start-width %length; #IMPLIED>
+<!ATTLIST style:properties draw:marker-end-width %length; #IMPLIED>
+<!ATTLIST style:properties draw:marker-start-center %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:marker-end-center %boolean; #IMPLIED>
+<!ATTLIST style:properties svg:stroke-opacity %floatOrPercentage; #IMPLIED>
+<!ATTLIST style:properties svg:stroke-linejoin (miter|round|bevel|middle|none|inherit) #IMPLIED>
+
+<!-- text attributes -->
+<!ATTLIST style:properties draw:auto-grow-width %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:auto-grow-height %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fit-to-size %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fit-to-contour %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:textarea-horizontal-align ( left | center | right | justify ) #IMPLIED>
+<!ATTLIST style:properties draw:textarea-vertical-align ( top | middle | bottom ) #IMPLIED>
+
+<!-- fill attributes -->
+<!ATTLIST style:properties draw:fill (none|solid|bitmap|gradient|hatch) #IMPLIED>
+<!ATTLIST style:properties draw:fill-color %color; #IMPLIED>
+<!ATTLIST style:properties draw:fill-gradient-name %styleName; #IMPLIED>
+<!ATTLIST style:properties draw:gradient-step-count CDATA #IMPLIED>
+<!ATTLIST style:properties draw:fill-hatch-name %styleName; #IMPLIED>
+<!ATTLIST style:properties draw:fill-hatch-solid %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-name %styleName; #IMPLIED>
+<!ATTLIST style:properties style:repeat (no-repeat|repeat|stretch) #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-ref-point-x %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-ref-point-y %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-ref-point %rectanglePoint; #IMPLIED>
+<!ATTLIST style:properties draw:tile-repeat-offset CDATA #IMPLIED>
+<!ATTLIST style:properties draw:transparency %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:transparency-name %styleName; #IMPLIED>
+
+<!-- graphic attributes -->
+<!ATTLIST style:properties draw:color-mode (greyscale|mono|watermark|standard) #IMPLIED>
+<!ATTLIST style:properties draw:luminance %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:contrast %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:gamma %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:red %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:green %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:blue %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:color-inversion %boolean; #IMPLIED>
+
+<!-- shadow attributes -->
+<!ATTLIST style:properties draw:shadow (visible|hidden) #IMPLIED>
+<!ATTLIST style:properties draw:shadow-offset-x %length; #IMPLIED>
+<!ATTLIST style:properties draw:shadow-offset-y %length; #IMPLIED>
+<!ATTLIST style:properties draw:shadow-color %color; #IMPLIED>
+<!ATTLIST style:properties draw:shadow-transparency CDATA #IMPLIED>
+
+<!-- connector attributes -->
+<!ATTLIST style:properties draw:start-line-spacing-horizontal %distance; #IMPLIED>
+<!ATTLIST style:properties draw:start-line-spacing-vertical %distance; #IMPLIED>
+<!ATTLIST style:properties draw:end-line-spacing-horizontal %distance; #IMPLIED>
+<!ATTLIST style:properties draw:end-line-spacing-vertical %distance; #IMPLIED>
+
+<!-- measure attributes -->
+<!ATTLIST style:properties draw:line-distance %distance; #IMPLIED>
+<!ATTLIST style:properties draw:guide-overhang %distance; #IMPLIED>
+<!ATTLIST style:properties draw:guide-distance %distance; #IMPLIED>
+<!ATTLIST style:properties draw:start-guide %distance; #IMPLIED>
+<!ATTLIST style:properties draw:end-guide %distance; #IMPLIED>
+<!ATTLIST style:properties draw:measure-align (automatic|left-outside|inside|right-outside) #IMPLIED>
+<!ATTLIST style:properties draw:measure-vertical-align (automatic|above|below|center) #IMPLIED>
+<!ATTLIST style:properties draw:unit (automatic|mm|cm|m|km|pt|pc|inch|ft|mi) #IMPLIED>
+<!ATTLIST style:properties draw:show-unit %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:placing (below|above) #IMPLIED>
+<!ATTLIST style:properties draw:parallel %boolean; #IMPLIED>
+
+<!-- frame attributes -->
+<!ATTLIST style:properties draw:frame-display-scrollbar %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:frame-display-border %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:frame-margin-horizontal %nonNegativePixelLength; #IMPLIED>
+<!ATTLIST style:properties draw:frame-margin-vertical %nonNegativePixelLength; #IMPLIED>
+<!ATTLIST style:properties draw:size-protect %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:move-protect %boolean; #IMPLIED>
+
+<!-- ole object attributes -->
+<!ATTLIST style:properties draw:visible-area-left %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties draw:visible-area-top %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties draw:visible-area-width %positiveLength; #IMPLIED>
+<!ATTLIST style:properties draw:visible-area-height %positiveLength; #IMPLIED>
+
+<!-- fontwork attributes -->
+<!ATTLIST style:properties draw:fontwork-style (rotate|upright|slant-x|slant-y|none) #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-adjust (left|right|autosize|center) #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-distance %distance; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-start %distance; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-mirror %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-outline %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow (normal|slant|none) #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow-color %color; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow-offset-x %distance; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow-offset-y %distance; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-form (none|top-circle|bottom-circle|left-circle|right-circle|top-arc|bottom-arc|left-arc|right-arc|button1|button2|button3|button4) #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-hide-form %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow-transparence %percentage; #IMPLIED>
+
+<!-- caption attributes -->
+<!ATTLIST style:properties draw:caption-type (straight-line|angled-line|angled-connector-line) #IMPLIED>
+<!ATTLIST style:properties draw:caption-angle-type (fixed|free) #IMPLIED>
+<!ATTLIST style:properties draw:caption-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties draw:caption-gap %distance; #IMPLIED>
+<!ATTLIST style:properties draw:caption-escape-direction (horizontal|vertical|auto) #IMPLIED>
+<!ATTLIST style:properties draw:caption-escape %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties draw:caption-line-length %distance; #IMPLIED>
+<!ATTLIST style:properties draw:caption-fit-line-length %boolean; #IMPLIED>
+
+<!-- Animations -->
+<!ELEMENT presentation:sound EMPTY>
+<!ATTLIST presentation:sound xlink:href %uriReference; #REQUIRED>
+<!ATTLIST presentation:sound xlink:type (simple) #FIXED "simple">
+<!ATTLIST presentation:sound xlink:show (new|replace) #IMPLIED>
+<!ATTLIST presentation:sound xlink:actuate (onRequest) "onRequest">
+<!ATTLIST presentation:sound presentation:play-full %boolean; #IMPLIED>
+
+<!ELEMENT presentation:show-shape (presentation:sound)?>
+<!ATTLIST presentation:show-shape draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:show-shape presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:show-shape presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:show-shape presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:show-shape presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:show-shape presentation:path-id CDATA #IMPLIED >
+
+<!ELEMENT presentation:show-text (presentation:sound)?>
+<!ATTLIST presentation:show-text draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:show-text presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:show-text presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:show-text presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:show-text presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:show-text presentation:path-id CDATA #IMPLIED >
+
+<!ELEMENT presentation:hide-shape (presentation:sound)?>
+<!ATTLIST presentation:hide-shape draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:hide-shape presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:hide-shape presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:hide-shape presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:hide-shape presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:hide-shape presentation:path-id CDATA #IMPLIED >
+
+<!ELEMENT presentation:hide-text (presentation:sound)?>
+<!ATTLIST presentation:hide-text draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:hide-text presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:hide-text presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:hide-text presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:hide-text presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:hide-text presentation:path-id CDATA #IMPLIED >
+
+<!ELEMENT presentation:dim (presentation:sound)?>
+<!ATTLIST presentation:dim draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:dim draw:color %color; #REQUIRED>
+
+<!ELEMENT presentation:play EMPTY>
+<!ATTLIST presentation:play draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:play presentation:speed %presentationSpeeds; "medium">
+
+<!ELEMENT presentation:animations (presentation:show-shape|presentation:show-text|presentation:hide-shape|presentation:hide-text|presentation:dim|presentation:play)*>
+
+<!ELEMENT presentation:show EMPTY>
+<!ATTLIST presentation:show presentation:name %styleName; #REQUIRED>
+<!ATTLIST presentation:show presentation:pages CDATA #REQUIRED>
+
+<!ELEMENT presentation:settings (presentation:show)*>
+<!ATTLIST presentation:settings presentation:start-page %styleName; #IMPLIED>
+<!ATTLIST presentation:settings presentation:show %styleName; #IMPLIED>
+<!ATTLIST presentation:settings presentation:full-screen %boolean; "true">
+<!ATTLIST presentation:settings presentation:endless %boolean; "false">
+<!ATTLIST presentation:settings presentation:pause %timeDuration; #IMPLIED>
+<!ATTLIST presentation:settings presentation:show-logo %boolean; "false">
+<!ATTLIST presentation:settings presentation:force-manual %boolean; "false">
+<!ATTLIST presentation:settings presentation:mouse-visible %boolean; "true">
+<!ATTLIST presentation:settings presentation:mouse-as-pen %boolean; "false">
+<!ATTLIST presentation:settings presentation:start-with-navigator %boolean; "false">
+<!ATTLIST presentation:settings presentation:animations (enabled|disabled) "enabled">
+<!ATTLIST presentation:settings presentation:stay-on-top %boolean; "false">
+<!ATTLIST presentation:settings presentation:transition-on-click (enabled|disabled) "enabled">
+
+<!-- Drawing page -->
+<!ELEMENT draw:page (office:forms?,(%shapes;)*,presentation:animations?,presentation:notes?)>
+<!ATTLIST draw:page draw:name %string; #IMPLIED>
+<!ATTLIST draw:page draw:style-name %styleName; #IMPLIED>
+<!ATTLIST draw:page draw:master-page-name %styleName; #REQUIRED>
+<!ATTLIST draw:page presentation:presentation-page-layout-name %styleName; #IMPLIED>
+<!ATTLIST draw:page draw:id %nonNegativeInteger; #IMPLIED>
+
+<!-- Presentation notes -->
+<!ELEMENT presentation:notes (%shapes;)*>
+
+
+<!-- presentation page layouts -->
+<!ELEMENT style:presentation-page-layout (presentation:placeholder)* >
+<!ATTLIST style:presentation-page-layout style:name %styleName; #REQUIRED>
+<!ELEMENT presentation:placeholder EMPTY >
+<!ATTLIST presentation:placeholder presentation:object (title|outline|subtitle|text|graphic|object|chart|orgchart|page|notes|handout) #REQUIRED>
+<!ATTLIST presentation:placeholder svg:x %coordinateOrPercentage; #REQUIRED>
+<!ATTLIST presentation:placeholder svg:y %coordinateOrPercentage; #REQUIRED>
+<!ATTLIST presentation:placeholder svg:width %lengthOrPercentage; #REQUIRED>
+<!ATTLIST presentation:placeholder svg:height %lengthOrPercentage; #REQUIRED>
+
+<!-- presentation page attributes -->
+<!ATTLIST style:properties presentation:transition-type (manual|automatic|semi-automatic) #IMPLIED >
+<!ATTLIST style:properties presentation:transition-style (none|fade-from-left|fade-from-top|fade-from-right|fade-from-bottom|fade-to-center|fade-from-center|move-from-left|move-from-top|move-from-right|move-from-bottom|roll-from-top|roll-from-left|roll-from-right|roll-from-bottom|vertical-stripes|horizontal-stripes|clockwise|counterclockwise|fade-from-upperleft|fade-from-upperright|fade-from-lowerleft|fade-from-lowerright|close-vertical|close-horizontal|open-vertical|open-horizontal|spiralin-left|spiralin-right|spiralout-left|spiralout-right|dissolve|wavyline-from-left|wavyline-from-top|wavyline-from-right|wavyline-from-bottom|random|stretch-from-left|stretch-from-top|stretch-from-right|stretch-from-bottom|vertical-lines|horizontal-lines) #IMPLIED >
+<!ATTLIST style:properties presentation:transition-speed %presentationSpeeds; #IMPLIED >
+<!ATTLIST style:properties presentation:duration %timeDuration; #IMPLIED>
+<!ATTLIST style:properties presentation:visibility (visible|hidden) #IMPLIED>
+<!ATTLIST style:properties draw:background-size (full|border) #IMPLIED>
+<!ATTLIST style:properties presentation:background-objects-visible %boolean; #IMPLIED>
+<!ATTLIST style:properties presentation:background-visible %boolean; #IMPLIED>
+
+
+<!-- text boxes -->
+<!ELEMENT draw:text-box (office:events?,draw:image-map?,
+ (text:h|text:p|text:ordered-list|
+ text:unordered-list|table:table|chart:chart|
+ draw:a|draw:text-box|draw:image)*)>
+<!ATTLIST draw:text-box %draw-style-name;>
+<!ATTLIST draw:text-box %draw-transform; >
+<!ATTLIST draw:text-box draw:name %string; #IMPLIED>
+<!ATTLIST draw:text-box draw:chain-next-name %string; #IMPLIED>
+
+<!ATTLIST draw:text-box %text-anchor;>
+<!ATTLIST draw:text-box %draw-position;>
+<!ATTLIST draw:text-box %draw-end-position; >
+<!ATTLIST draw:text-box %table-background; >
+<!ATTLIST draw:text-box svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:text-box svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:text-box fo:min-height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:text-box %zindex;>
+<!ATTLIST draw:text-box %presentation-class; >
+<!ATTLIST draw:text-box %draw-transform; >
+<!ATTLIST draw:text-box draw:id %draw-shape-id;>
+<!ATTLIST draw:text-box draw:layer %layerName; #IMPLIED>
+
+<!-- image -->
+<!ELEMENT draw:image (office:binary-data?,office:events?,draw:image-map?,svg:desc?,(draw:contour-polygon|draw:contour-path)?)>
+<!ATTLIST draw:image %draw-style-name;>
+<!ATTLIST draw:image draw:name %string; #IMPLIED>
+<!ATTLIST draw:image xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:image xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:image xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:image xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:image draw:filter-name %string; #IMPLIED>
+<!ATTLIST draw:image %text-anchor;>
+<!ATTLIST draw:image %draw-position;>
+<!ATTLIST draw:image %draw-end-position; >
+<!ATTLIST draw:image %table-background; >
+<!ATTLIST draw:image svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:image svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:image %presentation-class; >
+<!ATTLIST draw:image %zindex;>
+<!ATTLIST draw:image draw:id %draw-shape-id;>
+<!ATTLIST draw:image draw:layer %layerName; #IMPLIED>
+
+<!-- objects -->
+<!ELEMENT draw:thumbnail EMPTY>
+<!ATTLIST draw:thumbnail xlink:href %uriReference; #REQUIRED>
+<!ATTLIST draw:thumbnail xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:thumbnail xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:thumbnail xlink:actuate (onLoad) #IMPLIED>
+
+<!ELEMENT math:math ANY> <!-- dummy (we have no MathML DTD currently)-->
+<!ELEMENT draw:object (draw:thumbnail?,(office:document|math:math)?,office:events?, draw:image-map?, svg:desc?,(draw:contour-polygon|draw:contour-path)?)>
+<!ATTLIST draw:object %draw-style-name;>
+<!ATTLIST draw:object draw:name %string; #IMPLIED>
+<!ATTLIST draw:object xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:object xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:object xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:object xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:object %text-anchor;>
+<!ATTLIST draw:object %draw-position;>
+<!ATTLIST draw:object %draw-end-position; >
+<!ATTLIST draw:object %table-background; >
+<!ATTLIST draw:object svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:object svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:object %presentation-class; >
+<!ATTLIST draw:object %zindex;>
+<!ATTLIST draw:object draw:id %draw-shape-id;>
+<!ATTLIST draw:object draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:object draw:notify-on-update-of-ranges %string; #IMPLIED>
+
+<!ELEMENT draw:object-ole (office:binary-data?|office:events?|draw:image-map?|svg:desc?|draw:contour-polygon?|draw:contour-path?|draw:thumbnail?)>
+<!ATTLIST draw:object-ole draw:class-id CDATA #IMPLIED>
+<!ATTLIST draw:object-ole %draw-style-name;>
+<!ATTLIST draw:object-ole draw:name %string; #IMPLIED>
+<!ATTLIST draw:object-ole xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:object-ole xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:object-ole xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:object-ole xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:object-ole %text-anchor;>
+<!ATTLIST draw:object-ole %draw-position;>
+<!ATTLIST draw:object-ole %draw-end-position; >
+<!ATTLIST draw:object-ole %table-background; >
+<!ATTLIST draw:object-ole svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:object-ole svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:object-ole %presentation-class; >
+<!ATTLIST draw:object-ole %zindex;>
+<!ATTLIST draw:object-ole draw:id %draw-shape-id;>
+<!ATTLIST draw:object-ole draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT svg:desc (#PCDATA)>
+
+<!ELEMENT draw:contour-polygon EMPTY>
+<!ATTLIST draw:contour-polygon svg:width %coordinate; #REQUIRED>
+<!ATTLIST draw:contour-polygon svg:height %coordinate; #REQUIRED>
+<!ATTLIST draw:contour-polygon %draw-viewbox;>
+<!ATTLIST draw:contour-polygon svg:points %points; #REQUIRED>
+
+<!ELEMENT draw:contour-path EMPTY>
+<!ATTLIST draw:contour-path svg:width %coordinate; #REQUIRED>
+<!ATTLIST draw:contour-path svg:height %coordinate; #REQUIRED>
+<!ATTLIST draw:contour-path %draw-viewbox;>
+<!ATTLIST draw:contour-path svg:d %pathData; #REQUIRED>
+
+<!-- hyperlink -->
+<!ELEMENT draw:a (draw:image|draw:text-box)>
+<!ATTLIST draw:a xlink:href %uriReference; #REQUIRED>
+<!ATTLIST draw:a xlink:type (simple) #FIXED "simple">
+<!ATTLIST draw:a xlink:show (new|replace) #IMPLIED>
+<!ATTLIST draw:a xlink:actuate (onRequest) "onRequest">
+<!ATTLIST draw:a office:name %string; #IMPLIED>
+<!ATTLIST draw:a office:target-frame-name %string; #IMPLIED>
+<!ATTLIST draw:a office:server-map %boolean; "false">
+
+<!-- 3d properties -->
+<!ATTLIST style:properties dr3d:horizontal-segments %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties dr3d:vertical-segments %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties dr3d:edge-rounding %percentage; #IMPLIED>
+<!ATTLIST style:properties dr3d:edge-rounding-mode (correct|attractive) #IMPLIED>
+<!ATTLIST style:properties dr3d:back-scale %percentage; #IMPLIED>
+<!ATTLIST style:properties dr3d:end-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties dr3d:depth %length; #IMPLIED>
+<!ATTLIST style:properties dr3d:backface-culling (enabled|disabled) #IMPLIED>
+<!ATTLIST style:properties dr3d:lighting-mode (standard|double-sided) #IMPLIED>
+<!ATTLIST style:properties dr3d:normals-kind (object|flat|sphere) #IMPLIED>
+<!ATTLIST style:properties dr3d:normals-direction (normal|inverse) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-generation-mode-x (object|parallel|sphere) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-generation-mode-y (object|parallel|sphere) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-kind (luminance|intesity|color) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-filter (enabled|disabled) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-mode (replace|modulate|blend) #IMPLIED>
+<!ATTLIST style:properties dr3d:ambient-color %color; #IMPLIED>
+<!ATTLIST style:properties dr3d:emissive-color %color; #IMPLIED>
+<!ATTLIST style:properties dr3d:specular-color %color; #IMPLIED>
+<!ATTLIST style:properties dr3d:diffuse-color %color; #IMPLIED>
+<!ATTLIST style:properties dr3d:shininess %percentage; #IMPLIED>
+<!ATTLIST style:properties dr3d:shadow (visible|hidden) #IMPLIED>
+
+<!ELEMENT dr3d:light EMPTY>
+<!ATTLIST dr3d:light dr3d:diffuse-color %color; #IMPLIED>
+<!ATTLIST dr3d:light dr3d:direction %vector3D; #REQUIRED>
+<!ATTLIST dr3d:light dr3d:enabled %boolean; #IMPLIED>
+<!ATTLIST dr3d:light dr3d:specular %boolean; #IMPLIED>
+
+<!ENTITY % shapes3d "(dr3d:scene|dr3d:extrude|dr3d:sphere|dr3d:rotate|dr3d:cube)">
+
+<!ELEMENT dr3d:cube EMPTY>
+<!ATTLIST dr3d:cube dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:cube dr3d:min-edge %vector3D; #IMPLIED>
+<!ATTLIST dr3d:cube dr3d:max-edge %vector3D; #IMPLIED>
+<!ATTLIST dr3d:cube %zindex;>
+<!ATTLIST dr3d:cube draw:id %draw-shape-id;>
+<!ATTLIST dr3d:cube %draw-end-position; >
+<!ATTLIST dr3d:cube %table-background; >
+<!ATTLIST dr3d:cube %draw-style-name; >
+<!ATTLIST dr3d:cube draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT dr3d:sphere EMPTY>
+<!ATTLIST dr3d:sphere dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:sphere dr3d:center %vector3D; #IMPLIED>
+<!ATTLIST dr3d:sphere dr3d:size %vector3D; #IMPLIED>
+<!ATTLIST dr3d:sphere %zindex;>
+<!ATTLIST dr3d:sphere draw:id %draw-shape-id;>
+<!ATTLIST dr3d:sphere %draw-end-position; >
+<!ATTLIST dr3d:sphere %table-background; >
+<!ATTLIST dr3d:sphere %draw-style-name; >
+<!ATTLIST dr3d:sphere draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT dr3d:extrude EMPTY>
+<!ATTLIST dr3d:extrude dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:extrude %draw-viewbox;>
+<!ATTLIST dr3d:extrude svg:d %pathData; #REQUIRED >
+<!ATTLIST dr3d:extrude %zindex;>
+<!ATTLIST dr3d:extrude draw:id %draw-shape-id;>
+<!ATTLIST dr3d:extrude %draw-end-position; >
+<!ATTLIST dr3d:extrude %table-background; >
+<!ATTLIST dr3d:extrude %draw-style-name; >
+<!ATTLIST dr3d:extrude draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT dr3d:rotate EMPTY>
+<!ATTLIST dr3d:rotate dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:rotate %draw-viewbox;>
+<!ATTLIST dr3d:rotate svg:d %pathData; #REQUIRED >
+<!ATTLIST dr3d:rotate %zindex;>
+<!ATTLIST dr3d:rotate draw:id %draw-shape-id;>
+<!ATTLIST dr3d:rotate %draw-end-position; >
+<!ATTLIST dr3d:rotate %table-background; >
+<!ATTLIST dr3d:rotate %draw-style-name; >
+<!ATTLIST dr3d:rotate draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT dr3d:scene (dr3d:light*,(%shapes3d;)*)>
+<!ATTLIST dr3d:scene %draw-style-name; >
+<!ATTLIST dr3d:scene svg:x %coordinate; #IMPLIED>
+<!ATTLIST dr3d:scene svg:y %coordinate; #IMPLIED>
+<!ATTLIST dr3d:scene svg:width %length; #IMPLIED>
+<!ATTLIST dr3d:scene svg:height %length; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:vrp %vector3D; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:vpn %vector3D; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:vup %vector3D; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:projection (parallel|perspective) #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:distance %length; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:focal-length %length; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:shadow-slant %nonNegativeInteger; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:ambient-color %color; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:lighting-mode %boolean; #IMPLIED>
+<!ATTLIST dr3d:scene %zindex;>
+<!ATTLIST dr3d:scene draw:id %draw-shape-id;>
+<!ATTLIST dr3d:scene %draw-end-position; >
+<!ATTLIST dr3d:scene %table-background; >
+
+<!-- layer -->
+
+<!ELEMENT draw:layer-set (draw:layer*)>
+
+<!ELEMENT draw:layer EMPTY>
+<!ATTLIST draw:layer draw:name %layerName; #REQUIRED>
+
+<!-- events -->
+<!ELEMENT presentation:event (presentation:sound)?>
+<!ATTLIST presentation:event %event-name;>
+<!ATTLIST presentation:event presentation:action (none|previous-page|next-page|first-page|last-page|hide|stop|execute|show|verb|fade-out|sound) #REQUIRED>
+<!ATTLIST presentation:event presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:event presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:event presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:event presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:event xlink:href %uriReference; #IMPLIED>
+<!ATTLIST presentation:event xlink:type (simple) #IMPLIED>
+<!ATTLIST presentation:event xlink:show (embed) #IMPLIED>
+<!ATTLIST presentation:event xlink:actuate (onRequest) #IMPLIED>
+<!ATTLIST presentation:event presentation:verb %nonNegativeInteger; #IMPLIED>
+
+<!-- applets -->
+<!ELEMENT draw:applet (draw:thumbnail?, draw:param*, svg:desc?)>
+<!ATTLIST draw:applet xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:applet xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:applet xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:applet xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:applet draw:code CDATA #REQUIRED>
+<!ATTLIST draw:applet draw:object CDATA #IMPLIED>
+<!ATTLIST draw:applet draw:archive CDATA #IMPLIED>
+<!ATTLIST draw:applet draw:may-script %boolean; "false">
+<!ATTLIST draw:applet draw:name CDATA #IMPLIED>
+<!ATTLIST draw:applet %draw-style-name;>
+<!ATTLIST draw:applet svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:applet svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:applet %zindex;>
+<!ATTLIST draw:applet draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:applet %draw-position;>
+<!ATTLIST draw:applet %draw-end-position; >
+
+<!-- plugins -->
+<!ELEMENT draw:plugin (draw:thumbnail?, draw:param*, svg:desc?)>
+<!ATTLIST draw:plugin xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:plugin xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:plugin xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:plugin xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:plugin draw:mime-type CDATA #IMPLIED>
+<!ATTLIST draw:plugin draw:name CDATA #IMPLIED>
+<!ATTLIST draw:plugin %draw-style-name;>
+<!ATTLIST draw:plugin svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:plugin svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:plugin %zindex;>
+<!ATTLIST draw:plugin draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:plugin %draw-position;>
+<!ATTLIST draw:plugin %draw-end-position; >
+
+<!-- Paramaters -->
+<!ELEMENT draw:param EMPTY>
+<!ATTLIST draw:param draw:name CDATA #IMPLIED>
+<!ATTLIST draw:param draw:value CDATA #IMPLIED>
+
+<!-- Floating Frames -->
+<!ELEMENT draw:floating-frame (draw:thumbnail?, svg:desc?)>
+<!ATTLIST draw:floating-frame xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:floating-frame xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:floating-frame xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:floating-frame xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:floating-frame draw:name CDATA #IMPLIED>
+<!ATTLIST draw:floating-frame draw:frame-name CDATA #IMPLIED>
+<!ATTLIST draw:floating-frame %draw-style-name;>
+<!ATTLIST draw:floating-frame svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:floating-frame svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:floating-frame %zindex;>
+<!ATTLIST draw:floating-frame draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:floating-frame %draw-position;>
+<!ATTLIST draw:floating-frame %draw-end-position; >
+
+<!-- Image Maps -->
+<!ELEMENT draw:image-map
+ (draw:area-rectangle|draw:area-circle|draw:area-polygon)*>
+
+<!ELEMENT draw:area-rectangle (svg:desc?,office:events?)>
+<!ATTLIST draw:area-rectangle xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:area-rectangle xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:area-rectangle office:target-frame-name CDATA #IMPLIED>
+<!ATTLIST draw:area-rectangle xlink:show (new|replace) #IMPLIED>
+<!ATTLIST draw:area-rectangle office:name CDATA #IMPLIED>
+<!ATTLIST draw:area-rectangle draw:nohref (nohref) #IMPLIED>
+<!ATTLIST draw:area-rectangle svg:x %coordinate; #REQUIRED>
+<!ATTLIST draw:area-rectangle svg:y %coordinate; #REQUIRED>
+<!ATTLIST draw:area-rectangle svg:width %coordinate; #REQUIRED>
+<!ATTLIST draw:area-rectangle svg:height %coordinate; #REQUIRED>
+
+<!ELEMENT draw:area-circle (svg:desc?,office:events?)>
+<!ATTLIST draw:area-circle xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:area-circle xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:area-circle office:target-frame-name CDATA #IMPLIED>
+<!ATTLIST draw:area-circle xlink:show (new|replace) #IMPLIED>
+<!ATTLIST draw:area-circle office:name CDATA #IMPLIED>
+<!ATTLIST draw:area-circle draw:nohref (nohref) #IMPLIED>
+<!ATTLIST draw:area-circle svg:cx %coordinate; #REQUIRED>
+<!ATTLIST draw:area-circle svg:cy %coordinate; #REQUIRED>
+<!ATTLIST draw:area-circle svg:r %coordinate; #REQUIRED>
+
+<!ELEMENT draw:area-polygon (svg:desc?,office:events?)>
+<!ATTLIST draw:area-polygon xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:area-polygon xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:area-polygon office:target-frame-name CDATA #IMPLIED>
+<!ATTLIST draw:area-polygon xlink:show (new|replace) #IMPLIED>
+<!ATTLIST draw:area-polygon office:name CDATA #IMPLIED>
+<!ATTLIST draw:area-polygon draw:nohref (nohref) #IMPLIED>
+<!ATTLIST draw:area-polygon svg:x %coordinate; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:y %coordinate; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:width %coordinate; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:height %coordinate; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:points %points; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:viewBox CDATA #REQUIRED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod
new file mode 100755
index 000000000000..1cdd7bf50785
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod
@@ -0,0 +1,147 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: dtypes.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!-- datatypes corresponding to XML Schema Part 2 W3C Working draft of -->
+<!-- 07 April 2000 -->
+
+<!-- string -->
+<!ENTITY % string "CDATA">
+<!ENTITY % cString "#PCDATA">
+
+<!-- boolean (values are "true" and "false" -->
+<!ENTITY % boolean "CDATA">
+
+<!-- integer ( ..., -2, -1, 0, 1, 2, ...) -->
+<!ENTITY % integer "CDATA">
+
+<!-- non negative integer ( 0, 1, 2, ...) -->
+<!ENTITY % nonNegativeInteger "CDATA">
+
+<!-- positive integer ( 1, 2, ...) -->
+<!ENTITY % positiveInteger "CDATA">
+<!ENTITY % cPositiveInteger "#PCDATA">
+
+<!ENTITY % positiveNumberOrDefault "CDATA">
+
+<!-- time duration as specified by ISO8601, section 5.5.3.2 -->
+<!ENTITY % timeDuration "CDATA">
+<!ENTITY % cTimeDuration "#PCDATA">
+
+<!-- time instance as specified by ISO8601, section 5.4 -->
+<!ENTITY % timeInstance "CDATA">
+<!ENTITY % cTimeInstance "#PCDATA">
+
+<!-- date instance as specified by ISO8601, section 5.2.1.1, extended format-->
+<!ENTITY % date "CDATA">
+<!ENTITY % cDate "#PCDATA">
+
+<!-- date duration, like timDuration but truncated to full dates -->
+<!ENTITY % dateDuration "CDATA">
+<!ENTITY % cDateDuration "#PCDATA">
+
+<!-- URI reference -->
+<!ENTITY % uriReference "CDATA">
+
+<!-- language code as specified by RFC1766 -->
+<!ENTITY % language "CDATA">
+<!ENTITY % cLanguage "#PCDATA">
+
+<!-- float -->
+<!ENTITY % float "CDATA">
+
+<!-- Some other common used data types -->
+
+<!-- a single UNICODE character -->
+<!ENTITY % character "CDATA">
+
+<!-- a style name -->
+<!ENTITY % styleName "CDATA">
+
+<!-- a target frame mame -->
+<!ENTITY % targetFrameName "CDATA">
+
+<!-- a language without a country as specified by ISO639 -->
+<!ENTITY % languageOnly "CDATA">
+
+<!-- a country as specified by ISO3166 -->
+<!ENTITY % country "CDATA">
+
+<!-- a color value having the format #rrggbb -->
+<!ENTITY % color "CDATA">
+<!-- a color value having the format #rrggbb or "transparent" -->
+<!ENTITY % transparentOrColor "CDATA">
+
+<!-- a percentage -->
+<!ENTITY % percentage "CDATA">
+
+<!-- a length (i.e. 1cm or .6inch) -->
+<!ENTITY % length "CDATA">
+<!ENTITY % positiveLength "CDATA">
+<!ENTITY % nonNegativeLength "CDATA">
+<!ENTITY % lengthOrNoLimit "CDATA">
+
+<!-- a length or a percentage -->
+<!ENTITY % lengthOrPercentage "CDATA">
+<!ENTITY % positiveLengthOrPercentage "CDATA">
+
+<!-- a pixel length (i.e. 2px) -->
+<!ENTITY % nonNegativePixelLength "CDATA">
+
+<!-- a float or a percentage -->
+<!ENTITY % floatOrPercentage "CDATA">
+
+<!-- a text encoding -->
+<!ENTITY % textEncoding "CDATA">
+
+<!-- cell address and cell range address -->
+<!ENTITY % cell-address "CDATA">
+<!ENTITY % cell-range-address "CDATA">
+<!ENTITY % cell-range-address-list "CDATA">
+
+<!-- value types -->
+<!ENTITY % valueType "(float|time|date|percentage|currency|boolean|string)">
+
+<!-- an svg coordinate in different distance formats -->
+<!ENTITY % coordinate "CDATA">
+
+<!ENTITY % coordinateOrPercentage "CDATA">
+
+<!ENTITY % shape "draw:rect|draw:line|draw:polyline|draw:polygon|draw:path|
+ draw:circle|draw:ellipse|draw:g|draw:page-thumbnail|
+ draw:text-box|draw:image|draw:object|draw:object-ole|
+ draw:applet|draw:floating-frame|draw:plugin|
+ draw:measure|draw:caption|draw:connector|chart:chart|
+ dr3d:scene|draw:control" >
+<!ENTITY % shapes "(%shape;)" >
+
+<!ENTITY % anchorType "(page|frame|paragraph|char|as-char)">
+
+<!ENTITY % control-id "form:id CDATA #REQUIRED">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/form.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/form.mod
new file mode 100755
index 000000000000..7c39fe5fd43b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/form.mod
@@ -0,0 +1,312 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: form.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY % controls "form:text|form:textarea|form:fixed-text|form:file|
+ form:password|form:formatted-text|form:button|form:image|
+ form:checkbox|form:radio|form:listbox|form:combobox|form:frame|
+ form:hidden|form:image-frame|form:grid|form:generic-control">
+
+<!ENTITY % name "form:name CDATA #IMPLIED">
+<!ENTITY % service-name "form:service-name CDATA #IMPLIED">
+
+<!ENTITY % navigation "(none|current|parent)">
+<!ENTITY % cycles "(records|current|page)">
+<!ENTITY % url "CDATA">
+
+
+<!ENTITY % types "(submit|reset|push|url)">
+<!ENTITY % button-type "form:button-type %types; 'push'">
+<!ENTITY % current-selected "form:current-selected %boolean; 'false'">
+<!ENTITY % current-value "form:current-value CDATA #IMPLIED">
+<!ENTITY % value "form:value CDATA #IMPLIED">
+<!ENTITY % disabled "form:disabled %boolean; 'false'">
+<!ENTITY % dropdown "form:dropdown %boolean; 'false'">
+<!ENTITY % for "form:for CDATA #IMPLIED">
+<!ENTITY % image-data "form:image-data %url; #IMPLIED">
+<!ENTITY % label "form:label CDATA #IMPLIED">
+<!ENTITY % max-length "form:max-length CDATA #IMPLIED">
+<!ENTITY % printable "form:printable %boolean; 'true'">
+<!ENTITY % readonly "form:readonly %boolean; 'false'">
+<!ENTITY % size "form:size CDATA #IMPLIED">
+<!ENTITY % selected "form:selected %boolean; 'false'">
+<!ENTITY % size "form:size CDATA #IMPLIED">
+<!ENTITY % tab-index "form:tab-index CDATA #IMPLIED">
+<!ENTITY % target-frame "office:target-frame CDATA '_blank'">
+<!ENTITY % target-location "xlink:href %url; #IMPLIED">
+<!ENTITY % tab-stop "form:tab-stop %boolean; 'true'">
+<!ENTITY % title "form:title CDATA #IMPLIED">
+<!ENTITY % default-value "form:default-value CDATA #IMPLIED">
+<!ENTITY % bound-column "form:bound-column CDATA #IMPLIED">
+<!ENTITY % convert-empty "form:convert-empty-to-null %boolean; 'false'">
+<!ENTITY % data-field "form:data-field CDATA #IMPLIED">
+<!ENTITY % list-source "form:list-source CDATA #IMPLIED">
+<!ENTITY % list-source-types "(table|query|sql|sql-pass-through|value-list|table-fields)">
+<!ENTITY % list-source-type "form:list-source-type %list-source-types; #IMPLIED">
+
+<!ELEMENT form:control (%controls;)+>
+<!ATTLIST form:control %name;
+ %service-name;
+ %control-id;>
+
+<!ELEMENT form:form (form:properties?, office:events?, (form:control|form:form)*)>
+<!ATTLIST form:form %name; %service-name;>
+<!ATTLIST form:form xlink:href %url; #IMPLIED>
+<!ATTLIST form:form form:enctype CDATA "application/x-www-form-urlencoded">
+<!ATTLIST form:form form:method CDATA "get">
+<!ATTLIST form:form office:target-frame CDATA "_blank">
+<!ATTLIST form:form form:allow-deletes %boolean; "true">
+<!ATTLIST form:form form:allow-inserts %boolean; "true">
+<!ATTLIST form:form form:allow-updates %boolean; "true">
+<!ATTLIST form:form form:apply-filter %boolean; "false">
+<!ATTLIST form:form form:command CDATA #IMPLIED>
+<!ATTLIST form:form form:command-type (table|query|command) "command">
+<!ATTLIST form:form form:datasource CDATA #IMPLIED>
+<!ATTLIST form:form form:detail-fields CDATA #IMPLIED>
+<!ATTLIST form:form form:escape-processing %boolean; "true">
+<!ATTLIST form:form form:filter CDATA #IMPLIED>
+<!ATTLIST form:form form:ignore-result %boolean; "false">
+<!ATTLIST form:form form:master-fields CDATA #IMPLIED>
+<!ATTLIST form:form form:navigation-mode %navigation; #IMPLIED>
+<!ATTLIST form:form form:order CDATA #IMPLIED>
+<!ATTLIST form:form form:tab-cycle %cycles; #IMPLIED>
+
+<!ELEMENT office:forms (form:form*)>
+<!ATTLIST office:forms form:automatic-focus %boolean; "false">
+<!ATTLIST office:forms form:apply-design-mode %boolean; "true">
+
+<!ELEMENT form:text (form:properties?, office:events?)>
+<!ATTLIST form:text %current-value;
+ %disabled;
+ %max-length;
+ %printable;
+ %readonly;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;
+ %data-field;>
+
+<!ELEMENT form:textarea (form:properties?, office:events?)>
+<!ATTLIST form:textarea %current-value;
+ %disabled;
+ %max-length;
+ %printable;
+ %readonly;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;
+ %data-field;>
+
+<!ELEMENT form:password (form:properties?, office:events?)>
+<!ATTLIST form:password %disabled;
+ %max-length;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;>
+
+<!ATTLIST form:password form:echo-char CDATA "*">
+
+<!ELEMENT form:file (form:properties?, office:events?)>
+<!ATTLIST form:file %current-value;
+ %disabled;
+ %max-length;
+ %printable;
+ %readonly;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;>
+
+<!ELEMENT form:formatted-text (form:properties?, office:events?)>
+<!ATTLIST form:formatted-text %current-value;
+ %disabled;
+ %max-length;
+ %printable;
+ %readonly;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;
+ %data-field;>
+<!ATTLIST form:formatted-text form:max-value CDATA #IMPLIED>
+<!ATTLIST form:formatted-text form:min-value CDATA #IMPLIED>
+<!ATTLIST form:formatted-text form:validation %boolean; "false">
+
+<!ELEMENT form:fixed-text (form:properties?, office:events?)>
+<!ATTLIST form:fixed-text %for;
+ %disabled;
+ %label;
+ %printable;
+ %title;>
+<!ATTLIST form:fixed-text form:multi-line %boolean; "false">
+
+<!ELEMENT form:combobox (form:properties?, office:events?, form:item*)>
+<!ATTLIST form:combobox %current-value;
+ %disabled;
+ %dropdown;
+ %max-length;
+ %printable;
+ %readonly;
+ %size;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;
+ %data-field;
+ %list-source;
+ %list-source-type;>
+<!ATTLIST form:combobox form:auto-complete %boolean; #IMPLIED>
+
+<!ELEMENT form:item (#PCDATA)>
+<!ATTLIST form:item %label;>
+
+<!ELEMENT form:listbox (form:properties?, office:events?, form:option*)>
+<!ATTLIST form:listbox %disabled;
+ %dropdown;
+ %printable;
+ %size;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %bound-column;
+ %data-field;
+ %list-source;
+ %list-source-type;>
+<!ATTLIST form:listbox form:multiple %boolean; "false">
+
+<!ELEMENT form:option (#PCDATA)>
+<!ATTLIST form:option %current-selected;
+ %selected;
+ %label;
+ %value;>
+
+<!ELEMENT form:button (form:properties?, office:events?)>
+<!ATTLIST form:button %button-type;
+ %disabled;
+ %label;
+ %image-data;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %target-frame;
+ %target-location;
+ %title;
+ %value;>
+<!ATTLIST form:button form:default-button %boolean; "false">
+
+<!ELEMENT form:image (form:properties?, office:events?)>
+<!ATTLIST form:image %button-type;
+ %disabled;
+ %image-data;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %target-frame;
+ %target-location;
+ %title;
+ %value;>
+
+<!ELEMENT form:checkbox (form:properties?, office:events?)>
+<!ATTLIST form:checkbox %disabled;
+ %label;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %data-field;>
+<!ENTITY % states "(unchecked|checked|unknown)">
+<!ATTLIST form:checkbox form:current-state %states; #IMPLIED>
+<!ATTLIST form:checkbox form:is-tristate %boolean; "false">
+<!ATTLIST form:checkbox form:state %states; "unchecked">
+
+<!ELEMENT form:radio (form:properties?, office:events?)>
+<!ATTLIST form:radio %current-selected;
+ %disabled;
+ %label;
+ %printable;
+ %selected;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %data-field;>
+
+<!ELEMENT form:frame (form:properties?, office:events?)>
+<!ATTLIST form:frame %disabled;
+ %for;
+ %label;
+ %printable;
+ %title;>
+
+<!ELEMENT form:image-frame (form:properties?, office:events?)>
+<!ATTLIST form:image-frame %disabled;
+ %image-data;
+ %printable;
+ %readonly;
+ %title;
+ %data-field;>
+
+<!ELEMENT form:hidden (form:properties?, office:events?)>
+<!ATTLIST form:hidden %name;
+ %service-name;
+ %value;>
+
+<!ELEMENT form:grid (form:properties?, office:events?, form:column*)>
+<!ATTLIST form:grid %disabled;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %title;>
+<!ENTITY % column-type "form:text| form:textarea| form:formatted-text|form:checkbox| form:listbox| form:combobox">
+<!ELEMENT form:column (%column-type;)+>
+<!ATTLIST form:column %name;
+ %service-name;
+ %label;>
+
+<!ELEMENT form:generic-control (form:properties?, office:events?)>
+
+
+<!ELEMENT form:properties (form:property+)>
+<!ELEMENT form:property (form:property-value*)>
+<!ATTLIST form:property form:property-is-list %boolean; #IMPLIED>
+<!ATTLIST form:property form:property-name CDATA #REQUIRED>
+<!ATTLIST form:property form:property-type (boolean|short|int|long|double|string) #REQUIRED>
+<!ELEMENT form:property-value (#PCDATA)>
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod
new file mode 100755
index 000000000000..0bef2535bcbf
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod
@@ -0,0 +1,94 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: meta.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+
+<!ELEMENT meta:generator (%cString;)>
+
+<!ELEMENT dc:title (%cString;)>
+
+<!ELEMENT dc:description (%cString;)>
+
+<!ELEMENT dc:subject (%cString;)>
+
+<!ELEMENT meta:keywords (meta:keyword)*>
+<!ELEMENT meta:keyword (%cString;)>
+
+<!ELEMENT meta:initial-creator (%cString;)>
+
+<!ELEMENT dc:creator (%cString;)>
+
+<!ELEMENT meta:printed-by (%cString;)>
+
+<!ELEMENT meta:creation-date (%cTimeInstance;)>
+
+<!ELEMENT dc:date (%cTimeInstance;)>
+
+<!ELEMENT meta:print-date (%cTimeInstance;)>
+
+<!ELEMENT meta:template EMPTY>
+<!ATTLIST meta:template xlink:type (simple) #FIXED "simple">
+<!ATTLIST meta:template xlink:actuate (onRequest) "onRequest">
+<!ATTLIST meta:template xlink:href %uriReference; #REQUIRED>
+<!ATTLIST meta:template xlink:title %string; #IMPLIED>
+<!ATTLIST meta:template meta:date %timeInstance; #IMPLIED>
+
+<!ELEMENT meta:auto-reload EMPTY>
+<!ATTLIST meta:auto-reload xlink:type (simple) #IMPLIED>
+<!ATTLIST meta:auto-reload xlink:show (replace) #IMPLIED>
+<!ATTLIST meta:auto-reload xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST meta:auto-reload xlink:href %uriReference; #IMPLIED>
+<!ATTLIST meta:auto-reload meta:delay %timeDuration; "P0S">
+
+<!ELEMENT meta:hyperlink-behaviour EMPTY>
+<!ATTLIST meta:hyperlink-behaviour office:target-frame-name %targetFrameName; #IMPLIED>
+<!ATTLIST meta:hyperlink-behaviour xlink:show (new|replace) #IMPLIED>
+
+<!ELEMENT dc:language (%cLanguage;)>
+
+<!ELEMENT meta:editing-cycles (%cPositiveInteger;)>
+
+<!ELEMENT meta:editing-duration (%cTimeDuration;)>
+
+<!ELEMENT meta:user-defined (%cString;)>
+<!ATTLIST meta:user-defined meta:name %string; #REQUIRED>
+
+<!ELEMENT meta:document-statistic EMPTY>
+<!ATTLIST meta:document-statistic meta:page-count %positiveInteger; #IMPLIED
+ meta:table-count %nonNegativeInteger; #IMPLIED
+ meta:draw-count %nonNegativeInteger; #IMPLIED
+ meta:image-count %nonNegativeInteger; #IMPLIED
+ meta:ole-object-count %nonNegativeInteger; #IMPLIED
+ meta:paragraph-count %nonNegativeInteger; #IMPLIED
+ meta:word-count %nonNegativeInteger; #IMPLIED
+ meta:character-count %nonNegativeInteger; #IMPLIED
+ meta:row-count %nonNegativeInteger; #IMPLIED
+ meta:cell-count %nonNegativeInteger; #IMPLIED
+ meta:object-count %positiveInteger; #IMPLIED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod
new file mode 100755
index 000000000000..3dd3c4177c82
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod
@@ -0,0 +1,54 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: nmspace.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY nFO "http://www.w3.org/1999/XSL/Format">
+<!ENTITY nXLink "http://www.w3.org/1999/xlink">
+<!ENTITY nSVG "http://www.w3.org/2000/svg">
+
+<!-- StarOffice namespace names and prefixes -->
+
+<!ENTITY nOpenOffice "http://openoffice.org/2000">
+<!ENTITY nOpenOffice2001 "http://openoffice.org/2001">
+
+<!ENTITY nOffice "&nOpenOffice;/office">
+<!ENTITY nStyle "&nOpenOffice;/style">
+<!ENTITY nText "&nOpenOffice;/text">
+<!ENTITY nTable "&nOpenOffice;/table">
+<!ENTITY nMeta "&nOpenOffice;/meta">
+<!ENTITY nScript "&nOpenOffice;/script">
+<!ENTITY nDraw "&nOpenOffice;/drawing">
+<!ENTITY nChart "&nOpenOffice;/chart">
+<!ENTITY nNumber "&nOpenOffice;/datastyle">
+<!ENTITY nConfig "&nOpenOffice2001;/config">
+
+
+<!-- dublin core namespace name and prefic -->
+<!ENTITY nDC "http://purl.org/dc/elements/1.1/">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd
new file mode 100755
index 000000000000..ef73319720b1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: office.dtd,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY % dtypes-mod SYSTEM "dtypes.mod">
+%dtypes-mod;
+<!ENTITY % nmspace-mod SYSTEM "nmspace.mod">
+%nmspace-mod;
+<!ENTITY % style-mod SYSTEM "style.mod">
+%style-mod;
+<!ENTITY % office-mod SYSTEM "office.mod">
+%office-mod;
+<!ENTITY % meta-mod SYSTEM "meta.mod">
+%meta-mod;
+<!ENTITY % script-mod SYSTEM "script.mod">
+%script-mod;
+<!ENTITY % drawing-mod SYSTEM "drawing.mod">
+%drawing-mod;
+<!ENTITY % text-mod SYSTEM "text.mod">
+%text-mod;
+<!ENTITY % table-mod SYSTEM "table.mod">
+%table-mod;
+<!ENTITY % chart-mod SYSTEM "chart.mod">
+%chart-mod;
+<!ENTITY % datastyl-mod SYSTEM "datastyl.mod">
+%datastyl-mod;
+<!ENTITY % form-mod SYSTEM "form.mod">
+%form-mod;
+<!ENTITY % settings-mod SYSTEM "settings.mod">
+%settings-mod;
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.mod
new file mode 100755
index 000000000000..ed543b22a520
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.mod
@@ -0,0 +1,238 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: office.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT office:document ( office:meta?,
+ office:settings?,
+ office:script?,
+ office:font-decls?,
+ office:styles?,
+ office:automatic-styles?,
+ office:master-styles?,
+ office:body ) >
+
+<!ATTLIST office:document xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document xmlns:meta CDATA #FIXED "&nMeta;">
+<!ATTLIST office:document xmlns:script CDATA #FIXED "&nScript;">
+<!ATTLIST office:document xmlns:style CDATA #FIXED "&nStyle;">
+<!ATTLIST office:document xmlns:text CDATA #FIXED "&nText;">
+<!ATTLIST office:document xmlns:table CDATA #FIXED "&nTable;">
+<!ATTLIST office:document xmlns:draw CDATA #FIXED "&nDraw;">
+<!ATTLIST office:document xmlns:chart CDATA #FIXED "&nChart;">
+<!ATTLIST office:document xmlns:number CDATA #FIXED "&nNumber;">
+<!ATTLIST office:document xmlns:fo CDATA #FIXED "&nFO;">
+<!ATTLIST office:document xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document xmlns:svg CDATA #FIXED "&nSVG;">
+<!ATTLIST office:document xmlns:dc CDATA #FIXED "&nDC;">
+
+<!ATTLIST office:document office:class
+ (text|text-global|
+ drawing|presentation|
+ spreadsheet|chart) #REQUIRED>
+
+<!ATTLIST office:document office:version %string; #IMPLIED>
+
+<!-- document-styles -->
+<!ELEMENT office:document-styles (
+ office:font-decls?,
+ office:styles?,
+ office:automatic-styles?,
+ office:master-styles? ) >
+
+<!ATTLIST office:document-styles xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document-styles xmlns:meta CDATA #FIXED "&nMeta;">
+<!ATTLIST office:document-styles xmlns:script CDATA #FIXED "&nScript;">
+<!ATTLIST office:document-styles xmlns:style CDATA #FIXED "&nStyle;">
+<!ATTLIST office:document-styles xmlns:text CDATA #FIXED "&nText;">
+<!ATTLIST office:document-styles xmlns:table CDATA #FIXED "&nTable;">
+<!ATTLIST office:document-styles xmlns:draw CDATA #FIXED "&nDraw;">
+<!ATTLIST office:document-styles xmlns:chart CDATA #FIXED "&nChart;">
+<!ATTLIST office:document-styles xmlns:number CDATA #FIXED "&nNumber;">
+<!ATTLIST office:document-styles xmlns:fo CDATA #FIXED "&nFO;">
+<!ATTLIST office:document-styles xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document-styles xmlns:svg CDATA #FIXED "&nSVG;">
+<!ATTLIST office:document-styles xmlns:dc CDATA #FIXED "&nDC;">
+
+<!ATTLIST office:document-styles office:version %string; #IMPLIED>
+
+<!-- document-content -->
+
+<!ELEMENT office:document-content (
+ office:script?,
+ office:font-decls?,
+ office:automatic-styles?,
+ office:body ) >
+
+<!ATTLIST office:document-content xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document-content xmlns:meta CDATA #FIXED "&nMeta;">
+<!ATTLIST office:document-content xmlns:script CDATA #FIXED "&nScript;">
+<!ATTLIST office:document-content xmlns:style CDATA #FIXED "&nStyle;">
+<!ATTLIST office:document-content xmlns:text CDATA #FIXED "&nText;">
+<!ATTLIST office:document-content xmlns:table CDATA #FIXED "&nTable;">
+<!ATTLIST office:document-content xmlns:draw CDATA #FIXED "&nDraw;">
+<!ATTLIST office:document-content xmlns:chart CDATA #FIXED "&nChart;">
+<!ATTLIST office:document-content xmlns:number CDATA #FIXED "&nNumber;">
+<!ATTLIST office:document-content xmlns:fo CDATA #FIXED "&nFO;">
+<!ATTLIST office:document-content xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document-content xmlns:svg CDATA #FIXED "&nSVG;">
+<!ATTLIST office:document-content xmlns:dc CDATA #FIXED "&nDC;">
+
+<!ATTLIST office:document-content office:class
+ (text|text-global|
+ drawing|presentation|
+ spreadsheet|chart) #REQUIRED>
+
+<!ATTLIST office:document-content office:version %string; #IMPLIED>
+
+<!-- document-content -->
+
+<!ELEMENT office:document-meta ( office:meta? ) >
+
+<!ATTLIST office:document-meta xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document-meta xmlns:meta CDATA #FIXED "&nMeta;">
+<!ATTLIST office:document-meta xmlns:script CDATA #FIXED "&nScript;">
+<!ATTLIST office:document-meta xmlns:style CDATA #FIXED "&nStyle;">
+<!ATTLIST office:document-meta xmlns:text CDATA #FIXED "&nText;">
+<!ATTLIST office:document-meta xmlns:table CDATA #FIXED "&nTable;">
+<!ATTLIST office:document-meta xmlns:draw CDATA #FIXED "&nDraw;">
+<!ATTLIST office:document-meta xmlns:chart CDATA #FIXED "&nChart;">
+<!ATTLIST office:document-meta xmlns:number CDATA #FIXED "&nNumber;">
+<!ATTLIST office:document-meta xmlns:fo CDATA #FIXED "&nFO;">
+<!ATTLIST office:document-meta xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document-meta xmlns:svg CDATA #FIXED "&nSVG;">
+<!ATTLIST office:document-meta xmlns:dc CDATA #FIXED "&nDC;">
+
+<!ATTLIST office:document-meta office:version %string; #IMPLIED>
+
+<!ELEMENT office:document-settings (office:settings) >
+<!ATTLIST office:document-settings xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document-settings xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document-settings xmlns:config CDATA #FIXED "&nConfig;">
+
+<!ATTLIST office:document-settings office:version %string; #IMPLIED>
+
+<!ENTITY % meta "(meta:generator?,
+ dc:title?,
+ dc:description?,
+ dc:subject?,
+ meta:initial-creator?,
+ meta:creation-date?,
+ dc:creator?,
+ dc:date?,
+ meta:printed-by?,
+ meta:print-date?,
+ meta:keywords?,
+ dc:language?,
+ meta:editing-cycles?,
+ meta:editing-duration?,
+ meta:hyperlink-behaviour?,
+ meta:auto-reload?,
+ meta:template?,
+ meta:user-defined*,
+ meta:document-statistic?)">
+<!ELEMENT office:meta %meta;>
+
+<!ENTITY % script "(script:library-embedded |
+ script:library-linked)*">
+<!ELEMENT office:script %script;>
+
+<!ELEMENT office:font-decls (style:font-decl)*>
+
+<!ENTITY % styles "(style:default-style|style:style|text:list-style|
+ number:number-style|number:currency-style|number:percentage-style|
+ number:date-style|number:time-style|number:boolean-style|
+ number:text-style|
+ draw:gradient|draw:hatch|draw:fill-image|draw:marker|draw:stroke-dash|
+ style:presentation-page-layout|draw:transparency)">
+
+<!-- Validity constraint: The elements
+ text:outline-style,
+ text:footnotes-configuration,
+ text:endnotes-configuration,
+ text:bibliography-configuration and
+ text:linenumbering-configuration
+ may appear only once!
+ Unfortunatetly, this constraint cannot be easily specified in the DTD.
+-->
+<!ELEMENT office:styles (%styles;|text:outline-style|
+ text:footnotes-configuration|text:endnotes-configuration|
+ text:bibliography-configuration|text:linenumbering-configuration)*>
+
+<!ELEMENT office:automatic-styles (%styles;|style:page-master)*>
+
+<!ELEMENT office:master-styles (draw:layer-set?,style:handout-master?,style:master-page*) >
+
+<!ENTITY % text-decls "text:variable-decls?, text:sequence-decls?,
+ text:user-field-decls?, text:dde-connection-decls?,
+ text:alphabetical-index-auto-mark-file?" >
+
+<!ENTITY % change-marks "text:change | text:change-start | text:change-end">
+
+<!ENTITY % body "(office:forms?,(text:tracked-changes|table:tracked-changes)?,%text-decls;,table:calculation-settings?,table:content-validations?,table:label-ranges?,
+ (text:h|text:p|text:ordered-list|
+ text:unordered-list|table:table|draw:page|
+ draw:a|%shape;|text:section|text:table-of-content|
+ text:illustration-index|text:table-index|text:object-index|
+ text:user-index|text:alphabetical-index|text:bibliography|
+ %change-marks;)*,
+ table:named-expressions?,
+ table:database-ranges?,table:data-pilot-tables?,
+ table:consolidation?,
+ table:dde-links?,
+ presentation:settings?)">
+<!ELEMENT office:body %body;>
+<!ATTLIST office:body table:structure-protected %boolean; "false"
+ table:protection-key CDATA #IMPLIED>
+
+<!ELEMENT office:events (script:event|presentation:event)*>
+
+<!-- DDE source: for text sections and tables -->
+<!ELEMENT office:dde-source EMPTY>
+<!ATTLIST office:dde-source office:dde-application CDATA #IMPLIED>
+<!ATTLIST office:dde-source office:dde-topic CDATA #IMPLIED>
+<!ATTLIST office:dde-source office:dde-item CDATA #IMPLIED>
+<!ATTLIST office:dde-source office:automatic-update %boolean; "false">
+<!ATTLIST office:dde-source office:name CDATA #IMPLIED>
+<!ATTLIST office:dde-source table:conversion-mode (into-default-style-data-style|into-english-number|let-text) "into-default-style-data-style" >
+
+<!-- annotations -->
+<!-- limitation: in the current implementation, only plain text inside of
+ paragraphs is supported -->
+<!ELEMENT office:annotation (text:p)*>
+<!ATTLIST office:annotation office:author %string; #IMPLIED>
+<!ATTLIST office:annotation office:create-date %date; #IMPLIED>
+<!ATTLIST office:annotation office:create-date-string %string; #IMPLIED>
+<!ATTLIST office:annotation office:display %boolean; "false">
+
+<!ELEMENT office:change-info (text:p)*>
+<!ATTLIST office:change-info office:chg-author %string; #REQUIRED>
+<!ATTLIST office:change-info office:chg-date-time %timeInstance; #REQUIRED>
+
+<!ELEMENT office:binary-data (#PCDATA)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/script.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/script.mod
new file mode 100755
index 000000000000..81220e346f20
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/script.mod
@@ -0,0 +1,55 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: script.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT script:library-embedded (script:module*)>
+<!ATTLIST script:library-embedded script:name %string; #REQUIRED>
+<!ATTLIST script:library-embedded script:password %string; #IMPLIED>
+
+<!ELEMENT script:library-linked EMPTY>
+<!ATTLIST script:library-linked script:name %string; #REQUIRED>
+<!ATTLIST script:library-linked xlink:href %string; #REQUIRED>
+<!ATTLIST script:library-linked xlink:type (simple) #FIXED "simple">
+
+<!ELEMENT script:module (#PCDATA)>
+<!ATTLIST script:module script:name %string; #REQUIRED>
+<!ATTLIST script:module script:language %string; #IMPLIED>
+
+
+<!ENTITY % script-language "script:language %string; #REQUIRED">
+<!ENTITY % event-name "script:event-name %string; #REQUIRED">
+<!ENTITY % location "script:location (document|application) #REQUIRED">
+<!ENTITY % macro-name "script:macro-name %string; #REQUIRED">
+
+<!ELEMENT script:event (#PCDATA)>
+<!ATTLIST script:event %script-language;
+ %event-name;
+ %location;
+ %macro-name;>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod
new file mode 100755
index 000000000000..5ba8f38f3ba6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod
@@ -0,0 +1,53 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: settings.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT office:settings (config:config-item-set+)>
+
+<!ENTITY % items "(config:config-item |
+ config:config-item-set |
+ config:config-item-map-named |
+ config:config-item-map-indexed)+">
+
+<!ELEMENT config:config-item-set %items;>
+<!ATTLIST config:config-item-set config:name CDATA #REQUIRED>
+
+<!ELEMENT config:config-item (#PCDATA)>
+<!ATTLIST config:config-item config:name CDATA #REQUIRED
+ config:type (boolean | short | int | long | double | string | datetime | base64Binary) #REQUIRED>
+
+<!ELEMENT config:config-item-map-named (config:config-item-map-entry)+>
+<!ATTLIST config:config-item-map-named config:name CDATA #REQUIRED>
+
+<!ELEMENT config:config-item-map-indexed (config:config-item-map-entry)+>
+<!ATTLIST config:config-item-map-indexed config:name CDATA #REQUIRED>
+
+<!ELEMENT config:config-item-map-entry %items;>
+<!ATTLIST config:config-item-map-entry config:name CDATA #IMPLIED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/style.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/style.mod
new file mode 100755
index 000000000000..5c5b3dca3c4b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/style.mod
@@ -0,0 +1,395 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: style.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT style:font-decl EMPTY>
+<!ATTLIST style:font-decl style:name %string; #REQUIRED>
+<!ATTLIST style:font-decl fo:font-family %string; #REQUIRED>
+<!ATTLIST style:font-decl style:font-style-name %string; #IMPLIED>
+<!ENTITY % fontFamilyGeneric "(roman|swiss|modern|decorative|script|system)">
+<!ATTLIST style:font-decl style:font-family-generic %fontFamilyGeneric;
+ #IMPLIED>
+<!ENTITY % fontPitch "(fixed|variable)">
+<!ATTLIST style:font-decl style:font-pitch %fontPitch; #IMPLIED>
+<!ATTLIST style:font-decl style:font-charset %textEncoding; #IMPLIED>
+
+<!ELEMENT style:style ( style:properties?,office:events?,style:map*)>
+
+<!ATTLIST style:style style:name %styleName; #REQUIRED>
+
+<!ENTITY % styleFamily "(paragraph|text|section|
+ table|table-column|table-row|table-cell|table-page|chart|graphics|default|drawing-page|presentation|control)">
+<!ATTLIST style:style style:family %styleFamily; #REQUIRED>
+
+<!ATTLIST style:style style:parent-style-name %styleName; #IMPLIED>
+<!ATTLIST style:style style:master-page-name %styleName; #IMPLIED>
+<!ATTLIST style:style style:next-style-name %styleName; #IMPLIED>
+<!ATTLIST style:style style:list-style-name %styleName; #IMPLIED>
+<!ATTLIST style:style style:data-style-name %styleName; #IMPLIED>
+
+<!ATTLIST style:style style:auto-update %boolean; "false">
+
+<!ATTLIST style:style style:class %string; #IMPLIED>
+
+<!ELEMENT style:default-style (style:properties?)>
+<!ATTLIST style:default-style style:family %styleFamily; #REQUIRED>
+
+<!ELEMENT style:map EMPTY>
+
+<!ATTLIST style:map style:condition %string; #REQUIRED>
+<!ATTLIST style:map style:apply-style-name %styleName; #REQUIRED>
+<!ATTLIST style:map style:base-cell-address %cell-address; #IMPLIED>
+
+<!ELEMENT style:properties ANY>
+
+<!-- number format properties -->
+<!ATTLIST style:properties style:num-prefix %string; #IMPLIED>
+<!ATTLIST style:properties style:num-suffix %string; #IMPLIED>
+<!ATTLIST style:properties style:num-format %string; #IMPLIED>
+<!ATTLIST style:properties style:num-letter-sync %boolean; #IMPLIED>
+
+<!-- frame properties -->
+<!ATTLIST style:properties fo:width %positiveLength; #IMPLIED>
+<!ATTLIST style:properties fo:height %positiveLength; #IMPLIED>
+<!ATTLIST style:properties style:vertical-pos (top|middle|bottom|from-top) #IMPLIED>
+<!ATTLIST style:properties style:vertical-rel (page|page-content|
+ frame|frame-content|
+ paragraph|paragraph-content|char|
+ line|baseline|text) #IMPLIED>
+<!ATTLIST style:properties style:horizontal-pos (left|center|right|from-left|inside|outside|from-inside) #IMPLIED>
+<!ATTLIST style:properties style:horizontal-rel (page|page-content|
+ frame|frame-content|
+ paragraph|paragraph-content|
+ char) #IMPLIED>
+<!ATTLIST style:properties svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:min-height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:min-width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:max-height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:max-width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties text:anchor-type %anchorType; #IMPLIED>
+<!ATTLIST style:properties text:anchor-page-number %positiveInteger; #IMPLIED>
+<!ATTLIST style:properties svg:x %coordinate; #IMPLIED>
+<!ATTLIST style:properties svg:y %coordinate; #IMPLIED>
+<!ATTLIST style:properties style:print-content %boolean; #IMPLIED>
+<!ATTLIST style:properties style:protect %boolean; #IMPLIED>
+<!ATTLIST style:properties style:wrap (none|left|right|parallel|dynamic|run-through) #IMPLIED>
+<!ENTITY % noLimitOrPositiveInteger "CDATA">
+<!ATTLIST style:properties style:number-wrapped-paragraphs %noLimitOrPositiveInteger; #IMPLIED>
+<!ATTLIST style:properties style:wrap-contour %boolean; #IMPLIED>
+<!ATTLIST style:properties style:wrap-contour-mode (full|outside) #IMPLIED>
+<!ATTLIST style:properties style:run-through (foreground|background) #IMPLIED>
+<!ATTLIST style:properties style:editable %boolean; #IMPLIED>
+<!ATTLIST style:properties style:mirror CDATA #IMPLIED>
+<!ATTLIST style:properties fo:clip CDATA #IMPLIED>
+<!ATTLIST style:properties text:animation (none|scroll|alternate|slide) #IMPLIED>
+<!ATTLIST style:properties text:animation-direction (left|right|up|down) #IMPLIED>
+<!ATTLIST style:properties text:animation-start-inside %boolean; #IMPLIED>
+<!ATTLIST style:properties text:animation-stop-inside %boolean; #IMPLIED>
+<!ATTLIST style:properties text:animation-repeat %integer; #IMPLIED>
+<!ATTLIST style:properties text:animation-delay %timeDuration; #IMPLIED>
+<!ATTLIST style:properties text:animation-steps %length; #IMPLIED>
+
+<!-- text properties -->
+<!ATTLIST style:properties fo:font-variant (normal|small-caps) #IMPLIED>
+<!ATTLIST style:properties fo:text-transform (none|lowercase|
+ uppercase|capitalize) #IMPLIED>
+<!ATTLIST style:properties fo:color %color; #IMPLIED>
+<!ATTLIST style:properties style:use-window-font-color %boolean; #IMPLIED>
+<!ATTLIST style:properties style:text-outline %boolean; #IMPLIED>
+<!ATTLIST style:properties style:text-crossing-out
+ (none|single-line|double-line|thick-line|slash|X)
+ #IMPLIED>
+<!ATTLIST style:properties style:text-position CDATA #IMPLIED>
+<!ATTLIST style:properties style:text-align (left|right|start|center|end|justify|justified) #IMPLIED>
+
+<!ATTLIST style:properties style:font-name %string; #IMPLIED>
+<!ATTLIST style:properties fo:font-family %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-generic %fontFamilyGeneric;
+ #IMPLIED>
+<!ATTLIST style:properties style:font-style-name %string; #IMPLIED>
+<!ATTLIST style:properties style:font-pitch %fontPitch; #IMPLIED>
+<!ATTLIST style:properties style:font-charset %textEncoding; #IMPLIED>
+<!ATTLIST style:properties style:font-name-asian %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-asian %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-generic-asian %fontFamilyGeneric;
+ #IMPLIED>
+<!ATTLIST style:properties style:font-style-name-asian %string; #IMPLIED>
+<!ATTLIST style:properties style:font-pitch-asian %fontPitch; #IMPLIED>
+<!ATTLIST style:properties style:font-charset-asian %textEncoding; #IMPLIED>
+<!ATTLIST style:properties style:font-name-complex %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-complex %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-generic-complex %fontFamilyGeneric;
+ #IMPLIED>
+<!ATTLIST style:properties style:font-style-name-complex %string; #IMPLIED>
+<!ATTLIST style:properties style:font-pitch-complex %fontPitch; #IMPLIED>
+<!ATTLIST style:properties style:font-charset-complex %textEncoding; #IMPLIED>
+
+<!ATTLIST style:properties fo:font-size %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties style:font-size-rel %length; #IMPLIED>
+<!ATTLIST style:properties style:font-size-asian %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties style:font-size-rel-asian %length; #IMPLIED>
+<!ATTLIST style:properties style:font-size-complex %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties style:font-size-rel-complex %length; #IMPLIED>
+<!ENTITY % normalOrLength "CDATA">
+<!ATTLIST style:properties fo:letter-spacing %normalOrLength; #IMPLIED>
+<!ATTLIST style:properties fo:language %languageOnly; #IMPLIED>
+<!ATTLIST style:properties style:language-asian %languageOnly; #IMPLIED>
+<!ATTLIST style:properties style:language-complex %languageOnly; #IMPLIED>
+<!ATTLIST style:properties fo:country %country; #IMPLIED>
+<!ATTLIST style:properties style:country-asian %country; #IMPLIED>
+<!ATTLIST style:properties style:country-complex %country; #IMPLIED>
+<!ENTITY % fontStyle "(normal|italic|oblique)">
+<!ATTLIST style:properties fo:font-style %fontStyle; #IMPLIED>
+<!ATTLIST style:properties style:font-style-asian %fontStyle; #IMPLIED>
+<!ATTLIST style:properties style:font-style-complex %fontStyle; #IMPLIED>
+<!ENTITY % fontRelief "(none|embossed|engraved)">
+<!ATTLIST style:properties style:font-relief %fontRelief; #IMPLIED>
+<!ATTLIST style:properties fo:text-shadow CDATA #IMPLIED>
+<!ATTLIST style:properties style:text-underline
+ (none|single|double|dotted|dash|long-dash|dot-dash|
+ dot-dot-dash|wave|bold|bold-dotted|bold-dash|
+ bold-long-dash|bold-dot-dash|bold-dot-dot-dash|
+ bold-wave|double-wave|small-wave) #IMPLIED>
+<!ATTLIST style:properties style:text-autospace (none | ideograph-alpha) #IMPLIED>
+<!ATTLIST style:properties style:punctuation-wrap (simple | hanging) #IMPLIED>
+<!ATTLIST style:properties style:line-break (normal | strict) #IMPLIED>
+<!ENTITY % fontColorOrColor "CDATA">
+<!ATTLIST style:properties style:text-underline-color %fontColorOrColor;
+ #IMPLIED>
+<!ATTLIST style:properties fo:font-weight CDATA #IMPLIED>
+<!ATTLIST style:properties style:font-weight-asian CDATA #IMPLIED>
+<!ATTLIST style:properties style:font-weight-complex CDATA #IMPLIED>
+<!ATTLIST style:properties fo:score-spaces %boolean; #IMPLIED>
+<!ATTLIST style:properties style:letter-kerning %boolean; #IMPLIED>
+<!ATTLIST style:properties style:text-blinking %boolean; #IMPLIED>
+<!ATTLIST style:properties style:text-background-color %transparentOrColor;
+ #IMPLIED>
+
+<!ATTLIST style:properties style:text-combine (none|letters|lines) #IMPLIED>
+<!ATTLIST style:properties style:text-combine-start-char %character; #IMPLIED>
+<!ATTLIST style:properties style:text-combine-end-char %character; #IMPLIED>
+<!ATTLIST style:properties style:text-emphasize CDATA #IMPLIED>
+<!ATTLIST style:properties style:text-scale %percentage; #IMPLIED>
+<!ATTLIST style:properties style:text-rotation-angle %integer; #IMPLIED>
+<!ATTLIST style:properties style:text-rotation-scale (fixed|line-height) #IMPLIED>
+
+<!-- paragraph properties -->
+<!ENTITY % nonNegativeLengthOrPercentageOrNormal "CDATA">
+<!ATTLIST style:properties fo:line-height
+ %nonNegativeLengthOrPercentageOrNormal; #IMPLIED>
+<!ATTLIST style:properties style:line-height-at-least %nonNegativeLength;
+ #IMPLIED>
+<!ATTLIST style:properties style:line-spacing %length; #IMPLIED>
+<!ATTLIST style:properties fo:text-align (start|end|center|justify) #IMPLIED>
+<!ATTLIST style:properties fo:text-align-last (start|center|justify) #IMPLIED>
+<!ATTLIST style:properties style:text-align-source (fix|value-type) #IMPLIED>
+<!ATTLIST style:properties style:justify-single-word %boolean; #IMPLIED>
+<!ATTLIST style:properties style:break-inside (auto|avoid) #IMPLIED>
+<!ATTLIST style:properties fo:widows %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties fo:orphans %nonNegativeInteger; #IMPLIED>
+
+<!ATTLIST style:properties fo:hyphenate %boolean; #IMPLIED>
+<!ATTLIST style:properties fo:hyphenate-keep (none|page) #IMPLIED>
+<!ATTLIST style:properties fo:hyphenation-remain-char-count %positiveInteger;
+ #IMPLIED>
+<!ATTLIST style:properties fo:hyphenation-push-char-count %positiveInteger;
+ #IMPLIED>
+<!ATTLIST style:properties fo:hyphenation-ladder-count
+ %noLimitOrPositiveInteger; #IMPLIED>
+<!ATTLIST style:properties style:page-number %positiveInteger; #IMPLIED>
+
+<!ELEMENT style:tab-stops (style:tab-stop)*>
+<!ELEMENT style:tab-stop EMPTY>
+<!ATTLIST style:tab-stop style:position %nonNegativeLength; #REQUIRED>
+<!ATTLIST style:tab-stop style:type (left|center|right|char|default) "left">
+<!ATTLIST style:tab-stop style:char %character; #IMPLIED>
+<!ATTLIST style:tab-stop style:leader-char %character; " ">
+
+<!ELEMENT style:drop-cap EMPTY>
+<!ENTITY % wordOrPositiveInteger "CDATA">
+<!ATTLIST style:drop-cap style:length %wordOrPositiveInteger; "1">
+<!ATTLIST style:drop-cap style:lines %positiveInteger; "1">
+<!ATTLIST style:drop-cap style:distance %length; "0cm">
+<!ATTLIST style:drop-cap style:style-name %styleName; #IMPLIED>
+
+<!ATTLIST style:properties style:register-true %boolean; #IMPLIED>
+<!ATTLIST style:properties style:register-truth-ref-style-name %styleName; #IMPLIED>
+<!ATTLIST style:properties fo:margin-left %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:margin-right %positiveLengthOrPercentage;
+ #IMPLIED>
+<!ATTLIST style:properties fo:text-indent %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties style:auto-text-indent %boolean; #IMPLIED>
+<!ATTLIST style:properties fo:margin-top %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:margin-bottom %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:break-before (auto|column|page) #IMPLIED>
+<!ATTLIST style:properties fo:break-after (auto|column|page) #IMPLIED>
+<!ATTLIST style:properties fo:background-color %transparentOrColor; #IMPLIED>
+
+<!ELEMENT style:background-image (office:binary-data?)>
+<!ATTLIST style:background-image xlink:type (simple) #IMPLIED>
+<!ATTLIST style:background-image xlink:href %uriReference; #IMPLIED>
+<!ATTLIST style:background-image xlink:show (embed) #IMPLIED>
+<!ATTLIST style:background-image xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST style:background-image style:repeat (no-repeat|repeat|stretch)
+ "repeat">
+<!ATTLIST style:background-image style:position CDATA "center">
+<!ATTLIST style:background-image style:filter-name %string; #IMPLIED>
+
+<!ELEMENT style:symbol-image (office:binary-data?)>
+<!ATTLIST style:symbol-image xlink:type (simple) #IMPLIED>
+<!ATTLIST style:symbol-image xlink:href %uriReference; #IMPLIED>
+<!ATTLIST style:symbol-image xlink:show (embed) #IMPLIED>
+<!ATTLIST style:symbol-image xlink:actuate (onLoad) #IMPLIED>
+
+<!ATTLIST style:properties fo:border CDATA #IMPLIED>
+<!ATTLIST style:properties fo:border-top CDATA #IMPLIED>
+<!ATTLIST style:properties fo:border-bottom CDATA #IMPLIED>
+<!ATTLIST style:properties fo:border-left CDATA #IMPLIED>
+<!ATTLIST style:properties fo:border-right CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width-top CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width-bottom CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width-left CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width-right CDATA #IMPLIED>
+<!ATTLIST style:properties fo:padding %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties fo:padding-top %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties fo:padding-bottom %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties fo:padding-left %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties fo:padding-right %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties style:shadow CDATA #IMPLIED>
+<!ATTLIST style:properties fo:keep-with-next %boolean; #IMPLIED>
+
+<!ATTLIST style:properties text:number-lines %boolean; "false">
+<!ATTLIST style:properties text:line-number %nonNegativeInteger; #IMPLIED>
+
+<!ATTLIST style:properties style:decimal-places %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties style:tab-stop-distance %nonNegativeLength; #IMPLIED>
+
+<!-- table properties -->
+<!ATTLIST style:properties style:width %positiveLength; #IMPLIED>
+<!ATTLIST style:properties style:rel-width %percentage; #IMPLIED>
+<!ATTLIST style:properties style:may-break-between-rows %boolean; #IMPLIED>
+<!ATTLIST style:properties table:page-style-name %styleName; #IMPLIED>
+<!ATTLIST style:properties table:display %boolean; #IMPLIED>
+
+<!-- table column properties -->
+<!ATTLIST style:properties style:column-width %positiveLength; #IMPLIED>
+<!ENTITY % relWidth "CDATA">
+<!ATTLIST style:properties style:rel-column-width %relWidth; #IMPLIED>
+<!ATTLIST style:properties style:use-optimal-column-width %boolean; #IMPLIED>
+
+<!-- table row properties -->
+<!ATTLIST style:properties style:row-height %positiveLength; #IMPLIED>
+<!ATTLIST style:properties style:min-row-height %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties style:use-optimal-row-height %boolean; #IMPLIED>
+
+<!-- table cell properties -->
+<!ATTLIST style:properties
+ table:align (left | center | right | margins) #IMPLIED
+ table:border-model (collapsing | separating) #IMPLIED
+ fo:vertical-align (top | middle | bottom | automatic) #IMPLIED
+ fo:direction (ltr | ttb) #IMPLIED
+ style:rotation-angle %nonNegativeInteger; #IMPLIED
+ style:rotation-align (none | bottom | top | center) #IMPLIED
+ style:cell-protect CDATA #IMPLIED
+ fo:wrap-option (no-wrap | wrap) #IMPLIED
+>
+<!ELEMENT style:columns (style:column-sep?,style:column*)>
+<!ATTLIST style:columns fo:column-count %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:columns fo:column-gap %positiveLength; #IMPLIED>
+
+<!ELEMENT style:column EMPTY>
+<!ATTLIST style:column style:rel-width CDATA #IMPLIED>
+<!ATTLIST style:column fo:margin-left %positiveLength; #IMPLIED>
+<!ATTLIST style:column fo:margin-right %positiveLength; #IMPLIED>
+
+<!ELEMENT style:column-sep EMPTY>
+<!ATTLIST style:column-sep style:style (none|solid|dotted|dashed|dot-dashed)
+ "solid">
+<!ATTLIST style:column-sep style:width %length; #REQUIRED>
+<!ATTLIST style:column-sep style:height %percentage; "100%">
+<!ATTLIST style:column-sep style:vertical-align (top|middle|bottom) "top">
+<!ATTLIST style:column-sep style:color %color; "#000000">
+
+<!-- page master properties -->
+<!ELEMENT style:page-master (style:properties?, style:header-style?, style:footer-style?)>
+<!ATTLIST style:page-master style:name %styleName; #REQUIRED>
+<!ATTLIST style:page-master style:page-usage (all|left|right|mirrored) "all">
+
+<!ELEMENT style:header-style (style:properties?)>
+<!ELEMENT style:footer-style (style:properties?)>
+
+<!ATTLIST style:properties fo:page-width %length; #IMPLIED>
+<!ATTLIST style:properties fo:page-height %length; #IMPLIED>
+<!ATTLIST style:properties style:paper-tray-number %positiveNumberOrDefault; #IMPLIED>
+<!ATTLIST style:properties style:print-orientation (portrait|landscape) #IMPLIED>
+<!ATTLIST style:properties style:print CDATA #IMPLIED>
+<!ATTLIST style:properties style:print-page-order (ttb|ltr) #IMPLIED>
+<!ATTLIST style:properties style:first-page-number %positiveInteger; #IMPLIED>
+<!ATTLIST style:properties style:scale-to %percentage; #IMPLIED>
+<!ATTLIST style:properties style:scale-to-pages %positiveInteger; #IMPLIED>
+<!ATTLIST style:properties style:table-centering (horizontal | vertical | both | none) #IMPLIED>
+
+<!ATTLIST style:properties style:footnote-max-height %lengthOrNoLimit; #IMPLIED>
+<!ATTLIST style:properties style:vertical-align (top|bottom|middle|basline|auto) #IMPLIED>
+
+<!ELEMENT style:footnote-sep EMPTY>
+<!ATTLIST style:footnote-sep style:width %length; #IMPLIED>
+<!ATTLIST style:footnote-sep style:rel-width %percentage; #IMPLIED>
+<!ATTLIST style:footnote-sep style:color %color; #IMPLIED>
+<!ATTLIST style:footnote-sep style:adjustment (left|center|right) "left">
+<!ATTLIST style:footnote-sep style:distance-before-sep %length; #IMPLIED>
+<!ATTLIST style:footnote-sep style:distance-after-sep %length; #IMPLIED>
+
+<!-- master page -->
+<!ELEMENT style:master-page ( (style:header, style:header-left?)?, (style:footer, style:footer-left?)?,
+ office:forms?,style:style*, (%shapes;)*, presentation:notes? )>
+<!ATTLIST style:master-page style:name %styleName; #REQUIRED>
+<!ATTLIST style:master-page style:page-master-name %styleName; #REQUIRED>
+<!ATTLIST style:master-page style:next-style-name %styleName; #IMPLIED>
+<!ATTLIST style:master-page draw:style-name %styleName; #IMPLIED>
+
+<!-- handout master -->
+<!ELEMENT style:handout-master (%shapes;)*>
+<!ATTLIST style:handout-master presentation:presentation-page-layout-name %styleName; #IMPLIED>
+
+<!ENTITY % hd-ft-content "( text:p | (style:region-left?, style:region-center?, style:region-right?) )">
+<!ELEMENT style:header %hd-ft-content;>
+<!ELEMENT style:footer %hd-ft-content;>
+<!ELEMENT style:header-left %hd-ft-content;>
+<!ATTLIST style:header-left style:display %boolean; "true">
+<!ELEMENT style:footer-left %hd-ft-content;>
+<!ATTLIST style:footer-left style:display %boolean; "true">
+
+<!ENTITY % region-content "(text:p*)">
+<!ELEMENT style:region-left %region-content;>
+<!ELEMENT style:region-center %region-content;>
+<!ELEMENT style:region-right %region-content;>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/table.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/table.mod
new file mode 100755
index 000000000000..f0371a6023ae
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/table.mod
@@ -0,0 +1,497 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: table.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT table:calculation-settings (table:null-date?, table:iteration?)>
+<!ATTLIST table:calculation-settings
+ table:case-sensitive %boolean; "true"
+ table:precision-as-shown %boolean; "false"
+ table:search-criteria-must-apply-to-whole-cell %boolean; "true"
+ table:automatic-find-labels %boolean; "true"
+ table:use-regular-expressions %boolean; "true"
+ table:null-year %positiveInteger; "1930"
+>
+<!ELEMENT table:null-date EMPTY>
+<!ATTLIST table:null-date
+ table:value-type %valueType; #FIXED "date"
+ table:date-value %date; "1899-12-30"
+>
+<!ELEMENT table:iteration EMPTY>
+<!ATTLIST table:iteration
+ table:status (enable | disable) "disable"
+ table:steps %positiveInteger; "100"
+ table:maximum-difference %float; "0.001"
+>
+
+<!ELEMENT table:tracked-changes (table:cell-content-change | table:insertion | table:deletion | table:movement | table:rejection)*>
+<!ATTLIST table:tracked-changes table:track-changes %boolean; "true"
+ table:protected %boolean; "false"
+ table:protection-key CDATA #IMPLIED
+>
+
+<!ELEMENT table:dependences (table:dependence)+>
+<!ELEMENT table:dependence EMPTY>
+<!ATTLIST table:dependence
+ table:id CDATA #REQUIRED
+>
+<!ELEMENT table:deletions (table:cell-content-deletion | table:change-deletion)+>
+<!ELEMENT table:cell-content-deletion (table:cell-address?, table:change-track-table-cell?)>
+<!ATTLIST table:cell-content-deletion
+ table:id CDATA #IMPLIED
+>
+<!ELEMENT table:change-deletion EMPTY>
+<!ATTLIST table:change-deletion
+ table:id CDATA #IMPLIED
+>
+<!ELEMENT table:insertion (office:change-info, table:dependences?, table:deletions?)>
+<!ATTLIST table:insertion
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+ table:type (row | column | table) #REQUIRED
+ table:position %integer; #REQUIRED
+ table:count %positiveInteger; "1"
+ table:table %integer; #IMPLIED
+>
+<!ELEMENT table:deletion (office:change-info, table:dependences?, table:deletions?, table:cut-offs?)>
+<!ATTLIST table:deletion
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+ table:type (row | column | table) #REQUIRED
+ table:position %integer; #REQUIRED
+ table:count %positiveInteger; "1"
+ table:table %integer; #IMPLIED
+ table:multi-deletion-spanned %integer; #IMPLIED
+>
+<!ELEMENT table:cut-offs (table:movement-cut-off+ | (table:insertion-cut-off, table:movement-cut-off*))>
+<!ELEMENT table:insertion-cut-off EMPTY>
+<!ATTLIST table:insertion-cut-off
+ table:id CDATA #REQUIRED
+ table:position %integer; #REQUIRED
+>
+<!ELEMENT table:movement-cut-off EMPTY>
+<!ATTLIST table:movement-cut-off
+ table:id CDATA #REQUIRED
+ table:start-position %integer; #IMPLIED
+ table:end-position %integer; #IMPLIED
+ table:position %integer; #IMPLIED
+>
+<!ELEMENT table:movement (table:source-range-address, table:target-range-address, office:change-info, table:dependences?, table:deletions?)>
+<!ATTLIST table:movement
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+>
+<!ELEMENT table:target-range-address EMPTY>
+<!ATTLIST table:target-range-address
+ table:column %integer; #IMPLIED
+ table:row %integer; #IMPLIED
+ table:table %integer; #IMPLIED
+ table:start-column %integer; #IMPLIED
+ table:start-row %integer; #IMPLIED
+ table:start-table %integer; #IMPLIED
+ table:end-column %integer; #IMPLIED
+ table:end-row %integer; #IMPLIED
+ table:end-table %integer; #IMPLIED
+>
+<!ELEMENT table:source-range-address EMPTY>
+<!ATTLIST table:source-range-address
+ table:column %integer; #IMPLIED
+ table:row %integer; #IMPLIED
+ table:table %integer; #IMPLIED
+ table:start-column %integer; #IMPLIED
+ table:start-row %integer; #IMPLIED
+ table:start-table %integer; #IMPLIED
+ table:end-column %integer; #IMPLIED
+ table:end-row %integer; #IMPLIED
+ table:end-table %integer; #IMPLIED
+>
+<!ELEMENT table:change-track-table-cell (text:p*)>
+<!ATTLIST table:change-track-table-cell
+ table:cell-address %cell-address; #IMPLIED
+ table:matrix-covered (true | false) "false"
+ table:formula %string; #IMPLIED
+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED
+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED
+ table:value-type %valueType; "string"
+ table:value %float; #IMPLIED
+ table:date-value %date; #IMPLIED
+ table:time-value %timeInstance; #IMPLIED
+ table:string-value %string; #IMPLIED
+>
+<!ELEMENT table:cell-content-change (table:cell-address, office:change-info, table:dependences?, table:deletions?, table:previous)>
+<!ATTLIST table:cell-content-change
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+>
+<!ELEMENT table:cell-address EMPTY>
+<!ATTLIST table:cell-address
+ table:column %integer; #IMPLIED
+ table:row %integer; #IMPLIED
+ table:table %integer; #IMPLIED
+>
+<!ELEMENT table:previous (table:change-track-table-cell)>
+<!ATTLIST table:previous
+ table:id CDATA #IMPLIED
+>
+<!ELEMENT table:rejection (office:change-info, table:dependences?, table:deletions?)>
+<!ATTLIST table:rejection
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+>
+
+<!ENTITY % table-columns "table:table-columns | ( table:table-column | table:table-column-group )+">
+<!ENTITY % table-header-columns "table:table-header-columns">
+<!ENTITY % table-rows "table:table-rows | ( table:table-row | table:table-row-group )+">
+<!ENTITY % table-header-rows "table:table-header-rows">
+<!ENTITY % table-column-groups "((%table-columns;),(%table-header-columns;,(%table-columns;)?)?) | (%table-header-columns;,(%table-columns;)?)">
+<!ENTITY % table-row-groups "((%table-rows;),(%table-header-rows;,(%table-rows;)?)?) | (%table-header-rows;,(%table-rows;)?)">
+<!ELEMENT table:table (table:table-source?, table:scenario?, office:forms?, table:shapes?, (%table-column-groups;), (%table-row-groups;))>
+<!ATTLIST table:table
+ table:name %string; #IMPLIED
+ table:style-name %styleName; #IMPLIED
+ table:protected %boolean; "false"
+ table:protection-key CDATA #IMPLIED
+ table:print-ranges %cell-range-address-list; #IMPLIED
+>
+<!ELEMENT table:table-source EMPTY>
+<!ATTLIST table:table-source
+ table:mode (copy-all | copy-results-only) "copy-all"
+ xlink:type (simple) #FIXED "simple"
+ xlink:actuate (onRequest) "onRequest"
+ xlink:href %uriReference; #REQUIRED
+ table:filter-name CDATA #IMPLIED
+ table:table-name CDATA #IMPLIED
+ table:filter-options CDATA #IMPLIED
+ table:refresh-delay %timeDuration; #IMPLIED
+>
+<!ELEMENT table:scenario EMPTY>
+<!ATTLIST table:scenario
+ table:display-border %boolean; "true"
+ table:border-color %color; #IMPLIED
+ table:copy-back %boolean; "true"
+ table:copy-styles %boolean; "true"
+ table:copy-formulas %boolean; "true"
+ table:is-active %boolean; #REQUIRED
+ table:scenario-ranges %cell-range-address-list; #REQUIRED
+ table:comment CDATA #IMPLIED
+>
+<!ELEMENT table:shapes %shapes;>
+<!ELEMENT table:table-column-group (table:table-header-columns | table:table-column | table:table-column-group)+>
+<!ATTLIST table:table-column-group
+ table:display %boolean; "true"
+>
+<!ELEMENT table:table-header-columns (table:table-column | table:table-column-group)+>
+<!ELEMENT table:table-columns (table:table-column | table:table-column-group)+>
+<!ELEMENT table:table-column EMPTY>
+<!ATTLIST table:table-column
+ table:number-columns-repeated %positiveInteger; "1"
+ table:style-name %styleName; #IMPLIED
+ table:visibility (visible | collapse | filter) "visible"
+ table:default-cell-style-name %styleName; #IMPLIED
+>
+<!ELEMENT table:table-row-group (table:table-header-rows | table:table-row | table:table-row-group)+>
+<!ATTLIST table:table-row-group
+ table:display %boolean; "true"
+>
+<!ELEMENT table:table-header-rows (table:table-row | table:table-row-group)+>
+<!ELEMENT table:table-rows (table:table-row | table:table-row-group)+>
+<!ENTITY % table-cells "(table:table-cell|table:covered-table-cell)+">
+<!ELEMENT table:table-row %table-cells;>
+<!ATTLIST table:table-row
+ table:number-rows-repeated %positiveInteger; "1"
+ table:style-name %styleName; #IMPLIED
+ table:visibility (visible | collapse | filter) "visible"
+ table:default-cell-style-name %styleName; #IMPLIED
+>
+
+<!ENTITY % text-wo-table "(text:h|text:p|text:ordered-list|text:unordered-list|%shapes;)*">
+<!ENTITY % cell-content "(table:cell-range-source?,office:annotation?,table:detective?,(table:sub-table|%text-wo-table;))">
+<!ELEMENT table:table-cell %cell-content;>
+<!ELEMENT table:covered-table-cell %cell-content;>
+<!ATTLIST table:table-cell
+ table:number-columns-repeated %positiveInteger; "1"
+ table:number-rows-spanned %positiveInteger; "1"
+ table:number-columns-spanned %positiveInteger; "1"
+ table:style-name %styleName; #IMPLIED
+ table:validation-name CDATA #IMPLIED
+ table:formula %string; #IMPLIED
+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED
+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED
+ table:value-type %valueType; "string"
+ table:value %float; #IMPLIED
+ table:date-value %date; #IMPLIED
+ table:time-value %timeInstance; #IMPLIED
+ table:boolean-value %boolean; #IMPLIED
+ table:string-value %string; #IMPLIED
+ table:currency %string; #IMPLIED
+>
+<!ATTLIST table:covered-table-cell
+ table:number-columns-repeated %positiveInteger; "1"
+ table:style-name %styleName; #IMPLIED
+ table:validation-name CDATA #IMPLIED
+ table:formula %string; #IMPLIED
+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED
+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED
+ table:value-type %valueType; "string"
+ table:value %float; #IMPLIED
+ table:date-value %date; #IMPLIED
+ table:time-value %timeInstance; #IMPLIED
+ table:boolean-value %boolean; #IMPLIED
+ table:string-value %string; #IMPLIED
+ table:currency %string; #IMPLIED
+>
+<!-- cell protection in writer: cell attribute; calc uses format -->
+<!ATTLIST table:table-cell table:protected %boolean; "false">
+
+<!ELEMENT table:cell-range-source EMPTY>
+<!ATTLIST table:cell-range-source
+ table:name %string; #REQUIRED
+ xlink:type (simple) #FIXED "simple"
+ xlink:actuate (onRequest) #FIXED "onRequest"
+ xlink:href %uriReference; #REQUIRED
+ table:filter-name %string; #REQUIRED
+ table:filter-options %string; #IMPLIED
+ table:last-column-spanned %positiveInteger; #REQUIRED
+ table:last-row-spanned %positiveInteger; #REQUIRED
+ table:refresh-delay %timeDuration; #IMPLIED
+>
+
+<!ELEMENT table:detective (table:highlighted-range*, table:operation*)>
+<!ELEMENT table:highlighted-range EMPTY>
+<!ATTLIST table:highlighted-range
+ table:cell-range-address %cell-range-address; #IMPLIED
+ table:direction (from-another-table | to-another-table | from-same-table | to-same-table) #REQUIRED
+ table:contains-error %boolean; "false"
+>
+<!ELEMENT table:operation EMPTY>
+<!ATTLIST table:operation
+ table:name (trace-dependents | remove-dependents | trace-precedents | remove-precedents | trace-errors) #REQUIRED
+ table:index %nonNegativeInteger; #REQUIRED
+>
+
+<!ELEMENT table:content-validations (table:content-validation)+>
+<!ELEMENT table:content-validation (table:help-message?, (table:error-message | (table:error-macro, office:events?))?)>
+<!ATTLIST table:content-validation
+ table:name CDATA #REQUIRED
+ table:condition CDATA #IMPLIED
+ table:base-cell-address %cell-address; #IMPLIED
+ table:allow-empty-cell %boolean; #IMPLIED
+>
+<!ELEMENT table:help-message (text:p*)>
+<!ATTLIST table:help-message
+ table:title CDATA #IMPLIED
+ table:display %boolean; #IMPLIED
+>
+<!ELEMENT table:error-message (text:p*)>
+<!ATTLIST table:error-message
+ table:title CDATA #IMPLIED
+ table:message-type (stop | warning | information) #IMPLIED
+ table:display %boolean; #IMPLIED
+>
+<!ELEMENT table:error-macro EMPTY>
+<!ATTLIST table:error-macro
+ table:name CDATA #IMPLIED
+ table:execute %boolean; #IMPLIED
+>
+
+<!ELEMENT table:sub-table ((%table-column-groups;) , (%table-row-groups;))>
+
+<!ELEMENT table:label-ranges (table:label-range)*>
+<!ELEMENT table:label-range EMPTY>
+<!ATTLIST table:label-range
+ table:label-cell-range-address %cell-range-address; #REQUIRED
+ table:data-cell-range-address %cell-range-address; #REQUIRED
+ table:orientation (column | row) #REQUIRED
+>
+
+<!ELEMENT table:named-expressions (table:named-range | table:named-expression)*>
+<!ELEMENT table:named-range EMPTY>
+<!ATTLIST table:named-range
+ table:name CDATA #REQUIRED
+ table:cell-range-address %cell-range-address; #REQUIRED
+ table:base-cell-address %cell-address; #IMPLIED
+ table:range-usable-as CDATA "none"
+>
+<!ELEMENT table:named-expression EMPTY>
+<!ATTLIST table:named-expression
+ table:name CDATA #REQUIRED
+ table:expression CDATA #REQUIRED
+ table:base-cell-address %cell-address; #IMPLIED
+>
+
+<!ELEMENT table:filter (table:filter-condition | table:filter-and | table:filter-or)>
+<!ATTLIST table:filter
+ table:target-range-address %cell-range-address; #IMPLIED
+ table:condition-source-range-address %cell-range-address; #IMPLIED
+ table:condition-source (self | cell-range) "self"
+ table:display-duplicates %boolean; "true"
+>
+<!ELEMENT table:filter-and (table:filter-or | table:filter-condition)+>
+<!ELEMENT table:filter-or (table:filter-and | table:filter-condition)+>
+<!ELEMENT table:filter-condition EMPTY>
+<!ATTLIST table:filter-condition
+ table:field-number %nonNegativeInteger; #REQUIRED
+ table:case-sensitive %boolean; "false"
+ table:data-type (text | number) "text"
+ table:value CDATA #REQUIRED
+ table:operator CDATA #REQUIRED
+>
+
+<!ELEMENT table:database-ranges (table:database-range)*>
+<!ELEMENT table:database-range ((table:database-source-sql | table:database-source-table | table:database-source-query)?, table:filter?, table:sort?, table:subtotal-rules?)>
+<!ATTLIST table:database-range
+ table:name CDATA #IMPLIED
+ table:is-selection %boolean; "false"
+ table:on-update-keep-styles %boolean; "false"
+ table:on-update-keep-size %boolean; "true"
+ table:has-persistant-data %boolean; "true"
+ table:orientation (row | column) "row"
+ table:contains-header %boolean; "true"
+ table:display-filter-buttons %boolean; "false"
+ table:target-range-address %cell-range-address; #REQUIRED
+ table:refresh-delay %timeDuration; #IMPLIED
+>
+<!ELEMENT table:database-source-sql EMPTY>
+<!ATTLIST table:database-source-sql
+ table:database-name CDATA #REQUIRED
+ table:sql-statement CDATA #REQUIRED
+ table:parse-sql-statements %boolean; "false"
+>
+<!ELEMENT table:database-source-table EMPTY>
+<!ATTLIST table:database-source-table
+ table:database-name CDATA #REQUIRED
+ table:table-name CDATA #REQUIRED
+>
+<!ELEMENT table:database-source-query EMPTY>
+<!ATTLIST table:database-source-query
+ table:database-name CDATA #REQUIRED
+ table:query-name CDATA #REQUIRED
+>
+
+<!ELEMENT table:sort (table:sort-by)+>
+<!ATTLIST table:sort
+ table:bind-styles-to-content %boolean; "true"
+ table:target-range-address %cell-range-address; #IMPLIED
+ table:case-sensitive %boolean; "false"
+ table:language CDATA #IMPLIED
+ table:country CDATA #IMPLIED
+ table:algorithm CDATA #IMPLIED
+>
+<!ELEMENT table:sort-by EMPTY>
+<!ATTLIST table:sort-by
+ table:field-number %nonNegativeInteger; #REQUIRED
+ table:data-type (text | number | automatic | qname-but-not-ncname) "automatic"
+ table:order (ascending | descending) "ascending"
+>
+
+<!ELEMENT table:subtotal-rules (table:sort-groups? | table:subtotal-rule*)?>
+<!ATTLIST table:subtotal-rules
+ table:bind-styles-to-content %boolean; "true"
+ table:case-sensitive %boolean; "false"
+ table:page-breaks-on-group-change %boolean; "false"
+>
+<!ELEMENT table:sort-groups EMPTY>
+<!ATTLIST table:sort-groups
+ table:data-type (text | number | automatic | qname-but-not-ncname) "automatic"
+ table:order (ascending | descending) "ascending"
+>
+<!ELEMENT table:subtotal-rule (table:subtotal-field)*>
+<!ATTLIST table:subtotal-rule
+ table:group-by-field-number %nonNegativeInteger; #REQUIRED
+>
+<!ELEMENT table:subtotal-field EMPTY>
+<!ATTLIST table:subtotal-field
+ table:field-number %nonNegativeInteger; #REQUIRED
+ table:function CDATA #REQUIRED
+>
+
+<!ELEMENT table:data-pilot-tables (table:data-pilot-table)*>
+<!ELEMENT table:data-pilot-table ((table:database-source-sql | table:database-source-table | table:database-source-query | table:source-service | table:source-cell-range)?, table:data-pilot-field+)>
+<!ATTLIST table:data-pilot-table
+ table:name CDATA #REQUIRED
+ table:application-data CDATA #IMPLIED
+ table:grand-total (none | row | column | both) "both"
+ table:ignore-empty-rows %boolean; "false"
+ table:identify-categories %boolean; "false"
+ table:target-range-address %cell-range-address; #REQUIRED
+ table:buttons %cell-range-address-list; #REQUIRED
+>
+<!ELEMENT table:source-service EMPTY>
+<!ATTLIST table:source-service
+ table:name CDATA #REQUIRED
+ table:source-name CDATA #REQUIRED
+ table:object-name CDATA #REQUIRED
+ table:username CDATA #IMPLIED
+ table:password CDATA #IMPLIED
+>
+<!ELEMENT table:source-cell-range (table:filter)?>
+<!ATTLIST table:source-cell-range
+ table:cell-range-address %cell-range-address; #REQUIRED
+>
+<!ELEMENT table:data-pilot-field (table:data-pilot-level)?>
+<!ATTLIST table:data-pilot-field
+ table:source-field-name CDATA #REQUIRED
+ table:is-data-layout-field %boolean; "false"
+ table:function CDATA #REQUIRED
+ table:orientation (row | column | data | page | hidden) #REQUIRED
+ table:used-hierarchy %positiveInteger; "1"
+>
+<!ELEMENT table:data-pilot-level (table:data-pilot-subtotals?, table:data-pilot-members?)>
+<!ATTLIST table:data-pilot-level
+ table:display-empty %boolean; #IMPLIED
+>
+<!ELEMENT table:data-pilot-subtotals (table:data-pilot-subtotal)*>
+<!ELEMENT table:data-pilot-subtotal EMPTY>
+<!ATTLIST table:data-pilot-subtotal
+ table:function CDATA #REQUIRED
+>
+<!ELEMENT table:data-pilot-members (table:data-pilot-member)*>
+<!ELEMENT table:data-pilot-member EMPTY>
+<!ATTLIST table:data-pilot-member
+ table:name CDATA #REQUIRED
+ table:display %boolean; #IMPLIED
+ table:display-details %boolean; #IMPLIED
+>
+
+<!ELEMENT table:consolidation EMPTY>
+<!ATTLIST table:consolidation
+ table:function CDATA #REQUIRED
+ table:source-cell-range-addresses %cell-range-address-list; #REQUIRED
+ table:target-cell-address %cell-address; #REQUIRED
+ table:use-label (none | column | row | both) "none"
+ table:link-to-source-data %boolean; "false"
+>
+
+<!ELEMENT table:dde-links (table:dde-link)+>
+<!ELEMENT table:dde-link (office:dde-source, table:table)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/text.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/text.mod
new file mode 100755
index 000000000000..fd90aff575cd
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/text.mod
@@ -0,0 +1,1103 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: text.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY % fields "text:date |
+ text:time |
+ text:page-number |
+ text:page-continuation |
+ text:sender-firstname |
+ text:sender-lastname |
+ text:sender-initials |
+ text:sender-title |
+ text:sender-position |
+ text:sender-email |
+ text:sender-phone-private |
+ text:sender-fax |
+ text:sender-company |
+ text:sender-phone-work |
+ text:sender-street |
+ text:sender-city |
+ text:sender-postal-code |
+ text:sender-country |
+ text:sender-state-or-province |
+ text:author-name |
+ text:author-initials |
+ text:placeholder |
+ text:variable-set |
+ text:variable-get |
+ text:variable-input |
+ text:user-field-get |
+ text:user-field-input |
+ text:sequence |
+ text:expression |
+ text:text-input |
+ text:database-display |
+ text:database-next |
+ text:database-row-select |
+ text:database-row-number |
+ text:database-name |
+ text:initial-creator |
+ text:creation-date |
+ text:creation-time |
+ text:description |
+ text:user-defined |
+ text:print-time |
+ text:print-date |
+ text:printed-by |
+ text:title |
+ text:subject |
+ text:keywords |
+ text:editing-cycles |
+ text:editing-duration |
+ text:modification-time |
+ text:modification-date |
+ text:creator |
+ text:conditional-text |
+ text:hidden-text |
+ text:hidden-paragraph |
+ text:chapter |
+ text:file-name |
+ text:template-name |
+ text:set-page-variable |
+ text:get-page-variable |
+ text:execute-macro |
+ text:dde-connection |
+ text:reference-ref |
+ text:sequence-ref |
+ text:bookmark-ref |
+ text:footnote-ref |
+ text:endnote-ref |
+ text:sheet-name |
+ text:bibliography-mark |
+ text:page-count |
+ text:paragraph-count |
+ text:word-count |
+ text:character-count |
+ text:table-count |
+ text:image-count |
+ text:object-count |
+ office:annotation |
+ text:script |
+ text:measure" >
+
+<!ENTITY % inline-text "(#PCDATA|
+ text:span|text:tab-stop|text:s|text:line-break|
+ text:footnote|text:endnote|text:a|
+ text:bookmark|text:bookmark-start|text:bookmark-end|
+ text:reference-mark|text:reference-mark-start|
+ text:reference-mark-end|%fields;|%shape;|
+ text:toc-mark-start | text:toc-mark-end |
+ text:toc-mark | text:user-index-mark-start |
+ text:user-index-mark-end | text:user-index-mark |
+ text:alphabetical-index-mark-start |
+ text:alphabetical-index-mark-end |
+ text:alphabetical-index-mark |
+ %change-marks; | draw:a | text:ruby)*">
+
+<!ELEMENT text:p %inline-text;>
+<!ELEMENT text:h %inline-text;>
+
+<!ATTLIST text:p text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:p text:cond-style-name %styleName; #IMPLIED>
+
+<!ATTLIST text:h text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:h text:cond-style-name %styleName; #IMPLIED>
+<!ATTLIST text:h text:level %positiveInteger; "1">
+
+<!ELEMENT text:span %inline-text;>
+<!ATTLIST text:span text:style-name %styleName; #REQUIRED>
+
+<!ELEMENT text:a %inline-text;>
+<!ATTLIST text:a xlink:href %uriReference; #REQUIRED>
+<!ATTLIST text:a xlink:type (simple) #FIXED "simple">
+<!ATTLIST text:a xlink:actuate (onRequest) "onRequest">
+<!ATTLIST text:a xlink:show (new|replace) "replace">
+<!ATTLIST text:a office:name %string; #IMPLIED>
+<!ATTLIST text:a office:target-frame-name %string; #IMPLIED>
+<!ATTLIST text:a text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:a text:visited-style-name %styleName; #IMPLIED>
+
+
+<!ELEMENT text:s EMPTY>
+<!ATTLIST text:s text:c %positiveInteger; "1">
+
+<!ELEMENT text:tab-stop EMPTY>
+
+<!ELEMENT text:line-break EMPTY>
+
+
+<!ENTITY % list-items "((text:list-header,text:list-item*)|text:list-item+)">
+<!ELEMENT text:ordered-list %list-items;>
+<!ELEMENT text:unordered-list %list-items;>
+
+
+<!ATTLIST text:ordered-list text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:unordered-list text:style-name %styleName; #IMPLIED>
+
+<!ATTLIST text:ordered-list text:continue-numbering %boolean; "false">
+
+<!ELEMENT text:list-header (text:p)+>
+<!ELEMENT text:list-item (text:p|text:ordered-list|text:unordered-list)+>
+
+<!ATTLIST text:list-item text:restart-numbering %boolean; "false">
+<!ATTLIST text:list-item text:start-value %positiveInteger; #IMPLIED>
+
+<!ELEMENT text:list-style (text:list-level-style-number|
+ text:list-level-style-bullet|
+ text:list-level-style-image)+>
+
+<!ATTLIST text:list-style style:name %styleName; #IMPLIED>
+
+<!ATTLIST text:list-style text:consecutive-numbering %boolean; "false">
+
+
+<!ELEMENT text:list-level-style-number (style:properties?)>
+
+<!ATTLIST text:list-level-style-number text:level %positiveInteger;
+ #REQUIRED>
+<!ATTLIST text:list-level-style-number text:style-name %styleName; #IMPLIED>
+
+<!ATTLIST text:list-level-style-number style:num-format %string; #REQUIRED>
+<!ATTLIST text:list-level-style-number style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:list-level-style-number style:num-suffix %string; #IMPLIED>
+<!ATTLIST text:list-level-style-number style:num-letter-sync %boolean;
+ "false">
+<!ATTLIST text:list-level-style-number text:display-levels %positiveInteger;
+ "1">
+<!ATTLIST text:list-level-style-number text:start-value %positiveInteger;
+ "1">
+<!ELEMENT text:list-level-style-bullet (style:properties?)>
+
+<!ATTLIST text:list-level-style-bullet text:level %positiveInteger; #REQUIRED>
+<!ATTLIST text:list-level-style-bullet text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:list-level-style-bullet text:bullet-char %character; #REQUIRED>
+<!ATTLIST text:list-level-style-bullet style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:list-level-style-bullet style:num-suffix %string; #IMPLIED>
+
+<!ELEMENT text:list-level-style-image (style:properties?,office:binary-data?)>
+
+<!ATTLIST text:list-level-style-image text:level %positiveInteger; #REQUIRED>
+<!ATTLIST text:list-level-style-image xlink:type (simple) #IMPLIED>
+<!ATTLIST text:list-level-style-image xlink:href %uriReference; #IMPLIED>
+<!ATTLIST text:list-level-style-image xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST text:list-level-style-image xlink:show (embed) #IMPLIED>
+
+
+<!-- list properties -->
+<!ATTLIST style:properties text:space-before %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties text:min-label-width %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties text:min-label-distance %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties text:enable-numbering %boolean; #IMPLIED>
+<!ATTLIST style:properties style:list-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:outline-style (text:outline-level-style)+>
+
+<!ELEMENT text:outline-level-style (style:properties?)>
+
+<!ATTLIST text:outline-level-style text:level %positiveInteger;
+ #REQUIRED>
+<!ATTLIST text:outline-level-style text:style-name %styleName; #IMPLIED>
+
+<!ATTLIST text:outline-level-style style:num-format %string; #REQUIRED>
+<!ATTLIST text:outline-level-style style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:outline-level-style style:num-suffix %string; #IMPLIED>
+<!ATTLIST text:outline-level-style style:num-letter-sync %boolean;
+ "false">
+<!ATTLIST text:outline-level-style text:display-levels %positiveInteger;
+ "1">
+<!ATTLIST text:outline-level-style text:start-value %positiveInteger;
+ "1">
+
+<!ENTITY % field-declarations "text:variable-decls?,
+ text:user-field-decls?,
+ text:sequence-decls?">
+
+<!ENTITY % variableName "CDATA">
+
+<!ENTITY % formula "CDATA">
+
+<!ENTITY % valueAttr "text:value-type %valueType; #REQUIRED">
+
+<!ENTITY % valueAndTypeAttr "%valueAttr;
+ text:value %float; #IMPLIED
+ text:date-value %date; #IMPLIED
+ text:time-value %timeInstance; #IMPLIED
+ text:boolean-value %boolean; #IMPLIED
+ text:string-value %string; #IMPLIED
+ text:currency CDATA #IMPLIED" >
+
+<!ENTITY % numFormat 'style:num-format CDATA #IMPLIED
+ style:num-letter-sync %boolean; "false"'>
+
+
+<!ELEMENT text:date (#PCDATA)>
+<!ATTLIST text:date text:date-value %date; #IMPLIED>
+<!ATTLIST text:date text:date-adjust %dateDuration; #IMPLIED>
+<!ATTLIST text:date text:fixed %boolean; "false">
+<!ATTLIST text:date style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:time (#PCDATA)>
+<!ATTLIST text:time text:time-value %timeInstance; #IMPLIED>
+<!ATTLIST text:time text:time-adjust %timeDuration; #IMPLIED>
+<!ATTLIST text:time text:fixed %boolean; "false">
+<!ATTLIST text:time style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:page-number (#PCDATA)>
+<!ATTLIST text:page-number text:page-adjust %positiveInteger; #IMPLIED>
+<!ATTLIST text:page-number text:select-page (previous|current|next) "current">
+<!ATTLIST text:page-number %numFormat;>
+
+<!ELEMENT text:page-continuation (#PCDATA)>
+<!ATTLIST text:page-continuation text:select-page (previous|next) #REQUIRED>
+<!ATTLIST text:page-continuation text:string-value %string; #IMPLIED>
+
+<!ELEMENT text:sender-firstname (#PCDATA)>
+<!ATTLIST text:sender-firstname text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-lastname (#PCDATA)>
+<!ATTLIST text:sender-lastname text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-initials (#PCDATA)>
+<!ATTLIST text:sender-initials text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-title (#PCDATA)>
+<!ATTLIST text:sender-title text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-position (#PCDATA)>
+<!ATTLIST text:sender-position text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-email (#PCDATA)>
+<!ATTLIST text:sender-email text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-phone-private (#PCDATA)>
+<!ATTLIST text:sender-phone-private text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-fax (#PCDATA)>
+<!ATTLIST text:sender-fax text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-company (#PCDATA)>
+<!ATTLIST text:sender-company text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-phone-work (#PCDATA)>
+<!ATTLIST text:sender-phone-work text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-street (#PCDATA)>
+<!ATTLIST text:sender-street text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-city (#PCDATA)>
+<!ATTLIST text:sender-city text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-postal-code (#PCDATA)>
+<!ATTLIST text:sender-postal-code text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-country (#PCDATA)>
+<!ATTLIST text:sender-country text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-state-or-province (#PCDATA)>
+<!ATTLIST text:sender-state-or-province text:fixed %boolean; "true">
+
+<!ELEMENT text:author-name (#PCDATA)>
+<!ATTLIST text:author-name text:fixed %boolean; "true">
+
+<!ELEMENT text:author-initials (#PCDATA)>
+<!ATTLIST text:author-initials text:fixed %boolean; "true">
+
+<!ELEMENT text:placeholder (#PCDATA)>
+<!ATTLIST text:placeholder text:placeholder-type (text|table|text-box|image|object) #REQUIRED>
+<!ATTLIST text:placeholder text:description %string; #IMPLIED>
+
+<!ELEMENT text:variable-decls (text:variable-decl)*>
+
+<!ELEMENT text:variable-decl EMPTY>
+<!ATTLIST text:variable-decl text:name %variableName; #REQUIRED>
+<!ATTLIST text:variable-decl %valueAndTypeAttr;>
+
+<!ELEMENT text:variable-set (#PCDATA)>
+<!ATTLIST text:variable-set text:name %variableName; #REQUIRED>
+<!ATTLIST text:variable-set text:formula %formula; #IMPLIED>
+<!ATTLIST text:variable-set %valueAndTypeAttr;>
+<!ATTLIST text:variable-set text:display (value|none) "value">
+<!ATTLIST text:variable-set style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:variable-get (#PCDATA)>
+<!ATTLIST text:variable-get text:name %variableName; #REQUIRED>
+<!ATTLIST text:variable-get text:display (value|formula) "value">
+<!ATTLIST text:variable-get style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:variable-input (#PCDATA)>
+<!ATTLIST text:variable-input text:name %variableName; #REQUIRED>
+<!ATTLIST text:variable-input text:description %string; #IMPLIED>
+<!ATTLIST text:variable-input %valueAndTypeAttr;>
+<!ATTLIST text:variable-input text:display (value|none) "value">
+<!ATTLIST text:variable-input style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:user-field-decls (text:user-field-decl)*>
+
+<!ELEMENT text:user-field-decl EMPTY>
+<!ATTLIST text:user-field-decl text:name %variableName; #REQUIRED>
+<!ATTLIST text:user-field-decl text:formula %formula; #IMPLIED>
+<!ATTLIST text:user-field-decl %valueAndTypeAttr;>
+
+<!ELEMENT text:user-field-get (#PCDATA)>
+<!ATTLIST text:user-field-get text:name %variableName; #REQUIRED>
+<!ATTLIST text:user-field-get text:display (value|formula|none) "value">
+<!ATTLIST text:user-field-get style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:user-field-input (#PCDATA)>
+<!ATTLIST text:user-field-input text:name %variableName; #REQUIRED>
+<!ATTLIST text:user-field-input text:description %string; #IMPLIED>
+<!ATTLIST text:user-field-input style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:sequence-decls (text:sequence-decl)*>
+
+<!ELEMENT text:sequence-decl EMPTY>
+<!ATTLIST text:sequence-decl text:name %variableName; #REQUIRED>
+<!ATTLIST text:sequence-decl text:display-outline-level %positiveInteger; "0">
+<!ATTLIST text:sequence-decl text:separation-character %character; ".">
+
+<!ELEMENT text:sequence (#PCDATA)>
+<!ATTLIST text:sequence text:name %variableName; #REQUIRED>
+<!ATTLIST text:sequence text:formula %formula; #IMPLIED>
+<!ATTLIST text:sequence %numFormat;>
+<!ATTLIST text:sequence text:ref-name ID #IMPLIED>
+
+<!ELEMENT text:expression (#PCDATA)>
+<!ATTLIST text:expression text:formula %formula; #IMPLIED>
+<!ATTLIST text:expression text:display (value|formula ) "value">
+<!ATTLIST text:expression %valueAndTypeAttr;>
+<!ATTLIST text:expression style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:text-input (#PCDATA)>
+<!ATTLIST text:text-input text:description %string; #IMPLIED>
+
+<!ENTITY % database-table "text:database-name CDATA #REQUIRED
+ text:table-name CDATA #REQUIRED">
+
+<!ELEMENT text:database-display (#PCDATA)>
+<!ATTLIST text:database-display %database-table;>
+<!ATTLIST text:database-display text:column-name %string; #REQUIRED>
+<!ATTLIST text:database-display style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:database-next (#PCDATA)>
+<!ATTLIST text:database-next %database-table;>
+<!ATTLIST text:database-next text:condition %formula; #IMPLIED>
+
+<!ELEMENT text:database-row-select (#PCDATA)>
+<!ATTLIST text:database-row-select %database-table;>
+<!ATTLIST text:database-row-select text:condition %formula; #IMPLIED>
+<!ATTLIST text:database-row-select text:row-number %integer; #REQUIRED>
+
+<!ELEMENT text:database-row-number (#PCDATA)>
+<!ATTLIST text:database-row-number %database-table;>
+<!ATTLIST text:database-row-number %numFormat;>
+<!ATTLIST text:database-row-number text:value %integer; #IMPLIED>
+
+<!ELEMENT text:database-name (#PCDATA)>
+<!ATTLIST text:database-name %database-table;>
+
+<!ELEMENT text:initial-creator (#PCDATA)>
+<!ATTLIST text:initial-creator text:fixed %boolean; "false">
+
+<!ELEMENT text:creation-date (#PCDATA)>
+<!ATTLIST text:creation-date text:fixed %boolean; "false">
+<!ATTLIST text:creation-date text:date-value %date; #IMPLIED>
+<!ATTLIST text:creation-date style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:creation-time (#PCDATA)>
+<!ATTLIST text:creation-time text:fixed %boolean; "false">
+<!ATTLIST text:creation-time text:time-value %timeInstance; #IMPLIED>
+<!ATTLIST text:creation-time style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:description (#PCDATA)>
+<!ATTLIST text:description text:fixed %boolean; "false">
+
+<!ELEMENT text:user-defined (#PCDATA)>
+<!ATTLIST text:user-defined text:fixed %boolean; "false">
+<!ATTLIST text:user-defined text:name %string; #REQUIRED>
+
+<!ELEMENT text:print-time (#PCDATA)>
+<!ATTLIST text:print-time text:fixed %boolean; "false">
+<!ATTLIST text:print-time text:time-value %timeInstance; #IMPLIED>
+<!ATTLIST text:print-time style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:print-date (#PCDATA)>
+<!ATTLIST text:print-date text:fixed %boolean; "false">
+<!ATTLIST text:print-date text:date-value %date; #IMPLIED>
+<!ATTLIST text:print-date style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:printed-by (#PCDATA)>
+<!ATTLIST text:printed-by text:fixed %boolean; "false">
+
+<!ELEMENT text:title (#PCDATA)>
+<!ATTLIST text:title text:fixed %boolean; "false">
+
+<!ELEMENT text:subject (#PCDATA)>
+<!ATTLIST text:subject text:fixed %boolean; "false">
+
+<!ELEMENT text:keywords (#PCDATA)>
+<!ATTLIST text:keywords text:fixed %boolean; "false">
+
+<!ELEMENT text:editing-cycles (#PCDATA)>
+<!ATTLIST text:editing-cycles text:fixed %boolean; "false">
+
+<!ELEMENT text:editing-duration (#PCDATA)>
+<!ATTLIST text:editing-duration text:fixed %boolean; "false">
+<!ATTLIST text:editing-duration text:duration %timeDuration; #IMPLIED>
+<!ATTLIST text:editing-duration style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:modification-time (#PCDATA)>
+<!ATTLIST text:modification-time text:fixed %boolean; "false">
+<!ATTLIST text:modification-time text:time-value %timeInstance; #IMPLIED>
+<!ATTLIST text:modification-time style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:modification-date (#PCDATA)>
+<!ATTLIST text:modification-date text:fixed %boolean; "false">
+<!ATTLIST text:modification-date text:date-value %date; #IMPLIED>
+<!ATTLIST text:modification-date style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:creator (#PCDATA)>
+<!ATTLIST text:creator text:fixed %boolean; "false">
+
+<!ELEMENT text:conditional-text (#PCDATA)>
+<!ATTLIST text:conditional-text text:condition %formula; #REQUIRED>
+<!ATTLIST text:conditional-text text:string-value-if-false %string; #REQUIRED>
+<!ATTLIST text:conditional-text text:string-value-if-true %string; #REQUIRED>
+<!ATTLIST text:conditional-text text:current-value %boolean; "false">
+
+<!ELEMENT text:hidden-text (#PCDATA)>
+<!ATTLIST text:hidden-text text:condition %formula; #REQUIRED>
+<!ATTLIST text:hidden-text text:string-value %string; #REQUIRED>
+<!ATTLIST text:hidden-text text:is-hidden %boolean; "false">
+
+<!ELEMENT text:hidden-paragraph EMPTY>
+<!ATTLIST text:hidden-paragraph text:condition %formula; #REQUIRED>
+<!ATTLIST text:hidden-paragraph text:is-hidden %boolean; "false">
+
+<!ELEMENT text:chapter (#PCDATA)>
+<!ATTLIST text:chapter text:display (name|number|number-and-name|
+ plain-number-and-name|plain-number)
+ "number-and-name">
+<!ATTLIST text:chapter text:outline-level %integer; "1">
+
+<!ELEMENT text:file-name (#PCDATA)>
+<!ATTLIST text:file-name text:display (full|path|name|name-and-extension)
+ "full">
+<!ATTLIST text:file-name text:fixed %boolean; "false">
+
+<!ELEMENT text:template-name (#PCDATA)>
+<!ATTLIST text:template-name text:display (full|path|name|name-and-extension|
+ area|title) "full">
+
+<!ELEMENT text:set-page-variable EMPTY>
+<!ATTLIST text:set-page-variable text:active %boolean; "true">
+<!ATTLIST text:set-page-variable text:page-adjust %integer; "0">
+
+<!ELEMENT text:get-page-variable (#PCDATA)>
+<!ATTLIST text:get-page-variable %numFormat;>
+
+<!ELEMENT text:execute-macro (#PCDATA|office:events)* >
+<!ATTLIST text:execute-macro text:description %string; #IMPLIED>
+
+
+<!ELEMENT text:dde-connection-decls (text:dde-connection-decl)*>
+
+<!ELEMENT text:dde-connection-decl EMPTY>
+<!ATTLIST text:dde-connection-decl text:name %string; #REQUIRED>
+<!ATTLIST text:dde-connection-decl text:dde-application %string; #REQUIRED>
+<!ATTLIST text:dde-connection-decl text:dde-topic %string; #REQUIRED>
+<!ATTLIST text:dde-connection-decl text:dde-item %string; #REQUIRED>
+<!ATTLIST text:dde-connection-decl text:automatic-update %boolean; "false">
+
+<!ELEMENT text:dde-connection (#PCDATA)>
+<!ATTLIST text:dde-connection text:connection-name %string; #REQUIRED>
+
+<!ELEMENT text:reference-ref (#PCDATA)>
+<!ATTLIST text:reference-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:reference-ref text:reference-format (page|chapter|text|direction) #IMPLIED>
+
+<!ELEMENT text:sequence-ref (#PCDATA)>
+<!ATTLIST text:sequence-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:sequence-ref text:reference-format (page|chapter|text|direction|category-and-value|caption|value) #IMPLIED>
+
+<!ELEMENT text:bookmark-ref (#PCDATA)>
+<!ATTLIST text:bookmark-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:bookmark-ref text:reference-format (page|chapter|text|direction) #IMPLIED>
+
+<!ELEMENT text:footnote-ref (#PCDATA)>
+<!ATTLIST text:footnote-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:footnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED>
+
+<!ELEMENT text:endnote-ref (#PCDATA)>
+<!ATTLIST text:endnote-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:endnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED>
+
+<!ELEMENT text:sheet-name (#PCDATA)>
+
+<!ELEMENT text:page-count (#PCDATA)>
+<!ATTLIST text:page-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:page-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:paragraph-count (#PCDATA)>
+<!ATTLIST text:paragraph-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:paragraph-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:word-count (#PCDATA)>
+<!ATTLIST text:word-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:word-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:character-count (#PCDATA)>
+<!ATTLIST text:character-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:character-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:table-count (#PCDATA)>
+<!ATTLIST text:table-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:table-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:image-count (#PCDATA)>
+<!ATTLIST text:image-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:image-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:object-count (#PCDATA)>
+<!ATTLIST text:object-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:object-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:bibliography-mark (#PCDATA)>
+<!ATTLIST text:bibliography-mark text:bibiliographic-type
+ ( article | book | booklet | conference | custom1 | custom2 | custom3 |
+ custom4 | custom5 | email | inbook | incollection | inproceedings |
+ journal | manual | mastersthesis | misc | phdthesis | proceedings |
+ techreport | unpublished | www ) #REQUIRED >
+<!ATTLIST text:bibliography-mark text:identifier CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:address CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:annote CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:author CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:booktitle CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:chapter CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:edition CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:editor CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:howpublished CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:institution CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:journal CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:month CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:note CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:number CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:organizations CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:pages CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:publisher CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:school CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:series CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:title CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:report-type CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:volume CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:year CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:url CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom1 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom2 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom3 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom4 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom5 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:isbn CDATA #IMPLIED>
+
+
+<!ELEMENT text:bookmark EMPTY>
+<!ATTLIST text:bookmark text:name CDATA #REQUIRED>
+
+<!ELEMENT text:bookmark-start EMPTY>
+<!ATTLIST text:bookmark-start text:name CDATA #REQUIRED>
+
+<!ELEMENT text:bookmark-end EMPTY>
+<!ATTLIST text:bookmark-end text:name CDATA #REQUIRED>
+
+<!ELEMENT text:reference-mark EMPTY>
+<!ATTLIST text:reference-mark text:name CDATA #REQUIRED>
+
+<!ELEMENT text:reference-mark-start EMPTY>
+<!ATTLIST text:reference-mark-start text:name CDATA #REQUIRED>
+
+<!ELEMENT text:reference-mark-end EMPTY>
+<!ATTLIST text:reference-mark-end text:name CDATA #REQUIRED>
+
+<!ELEMENT text:footnotes-configuration (text:footnote-continuation-notice-forward?,text:footnote-continuation-notice-backward?)>
+<!ATTLIST text:footnotes-configuration style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:footnotes-configuration style:num-suffix %string; #IMPLIED>
+<!ATTLIST text:footnotes-configuration style:num-format %string; #IMPLIED>
+<!ATTLIST text:footnotes-configuration style:num-letter-sync %string; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:citation-body-style-name %styleName; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:citation-style-name %styleName; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:default-style-name %styleName; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:master-page-name %styleName; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:start-value %integer; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:footnotes-position (document|page) "page">
+<!ATTLIST text:footnotes-configuration text:start-numbering-at (document|chapter|page) "document">
+
+<!ELEMENT text:footnote-continuation-notice-forward (#PCDATA)>
+<!ELEMENT text:footnote-continuation-notice-backward (#PCDATA)>
+
+<!ELEMENT text:endnotes-configuration EMPTY>
+<!ATTLIST text:endnotes-configuration style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:endnotes-configuration style:num-suffix %string; #IMPLIED>
+<!ATTLIST text:endnotes-configuration style:num-format %string; #IMPLIED>
+<!ATTLIST text:endnotes-configuration style:num-letter-sync %string; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:start-value %integer; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:citation-style-name %styleName; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:citation-body-style-name %styleName; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:default-style-name %styleName; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:master-page-name %styleName; #IMPLIED>
+
+<!-- Validity constraint: text:footnote and text:endnote elements may not
+ contain other text:footnote or text:endnote elements, even though the DTD
+ allows this (via the %text; in the foot-/endnote-body).
+ Unfortunatetly, this constraint cannot be easily specified in the DTD.
+-->
+<!ELEMENT text:footnote (text:footnote-citation, text:footnote-body)>
+<!ATTLIST text:footnote text:id ID #IMPLIED>
+
+<!ELEMENT text:footnote-citation (#PCDATA)>
+<!ATTLIST text:footnote-citation text:label %string; #IMPLIED>
+
+<!ELEMENT text:footnote-body (text:h|text:p|
+ text:ordered-list|text:unordered-list)*>
+
+<!ELEMENT text:endnote (text:endnote-citation, text:endnote-body)>
+<!ATTLIST text:endnote text:id ID #IMPLIED>
+
+<!ELEMENT text:endnote-citation (#PCDATA)>
+<!ATTLIST text:endnote-citation text:label %string; #IMPLIED>
+
+<!ELEMENT text:endnote-body (text:h|text:p|
+ text:ordered-list|text:unordered-list)*>
+
+<!ENTITY % sectionText "(text:h|text:p|text:ordered-list|
+ text:unordered-list|table:table|chart:chart|draw:page|
+ draw:a|draw:text-box|draw:image|text:section|
+ text:table-of-content|text:illustration-index|
+ text:table-index|text:object-index|text:user-index|
+ text:alphabetical-index|text:bibliography|
+ text:index-title|%change-marks;)*">
+
+<!ELEMENT text:section ((text:section-source|office:dde-source)?,
+ %sectionText;) >
+
+<!ATTLIST text:section text:name CDATA #REQUIRED>
+<!ATTLIST text:section text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:section text:display (true|none|condition) "true">
+<!ATTLIST text:section text:condition %formula; #IMPLIED>
+<!ATTLIST text:section text:protected %boolean; "false">
+<!ATTLIST text:section text:protection-key CDATA #IMPLIED>
+
+<!ELEMENT text:section-source EMPTY>
+<!ATTLIST text:section-source xlink:href %string; #IMPLIED>
+<!ATTLIST text:section-source xlink:type (simple) #FIXED "simple">
+<!ATTLIST text:section-source xlink:show (embed) #FIXED "embed">
+<!ATTLIST text:section-source text:section-name %string; #IMPLIED>
+<!ATTLIST text:section-source text:filter-name %string; #IMPLIED>
+
+<!ELEMENT text:table-of-content (text:table-of-content-source,
+ text:index-body) >
+<!ATTLIST text:table-of-content text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:table-of-content text:protected %boolean; "false">
+
+<!ELEMENT text:table-of-content-source (text:index-title-template? ,
+ text:table-of-content-entry-template*,
+ text:index-source-styles* ) >
+<!ATTLIST text:table-of-content-source text:outline-level %integer; #IMPLIED>
+<!ATTLIST text:table-of-content-source text:use-index-marks %boolean; "true">
+<!ATTLIST text:table-of-content-source text:use-index-source-styles
+ %boolean; "false">
+<!ATTLIST text:table-of-content-source text:index-scope (document|chapter)
+ "document">
+<!ATTLIST text:table-of-content-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:table-of-content-source fo:language %string; #IMPLIED>
+<!ATTLIST text:table-of-content-source fo:country %string; #IMPLIED>
+<!ATTLIST text:table-of-content-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:table-of-content-entry-template (text:index-entry-chapter-number |
+ text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop |
+ text:index-entry-link-start |
+ text:index-entry-link-end)* >
+<!ATTLIST text:table-of-content-entry-template text:outline-level
+ %integer; #REQUIRED>
+<!ATTLIST text:table-of-content-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:illustration-index
+ (text:illustration-index-source, text:index-body)>
+<!ATTLIST text:illustration-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:illustration-index text:protected %boolean; "false">
+
+<!ELEMENT text:illustration-index-source (text:index-title-template?,
+ text:illustration-index-entry-template?) >
+<!ATTLIST text:illustration-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:illustration-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:illustration-index-source text:use-caption %boolean; "true">
+<!ATTLIST text:illustration-index-source text:caption-sequence-name
+ %string; #IMPLIED>
+<!ATTLIST text:illustration-index-source text:caption-sequence-format
+ (text|category-and-value|caption) "text">
+<!ATTLIST text:illustration-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:illustration-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:illustration-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:illustration-index-entry-template
+ ( text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:illustration-index-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:table-index (text:table-index-source, text:index-body)>
+<!ATTLIST text:table-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:table-index text:protected %boolean; "false">
+
+<!ELEMENT text:table-index-source (text:index-title-template?,
+ text:table-index-entry-template?) >
+<!ATTLIST text:table-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:table-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:table-index-source text:use-caption %boolean; "true">
+<!ATTLIST text:table-index-source text:caption-sequence-name
+ %string; #IMPLIED>
+<!ATTLIST text:table-index-source text:caption-sequence-format
+ (text|category-and-value|caption) "text">
+<!ATTLIST text:table-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:table-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:table-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:table-index-entry-template ( text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:table-index-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:object-index ( text:object-index-source, text:index-body ) >
+<!ATTLIST text:object-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:object-index text:protected %boolean; "false">
+
+<!ELEMENT text:object-index-source ( text:index-title-template?,
+ text:object-index-entry-template? ) >
+<!ATTLIST text:object-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:object-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:object-index-source text:use-spreadsheet-objects
+ %boolean; "false">
+<!ATTLIST text:object-index-source text:use-draw-objects %boolean; "false">
+<!ATTLIST text:object-index-source text:use-chart-objects %boolean; "false">
+<!ATTLIST text:object-index-source text:use-other-objects %boolean; "false">
+<!ATTLIST text:object-index-source text:use-math-objects %boolean; "false">
+<!ATTLIST text:object-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:object-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:object-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:object-index-entry-template ( text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:object-index-entry-template text:style-name
+ %styleName; #REQUIRED >
+
+<!ELEMENT text:user-index (text:user-index-source, text:index-body) >
+<!ATTLIST text:user-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:user-index text:protected %boolean; "false">
+
+<!ELEMENT text:user-index-source ( text:index-title-template?,
+ text:user-index-entry-template*,
+ text:index-source-styles* ) >
+<!ATTLIST text:user-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:user-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:user-index-source text:use-index-marks %boolean; "false">
+<!ATTLIST text:user-index-source text:use-graphics %boolean; "false">
+<!ATTLIST text:user-index-source text:use-tables %boolean; "false">
+<!ATTLIST text:user-index-source text:use-floating-frames %boolean; "false">
+<!ATTLIST text:user-index-source text:use-objects %boolean; "false">
+<!ATTLIST text:user-index-source text:use-index-source-styles
+ %boolean; "false">
+<!ATTLIST text:user-index-source text:copy-outline-level %boolean; "false">
+<!ATTLIST text:user-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:user-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:user-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:user-index-entry-template ( text:index-entry-chapter |
+ text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:user-index-entry-template text:outline-level %integer; #REQUIRED>
+<!ATTLIST text:user-index-entry-template text:style-name %styleName; #REQUIRED>
+
+<!ELEMENT text:alphabetical-index (text:alphabetical-index-source,
+ text:index-body)>
+<!ATTLIST text:alphabetical-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:alphabetical-index text:protected %boolean; "false">
+
+<!ELEMENT text:alphabetical-index-source ( text:index-title-template?,
+ text:alphabetical-index-entry-template* ) >
+<!ATTLIST text:alphabetical-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:alphabetical-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:alphabetical-index-source text:ignore-case %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:main-entry-style-name
+ %styleName; #IMPLIED>
+<!ATTLIST text:alphabetical-index-source text:alphabetical-separators
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:combine-entries
+ %boolean; "true">
+<!ATTLIST text:alphabetical-index-source text:combine-entries-with-dash
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:combine-entries-with-pp
+ %boolean; "true">
+<!ATTLIST text:alphabetical-index-source text:use-keys-as-entries
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:capitalize-entries
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:comma-separated
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:alphabetical-index-entry-template ( text:index-entry-chapter |
+ text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:alphabetical-index-entry-template text:outline-level
+ (1|2|3|separator) #REQUIRED>
+<!ATTLIST text:alphabetical-index-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:alphabetical-index-auto-mark-file EMPTY>
+<!ATTLIST text:alphabetical-index-auto-mark-file xlink:href CDATA #IMPLIED>
+<!ATTLIST text:alphabetical-index-auto-mark-file xlink:type (simple) #FIXED "simple">
+
+<!ELEMENT text:bibliography (text:bibliography-source, text:index-body) >
+<!ATTLIST text:bibliography text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:bibliography text:protected %boolean; "false">
+
+<!ELEMENT text:bibliography-source ( text:index-title-template?,
+ text:bibliography-entry-template* ) >
+
+<!ELEMENT text:bibliography-entry-template ( text:index-entry-span |
+ text:index-entry-tab-stop |
+ text:index-entry-bibliography )* >
+<!ATTLIST text:bibliography-entry-template text:bibliography-type
+ ( article | book | booklet | conference | custom1 | custom2 |
+ custom3 | custom4 | custom5 | email | inbook | incollection |
+ inproceedings | journal | manual | mastersthesis | misc |
+ phdthesis | proceedings | techreport | unpublished | www )
+ #REQUIRED >
+<!ATTLIST text:bibliography-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:index-body %sectionText; >
+
+<!--
+Validity constraint: text:index-title elements may appear only in
+indices, and there may be only one text:index-title element.
+-->
+<!ELEMENT text:index-title %sectionText; >
+<!ATTLIST text:index-title text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:index-title text:name %string; #IMPLIED>
+
+<!ELEMENT text:index-title-template (#PCDATA)>
+<!ATTLIST text:index-title-template text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-chapter-number EMPTY>
+<!ATTLIST text:index-entry-chapter-number text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-chapter EMPTY>
+<!ATTLIST text:index-entry-chapter text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:index-entry-chapter text:display (name|number|number-and-name)
+ "number-and-name" >
+
+<!ELEMENT text:index-entry-text EMPTY>
+<!ATTLIST text:index-entry-text text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-page-number EMPTY>
+<!ATTLIST text:index-entry-page-number text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-span (#PCDATA)>
+<!ATTLIST text:index-entry-span text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-bibliography EMPTY>
+<!ATTLIST text:index-entry-bibliography text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:index-entry-bibliography text:bibliography-data-field
+ ( address | annote | author | bibiliographic_type |
+ booktitle | chapter | custom1 | custom2 |
+ custom3 | custom4 | custom5 | edition | editor |
+ howpublished | identifier | institution | isbn |
+ journal | month | note | number | organizations |
+ pages | publisher | report_type | school |
+ series | title | url | volume | year ) #REQUIRED>
+
+
+<!ELEMENT text:index-entry-tab-stop EMPTY>
+<!ATTLIST text:index-entry-tab-stop text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:index-entry-tab-stop style:leader-char %character; " ">
+<!ATTLIST text:index-entry-tab-stop style:type (left|right) "left">
+<!ATTLIST text:index-entry-tab-stop style:position %length; #IMPLIED>
+
+<!ELEMENT text:index-entry-link-start EMPTY>
+<!ATTLIST text:index-entry-link-start text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-link-end EMPTY>
+<!ATTLIST text:index-entry-link-end text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-source-styles (text:index-source-style)*>
+<!ATTLIST text:index-source-styles text:outline-level %integer; #REQUIRED>
+
+<!ELEMENT text:index-source-style EMPTY>
+<!ATTLIST text:index-source-style text:style-name %styleName; #REQUIRED>
+
+<!ELEMENT text:toc-mark-start EMPTY>
+<!ATTLIST text:toc-mark-start text:id %string; #REQUIRED>
+<!ATTLIST text:toc-mark-start text:outline-level %integer; #IMPLIED>
+
+<!ELEMENT text:toc-mark-end EMPTY>
+<!ATTLIST text:toc-mark-end text:id %string; #REQUIRED>
+
+<!ELEMENT text:toc-mark EMPTY>
+<!ATTLIST text:toc-mark text:string-value %string; #REQUIRED>
+<!ATTLIST text:toc-mark text:outline-level %integer; #IMPLIED>
+
+<!ELEMENT text:user-index-mark-start EMPTY>
+<!ATTLIST text:user-index-mark-start text:id %string; #REQUIRED>
+<!ATTLIST text:user-index-mark-start text:outline-level %integer; #IMPLIED>
+<!ATTLIST text:user-index-mark-start text:index-name %string; #IMPLIED>
+
+<!ELEMENT text:user-index-mark-end EMPTY>
+<!ATTLIST text:user-index-mark-end text:id %string; #REQUIRED>
+
+<!ELEMENT text:user-index-mark EMPTY>
+<!ATTLIST text:user-index-mark text:string-value %string; #REQUIRED>
+<!ATTLIST text:user-index-mark text:outline-level %integer; #IMPLIED>
+<!ATTLIST text:user-index-mark text:index-name %string; #IMPLIED>
+
+<!ELEMENT text:alphabetical-index-mark-start EMPTY>
+<!ATTLIST text:alphabetical-index-mark-start text:id %string; #REQUIRED>
+<!ATTLIST text:alphabetical-index-mark-start text:key1 %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-mark-start text:key2 %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-mark-start text:main-etry %boolean; "false">
+
+<!ELEMENT text:alphabetical-index-mark-end EMPTY>
+<!ATTLIST text:alphabetical-index-mark-end text:id %string; #REQUIRED>
+
+<!ELEMENT text:alphabetical-index-mark EMPTY>
+<!ATTLIST text:alphabetical-index-mark text:string-value %string; #REQUIRED>
+<!ATTLIST text:alphabetical-index-mark text:key1 %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-mark text:key2 %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-mark text:main-etry %boolean; "false">
+
+<!ELEMENT text:bibliography-configuration (text:sort-key)*>
+<!ATTLIST text:bibliography-configuration text:prefix %string; #IMPLIED>
+<!ATTLIST text:bibliography-configuration text:suffix %string; #IMPLIED>
+<!ATTLIST text:bibliography-configuration text:sort-by-position %boolean; "true">
+<!ATTLIST text:bibliography-configuration text:numbered-entries %boolean; "false">
+<!ATTLIST text:bibliography-configuration fo:language %string; #IMPLIED>
+<!ATTLIST text:bibliography-configuration fo:country %string; #IMPLIED>
+<!ATTLIST text:bibliography-configuration text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:sort-key EMPTY>
+<!ATTLIST text:sort-key text:key ( address | annote | author |
+ bibiliographic_type | booktitle | chapter | custom1 | custom2 |
+ custom3 | custom4 | custom5 | edition | editor | howpublished |
+ identifier | institution | isbn | journal | month | note | number |
+ organizations | pages | publisher | report_type | school | series |
+ title | url | volume | year ) #REQUIRED>
+<!ATTLIST text:sort-key text:sort-ascending %boolean; "true">
+
+<!ELEMENT text:linenumbering-configuration (text:linenumbering-separator?)>
+<!ATTLIST text:linenumbering-configuration text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:linenumbering-configuration text:number-lines %boolean; "true">
+<!ATTLIST text:linenumbering-configuration text:count-empty-lines %boolean; "true">
+<!ATTLIST text:linenumbering-configuration text:count-in-floating-frames %boolean; "false">
+<!ATTLIST text:linenumbering-configuration text:restart-numbering %boolean; "false">
+<!ATTLIST text:linenumbering-configuration text:offset %nonNegativeLength; #IMPLIED>
+<!ATTLIST text:linenumbering-configuration style:num-format (1|a|A|i|I) "1">
+<!ATTLIST text:linenumbering-configuration style:num-letter-sync %boolean; "false">
+<!ATTLIST text:linenumbering-configuration text:number-position (left|rigth|inner|outer) "left">
+<!ATTLIST text:linenumbering-configuration text:increment %nonNegativeInteger; #IMPLIED>
+
+<!ELEMENT text:linenumbering-separator (#PCDATA)>
+<!ATTLIST text:linenumbering-separator text:increment %nonNegativeInteger; #IMPLIED>
+
+<!ELEMENT text:script (#PCDATA)>
+<!ATTLIST text:script script:language CDATA #REQUIRED>
+<!ATTLIST text:script xlink:href CDATA #IMPLIED>
+<!ATTLIST text:script xlink:type (simple) #FIXED "simple">
+
+<!ELEMENT text:measure (#PCDATA)>
+<!ATTLIST text:measure text:kind (value|unit|gap) #REQUIRED>
+
+<!ELEMENT text:ruby (text:ruby-base, text:ruby-text)>
+<!ATTLIST text:ruby text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:ruby-base %inline-text;>
+
+<!ELEMENT text:ruby-text (#PCDATA)>
+<!ATTLIST text:ruby-text text:style-name %styleName; #IMPLIED>
+
+<!-- elements for change tracking -->
+
+<!ELEMENT text:change EMPTY>
+<!ATTLIST text:change text:change-id CDATA #REQUIRED>
+
+<!ELEMENT text:change-start EMPTY>
+<!ATTLIST text:change-start text:change-id CDATA #REQUIRED>
+
+<!ELEMENT text:change-end EMPTY>
+<!ATTLIST text:change-end text:change-id CDATA #REQUIRED>
+
+<!ELEMENT text:tracked-changes (text:changed-region)*>
+<!ATTLIST text:tracked-changes text:track-changes %boolean; "true">
+<!ATTLIST text:tracked-changes text:protection-key CDATA #IMPLIED>
+
+<!ELEMENT text:changed-region (text:insertion |
+ (text:deletion, text:insertion?) |
+ text:format-change) >
+<!ATTLIST text:changed-region text:id ID #REQUIRED>
+
+<!ELEMENT text:insertion (office:change-info, %sectionText;)>
+<!ELEMENT text:deletion (office:change-info, %sectionText;)>
+<!ELEMENT text:format-change (office:change-info)>
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_animatedgif.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_animatedgif.infile
new file mode 100644
index 000000000000..e1e8de3632d0
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_animatedgif.infile
@@ -0,0 +1,4 @@
+#testing animated gif conversion
+#
+TEST||QUICKWORD|a_animatedgif
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bolddoc.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bolddoc.infile
new file mode 100644
index 000000000000..c545805e37e2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bolddoc.infile
@@ -0,0 +1,4 @@
+#testing bold type conversion
+#
+TEST||QUICKWORD|a_bolddoc
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bookmarks.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bookmarks.infile
new file mode 100644
index 000000000000..f350b6acdc18
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bookmarks.infile
@@ -0,0 +1,4 @@
+#testing bookmark conversion
+#
+TEST||QUICKWORD|a_bookmarks
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bulletorderedlist.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bulletorderedlist.infile
new file mode 100644
index 000000000000..bd9617d3892a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_bulletorderedlist.infile
@@ -0,0 +1,4 @@
+#testing bullet ordered list conversion
+#
+TEST||QUICKWORD|a_bulletorderedlist
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_emptydoc-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_emptydoc-mod.infile
new file mode 100644
index 000000000000..846bb80b44d3
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_emptydoc-mod.infile
@@ -0,0 +1,9 @@
+#testing modification to an empty document conversion
+#
+TEST||QUICKWORD|a_emptydoc-mod
+ENTER_STRING_AT_LOCATION|108|20|New line of text added\n
+ENTER_STRING_AT_LOCATION|108|40|This is 108, 40\n
+ENTER_STRING_AT_LOCATION|150|208|This is 150, 208\n
+ENTER_STRING_AT_LOCATION|150|308|This is 150, 308\n
+
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_emptydoc.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_emptydoc.infile
new file mode 100644
index 000000000000..ba5eef77ff2e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_emptydoc.infile
@@ -0,0 +1,4 @@
+#testing empty document conversion
+#
+TEST||QUICKWORD|a_emptydoc
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_firstlineindent.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_firstlineindent.infile
new file mode 100644
index 000000000000..31fb962eeb29
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_firstlineindent.infile
@@ -0,0 +1,4 @@
+#testing indent conversion
+#
+TEST||QUICKWORD|a_firstlineindent
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_fontsize.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_fontsize.infile
new file mode 100644
index 000000000000..f9a12659ac67
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_fontsize.infile
@@ -0,0 +1,4 @@
+#testing fontsize conversion
+#
+TEST||QUICKWORD|a_fontsize
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading.infile
new file mode 100644
index 000000000000..ca580f445cec
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading.infile
@@ -0,0 +1,4 @@
+#testing basic heading conversion
+#
+TEST||QUICKWORD|a_heading
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading1.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading1.infile
new file mode 100644
index 000000000000..4a73d5ead0e2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading1.infile
@@ -0,0 +1,4 @@
+#testing heading1 type conversion
+#
+TEST||QUICKWORD|a_heading1
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading2.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading2.infile
new file mode 100644
index 000000000000..265e2fd1e629
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_heading2.infile
@@ -0,0 +1,4 @@
+#testing heading2 type conversion
+#
+TEST||QUICKWORD|a_heading2
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_hyperlink.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_hyperlink.infile
new file mode 100644
index 000000000000..19fb1fd93f74
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_hyperlink.infile
@@ -0,0 +1,4 @@
+#testing hyperlink conversion
+#
+TEST||QUICKWORD|a_hyperlink
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_justified.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_justified.infile
new file mode 100644
index 000000000000..a9f1eee7016b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_justified.infile
@@ -0,0 +1,4 @@
+#testing justified conversion
+#
+TEST||QUICKWORD|a_justified
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_linebreaks.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_linebreaks.infile
new file mode 100644
index 000000000000..ebabb26a691a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_linebreaks.infile
@@ -0,0 +1,4 @@
+#testing line break conversion
+#
+TEST||QUICKWORD|a_linebreaks
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_linespacing.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_linespacing.infile
new file mode 100644
index 000000000000..ccb76ed0675f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_linespacing.infile
@@ -0,0 +1,4 @@
+#testing line spacing conversion
+#
+TEST||QUICKWORD|a_linespacing
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_numberorderedlist.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_numberorderedlist.infile
new file mode 100644
index 000000000000..4075e16b0516
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_numberorderedlist.infile
@@ -0,0 +1,4 @@
+#testing number ordered list conversion
+#
+TEST||QUICKWORD|a_numberorderedlist
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_pagebreak.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_pagebreak.infile
new file mode 100644
index 000000000000..10d2f2ceba0a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_pagebreak.infile
@@ -0,0 +1,4 @@
+#testing page break conversion
+#
+TEST||QUICKWORD|a_pagebreak
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_paragraph.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_paragraph.infile
new file mode 100644
index 000000000000..c74558b60c7e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_paragraph.infile
@@ -0,0 +1,4 @@
+#testing paragraph conversion
+#
+TEST||QUICKWORD|a_paragraph
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple01.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple01.infile
new file mode 100644
index 000000000000..f08c1fa14af1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple01.infile
@@ -0,0 +1,4 @@
+# simple01
+TEST|Simple 1|QUICKWORD|a_simple01
+ENTER_STRING_AT_LOCATION|LEFT|TOP|New text added to simple file.\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple02.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple02.infile
new file mode 100644
index 000000000000..f56a6b0fe2c3
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple02.infile
@@ -0,0 +1,4 @@
+# simple02
+TEST|Simple 2|QUICKWORD|a_simple02
+ENTER_STRING_AT_LOCATION|64|20|, including this inserted phrase,
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple03.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple03.infile
new file mode 100644
index 000000000000..3a957ab5e2ea
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple03.infile
@@ -0,0 +1,4 @@
+# simple03
+TEST|Simple 3|QUICKWORD|a_simple03
+ENTER_STRING_AT_LOCATION|LEFT|42|This is also in standard style\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple04.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple04.infile
new file mode 100644
index 000000000000..1631885a6d77
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple04.infile
@@ -0,0 +1,4 @@
+# simple04
+TEST|Simple 4|QUICKWORD|a_simple04
+ENTER_STRING_AT_LOCATION|66|20|
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple05.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple05.infile
new file mode 100644
index 000000000000..242285797c3b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_simple05.infile
@@ -0,0 +1,5 @@
+# simple05
+TEST|Simple 5|QUICKWORD|a_simple05
+ENTER_STRING_AT_LOCATION|108|20|
+ENTER_STRING_AT_LOCATION|19|20|document uses
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_standard.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_standard.infile
new file mode 100644
index 000000000000..c7a6ebf1fcfb
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_standard.infile
@@ -0,0 +1,4 @@
+#testing standard conversion
+#
+TEST||QUICKWORD|a_standard
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_subscript.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_subscript.infile
new file mode 100644
index 000000000000..d4751de288c1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_subscript.infile
@@ -0,0 +1,4 @@
+#testing subscript conversion
+#
+TEST||QUICKWORD|a_subscript
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_superscript.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_superscript.infile
new file mode 100644
index 000000000000..1233754e9f37
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_superscript.infile
@@ -0,0 +1,4 @@
+#testing superscript conversion
+#
+TEST||QUICKWORD|a_superscript
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_symbols.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_symbols.infile
new file mode 100644
index 000000000000..5a89e15ca22f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_symbols.infile
@@ -0,0 +1,4 @@
+#testing symbol conversion
+#
+TEST||QUICKWORD|a_symbols
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_tab.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_tab.infile
new file mode 100644
index 000000000000..7b5d319fa2a1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_tab.infile
@@ -0,0 +1,4 @@
+#testing tab conversion
+#
+TEST||QUICKWORD|a_tab
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_table.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_table.infile
new file mode 100644
index 000000000000..b7d991e7033d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_table.infile
@@ -0,0 +1,5 @@
+#testing table contents conversion
+#
+TEST||QUICKWORD|a_table
+#ENTER_STRING_AT_LOCATION|LEFT|42|This is also in standard style\n
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_textspan.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_textspan.infile
new file mode 100644
index 000000000000..493032299b1e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_textspan.infile
@@ -0,0 +1,4 @@
+#testing textspan conversion
+#
+TEST||QUICKWORD|a_textspan
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_unorderedlist.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_unorderedlist.infile
new file mode 100644
index 000000000000..6990e3ed58e6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_unorderedlist.infile
@@ -0,0 +1,4 @@
+#testing unorderedlist conversion
+#
+TEST||QUICKWORD|a_unorderedlist
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_wordwrap.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_wordwrap.infile
new file mode 100644
index 000000000000..22e5573f29d6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/a_wordwrap.infile
@@ -0,0 +1,4 @@
+#testing wordwrapping conversion
+#
+TEST||QUICKWORD|a_wordwrap
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_addition01-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_addition01-mod.infile
new file mode 100755
index 000000000000..17c2293ed6be
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_addition01-mod.infile
@@ -0,0 +1,5 @@
+#
+#
+TEST||MINICALC|c_addition
+MINICALC_ENTER_CELL|0|0| 3\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_alignment.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_alignment.infile
new file mode 100755
index 000000000000..ae607f2a9ca6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_alignment.infile
@@ -0,0 +1,4 @@
+#
+#
+TEST||MINICALC|c_alignment
+SLEEP|10
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_backwardrange-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_backwardrange-mod.infile
new file mode 100755
index 000000000000..5e869f491f5a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_backwardrange-mod.infile
@@ -0,0 +1,6 @@
+#
+# Test for backwardrange of spreadsheet - change a value in a set range
+#
+TEST||MINICALC|c_backwardrange
+MINICALC_ENTER_CELL|1|1|=AVERAGE(2;5;5)\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_basic-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_basic-mod.infile
new file mode 100755
index 000000000000..a2f1d3c342f8
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_basic-mod.infile
@@ -0,0 +1,5 @@
+#
+# basic spreadsheet round trip conversion no modification
+#
+TEST||MINICALC|c_basic
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_bob-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_bob-mod.infile
new file mode 100755
index 000000000000..f868004d1d5e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_bob-mod.infile
@@ -0,0 +1,5 @@
+#
+#
+TEST||MINICALC|c_bob
+MINICALC_ENTER_CELL|0|0| 3\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_boolean-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_boolean-mod.infile
new file mode 100755
index 000000000000..2d69bb8cedf0
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_boolean-mod.infile
@@ -0,0 +1,6 @@
+#
+# Spreadsheet - test Boolean entry change.
+#
+TEST||MINICALC|c_boolean
+MINICALC_ENTER_CELL|1|0|TRUE\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellcurrencyvalue.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellcurrencyvalue.infile
new file mode 100644
index 000000000000..f58003dedd23
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellcurrencyvalue.infile
@@ -0,0 +1,5 @@
+#
+# basic spreadsheet with currency format round trip conversion no modification
+#
+TEST||MINICALC|c_cellcurrencyalue
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellpercentvalue-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellpercentvalue-mod.infile
new file mode 100755
index 000000000000..440c82d2fbc2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellpercentvalue-mod.infile
@@ -0,0 +1,8 @@
+#
+# Spreadsheet percentage value precision
+#
+TEST||MINICALC|c_cellpercentvalue
+MINICALC_ENTER_CELL|0|0|120%\n
+SLEEP|3
+MINICALC_ENTER_CELL|0|1|10%\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellstringvalue-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellstringvalue-mod.infile
new file mode 100755
index 000000000000..5e67ea28c49f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cellstringvalue-mod.infile
@@ -0,0 +1,10 @@
+#
+# Spreadsheet string value changes.
+#
+TEST||MINICALC|c_cellstringvalue
+MINICALC_ENTER_CELL|1|2|Testing\n
+SLEEP|3
+MINICALC_ENTER_CELL|1|3|\n
+SLEEP|3
+MINICALC_ENTER_CELL|2|1|;\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_columnswidth-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_columnswidth-mod.infile
new file mode 100755
index 000000000000..5fe9942beabc
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_columnswidth-mod.infile
@@ -0,0 +1,3 @@
+#
+#
+TEST||MINICALC|c_columnswidth
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cyclic-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cyclic-mod.infile
new file mode 100755
index 000000000000..ab9ac1b29d4a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_cyclic-mod.infile
@@ -0,0 +1,12 @@
+#
+# Spreadsheet error messages.
+#
+TEST||MINICALC|c_cyclic
+MINICALC_ENTER_CELL|3|0|0\n
+SLEEP|3
+MINICALC_ENTER_CELL|4|0|0\n
+SLEEP|3
+MINICALC_ENTER_CELL|3|1|=(A1/A4)\n
+SLEEP|3
+MINICALC_ENTER_CELL|4|1|=(A4/A5)\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_dividefloating-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_dividefloating-mod.infile
new file mode 100755
index 000000000000..ce216e167f5e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_dividefloating-mod.infile
@@ -0,0 +1,8 @@
+#
+# Spreadsheet - dividing floating points.
+#
+TEST||MINICALC|c_dividefloating
+MINICALC_ENTER_CELL|3|0|=-(12.2)/(5-1)\n
+SLEEP|3
+MINICALC_ENTER_CELL|1|1|=(12.2)/(5-1)\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_forwardrange-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_forwardrange-mod.infile
new file mode 100755
index 000000000000..0c29937a0198
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_forwardrange-mod.infile
@@ -0,0 +1,6 @@
+#
+# Spreadsheet forwardrange & logical function test
+#
+TEST||MINICALC|c_forwardrange
+MINICALC_ENTER_CELL|3|1|=IF(0;45.45;54.54)\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_insertimage.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_insertimage.infile
new file mode 100755
index 000000000000..6801a23fa455
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_insertimage.infile
@@ -0,0 +1,4 @@
+#
+# Spreadsheet with image insert conversion test.
+#
+TEST||MINICALC|c_insertimage
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_insertrow-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_insertrow-mod.infile
new file mode 100755
index 000000000000..a56fcf0b2a13
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_insertrow-mod.infile
@@ -0,0 +1,13 @@
+#
+# simple spreadsheet - insert a new row
+#
+TEST||MINICALC|c_insertrow
+TAP_PEN_HARD|10|40|
+SLEEP|3
+TAP_PEN_HARD|110|140
+SLEEP|3
+TAP_PEN_HARD|110|130
+SLEEP|3
+MINICALC_ENTER_CELL|3|0|1\n
+SLEEP|5
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_invalidcellref-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_invalidcellref-mod.infile
new file mode 100755
index 000000000000..dc2675c2d13a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_invalidcellref-mod.infile
@@ -0,0 +1,10 @@
+#
+# Spreadsheet invalid references test.
+#
+TEST||MINICALC|c_invalidcellref
+MINICALC_ENTER_CELL|2|0|=MAX(1;2;3)\n
+SLEEP|3
+MINICALC_ENTER_CELL|1|2| \n
+SLEEP|3
+MINICALC_ENTER_CELL|2|2|=a0 \n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_largerange-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_largerange-mod.infile
new file mode 100755
index 000000000000..7bc7b53e8423
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_largerange-mod.infile
@@ -0,0 +1,6 @@
+#
+# Spreadsheet large range test
+#
+TEST||MINICALC|c_largerange
+MINICALC_ENTER_CELL|2|1|=SUM(E7:G10)\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_listrange-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_listrange-mod.infile
new file mode 100755
index 000000000000..252dbe45d34c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_listrange-mod.infile
@@ -0,0 +1,6 @@
+#
+# Spreadsheet listrange test.
+#
+TEST||MINICALC|c_listrange
+MINICALC_ENTER_CELL|2|3|24\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_mathematical-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_mathematical-mod.infile
new file mode 100755
index 000000000000..f45b347b1760
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_mathematical-mod.infile
@@ -0,0 +1,10 @@
+#
+# Spreadsheet standard math functs
+#
+TEST||MINICALC|c_mathematical
+MINICALC_ENTER_CELL|0|1|=SIN(3.14/2)\n
+SLEEP8|
+MINICALC_ENTER_CELL|1|1|=COS(0)\n
+SLEEP|8
+MINICALC_ENTER_CELL|2|2|=TAN(1.57/2)\n
+SLEEP|8
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_multi_boolean.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_multi_boolean.infile
new file mode 100644
index 000000000000..ef77f2a143b2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_multi_boolean.infile
@@ -0,0 +1,5 @@
+#
+# Spreadsheet - test multi Boolean entry no change.
+#
+TEST||MINICALC|c_multi_boolean
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_protection-mod01.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_protection-mod01.infile
new file mode 100755
index 000000000000..d1557eab26da
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_protection-mod01.infile
@@ -0,0 +1,6 @@
+#
+# Spreadsheet change protection test.
+#
+TEST||MINICALC|c_protection
+MINICALC_ENTER_CELL|0|0| 1\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_sheetreference-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_sheetreference-mod.infile
new file mode 100755
index 000000000000..3b9d76bb02bf
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_sheetreference-mod.infile
@@ -0,0 +1,6 @@
+#
+# Spreadsheet sheet reference test.
+#
+TEST||MINICALC|c_sheetreference
+MINICALC_ENTER_CELL|2|0|=Sheet3.B1\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple01-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple01-mod.infile
new file mode 100755
index 000000000000..2ae81831384c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple01-mod.infile
@@ -0,0 +1,13 @@
+#
+# simple spreadsheet - insert text & numbers
+#
+TEST||MINICALC|c_simple01
+MINICALC_ENTER_CELL|0|0|Col1\n
+SLEEP|3
+MINICALC_ENTER_CELL|1|0|1\n
+SLEEP|3
+MINICALC_ENTER_CELL|2|0|1\n
+SLEEP|3
+MINICALC_ENTER_CELL|3|0|1\n
+SLEEP|5
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple02-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple02-mod.infile
new file mode 100755
index 000000000000..a6414e9a5168
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple02-mod.infile
@@ -0,0 +1,13 @@
+#
+# simple spreadsheet - append a new column to end
+#
+TEST||MINICALC|c_simple02
+MINICALC_ENTER_CELL|0|1|Col3\n
+SLEEP|3
+MINICALC_ENTER_CELL|1|1|3\n
+SLEEP|3
+MINICALC_ENTER_CELL|2|1|3\n
+SLEEP|3
+MINICALC_ENTER_CELL|3|1|3\n
+SLEEP|5
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple03-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple03-mod.infile
new file mode 100755
index 000000000000..00ad02334b45
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple03-mod.infile
@@ -0,0 +1,22 @@
+#
+# simple spreadsheet - insert a new column in middle
+#
+TEST||MINICALC|c_simple03
+MINICALC_ENTER_CELL|0|1|Col2\n
+SLEEP|3
+MINICALC_ENTER_CELL|1|1|2\n
+SLEEP|3
+MINICALC_ENTER_CELL|2|1|2\n
+SLEEP|3
+MINICALC_ENTER_CELL|3|1|2\n
+SLEEP|5
+MINICALC_ENTER_CELL|0|2|Col3\n
+SLEEP|3
+MINICALC_ENTER_CELL|1|2|3\n
+SLEEP|3
+MINICALC_ENTER_CELL|2|2|3\n
+SLEEP|3
+MINICALC_ENTER_CELL|3|2|3\n
+SLEEP|5
+
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple04-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple04-mod.infile
new file mode 100755
index 000000000000..4c5b8828038c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_simple04-mod.infile
@@ -0,0 +1,14 @@
+#
+# simple spreadsheet - delete text & numbers
+#
+TEST||MINICALC|c_simple04
+MINICALC_ENTER_CELL|0|2|\n
+SLEEP|3
+MINICALC_ENTER_CELL|1|2|\n
+SLEEP|3
+MINICALC_ENTER_CELL|2|2|\n
+SLEEP|3
+MINICALC_ENTER_CELL|3|2|\n
+SLEEP|5
+
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_smallrange-mod.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_smallrange-mod.infile
new file mode 100755
index 000000000000..81c8ab33bdf8
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_smallrange-mod.infile
@@ -0,0 +1,6 @@
+#
+# Spreadsheet smallrange test.
+#
+TEST||MINICALC|c_smallrange
+MINICALC_ENTER_CELL|2|1|=AVERAGE(A1:B2)\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_styles.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_styles.infile
new file mode 100755
index 000000000000..26c3446dffd5
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_styles.infile
@@ -0,0 +1,3 @@
+#
+#
+TEST||MINICALC|c_styles
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_textimage.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_textimage.infile
new file mode 100755
index 000000000000..71416244e9d4
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/c_textimage.infile
@@ -0,0 +1,12 @@
+#
+# Spreadsheet image text insert.
+#
+TEST||MINICALC|c_textimage
+MINICALC_ENTER_CELL|0|0|This is a green car.\n
+SLEEP|3
+MINICALC_ENTER_CELL|14|1|This line is below the green car.\n
+SLEEP|3
+MINICALC_ENTER_CELL|15|2|This is a bird.\n
+SLEEP|3
+MINICALC_ENTER_CELL|32|2|This line is below the bird.\n
+SLEEP|5
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/empty01.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/empty01.infile
new file mode 100755
index 000000000000..4100bb47178e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/empty01.infile
@@ -0,0 +1,3 @@
+# empty01
+TEST|Empty 1|QUICKWORD|empty01
+ENTER_STRING_AT_LOCATION|LEFT|TOP|New text added to empty file.\n
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/hyperlink01.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/hyperlink01.infile
new file mode 100755
index 000000000000..75f4acb1123b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/hyperlink01.infile
@@ -0,0 +1,4 @@
+# hyperlink01
+TEST|Hyperlink 1|QUICKWORD|hyperlink01
+ENTER_STRING_AT_LOCATION|114|64|
+ENTER_STRING_AT_LOCATION|33|64|SunWeb Central
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/image01.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/image01.infile
new file mode 100755
index 000000000000..88da6efab59d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/image01.infile
@@ -0,0 +1,4 @@
+# image01
+TEST|Image 1|QUICKWORD|image01
+ENTER_STRING_AT_LOCATION|86|53|\nReal start of animated gif
+ENTER_STRING_AT_LOCATION|LEFT|97|Real end of animated gif\n
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple01.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple01.infile
new file mode 100755
index 000000000000..9b8d2c3f26eb
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple01.infile
@@ -0,0 +1,3 @@
+# simple01
+TEST|Simple 1|QUICKWORD|simple01
+ENTER_STRING_AT_LOCATION|LEFT|TOP|New text added to simple file.\n
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple02.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple02.infile
new file mode 100755
index 000000000000..ec139bdacafe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple02.infile
@@ -0,0 +1,3 @@
+# simple02
+TEST|Simple 2|QUICKWORD|simple02
+ENTER_STRING_AT_LOCATION|64|20|, including this inserted phrase,
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple03.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple03.infile
new file mode 100755
index 000000000000..0755a23b55db
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple03.infile
@@ -0,0 +1,3 @@
+# simple03
+TEST|Simple 3|QUICKWORD|simple03
+ENTER_STRING_AT_LOCATION|LEFT|42|This is also in standard style\n
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple04.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple04.infile
new file mode 100755
index 000000000000..7c6419dd91a4
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple04.infile
@@ -0,0 +1,3 @@
+# simple04
+TEST|Simple 4|QUICKWORD|simple04
+ENTER_STRING_AT_LOCATION|66|20|
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple05.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple05.infile
new file mode 100755
index 000000000000..5296d4d953d9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/simple05.infile
@@ -0,0 +1,4 @@
+# simple05
+TEST|Simple 5|QUICKWORD|simple05
+ENTER_STRING_AT_LOCATION|108|20|
+ENTER_STRING_AT_LOCATION|19|20|document uses
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table01.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table01.infile
new file mode 100755
index 000000000000..fe197e63ad82
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table01.infile
@@ -0,0 +1,3 @@
+# table01
+TEST|Table 1|QUICKWORD|table01
+ENTER_STRING_AT_LOCATION|77|31|, immediately after this sentence
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table02.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table02.infile
new file mode 100755
index 000000000000..c5570610e083
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table02.infile
@@ -0,0 +1,3 @@
+# table02
+TEST|Table 2|QUICKWORD|table02
+ENTER_STRING_AT_LOCATION|LEFT|64|This sentence comes after the table.
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table03.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table03.infile
new file mode 100755
index 000000000000..22a22cbaa492
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table03.infile
@@ -0,0 +1,4 @@
+# table03
+TEST|Table 3|QUICKWORD|table03
+ENTER_STRING_AT_LOCATION|77|31|, immediately after this sentence
+ENTER_STRING_AT_LOCATION|LEFT|75|This sentence comes after the table.
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table04.infile b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table04.infile
new file mode 100755
index 000000000000..beeb6baf6e06
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/table04.infile
@@ -0,0 +1,4 @@
+# table04
+TEST|Table 4|QUICKWORD|table04
+ENTER_STRING_AT_LOCATION|77|31|
+ENTER_STRING_AT_LOCATION|62|20|a une table avec 3 lignes et 3 colonnes
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_animatedgif.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_animatedgif.sxw
new file mode 100644
index 000000000000..690e5611a4b6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_animatedgif.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bolddoc.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bolddoc.sxw
new file mode 100644
index 000000000000..314a4adc0eb9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bolddoc.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bookmarks.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bookmarks.sxw
new file mode 100644
index 000000000000..c0f7c7ba632c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bookmarks.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bulletorderedlist.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bulletorderedlist.sxw
new file mode 100644
index 000000000000..bd640d575fb2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_bulletorderedlist.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc-mod.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc-mod.sxw
new file mode 100644
index 000000000000..d4d4eff4df96
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc-mod.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc.sxw
new file mode 100644
index 000000000000..d4d4eff4df96
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_emptydoc.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_firstlineindent.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_firstlineindent.sxw
new file mode 100644
index 000000000000..0729f3d25cdf
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_firstlineindent.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_fontsize.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_fontsize.sxw
new file mode 100644
index 000000000000..0b5717728617
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_fontsize.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading.sxw
new file mode 100644
index 000000000000..915dce52c846
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading1.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading1.sxw
new file mode 100644
index 000000000000..ebf0b2a44a3d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading1.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading2.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading2.sxw
new file mode 100644
index 000000000000..42645eb2a0e6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_heading2.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_hyperlink.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_hyperlink.sxw
new file mode 100644
index 000000000000..68632c7799cb
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_hyperlink.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_justified.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_justified.sxw
new file mode 100644
index 000000000000..37fa79a5db3b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_justified.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_linebreaks.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_linebreaks.sxw
new file mode 100644
index 000000000000..519d12ef6acd
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_linebreaks.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_linespacing.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_linespacing.sxw
new file mode 100644
index 000000000000..f640bf826395
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_linespacing.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_numberorderedlist.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_numberorderedlist.sxw
new file mode 100644
index 000000000000..9ea9bcdb2195
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_numberorderedlist.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_pagebreak.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_pagebreak.sxw
new file mode 100644
index 000000000000..389520790d52
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_pagebreak.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_paragraph.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_paragraph.sxw
new file mode 100644
index 000000000000..b19b4439b2e0
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_paragraph.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple01.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple01.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple01.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple02.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple02.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple02.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple03.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple03.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple03.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple04.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple04.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple04.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple05.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple05.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_simple05.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_standard.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_standard.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_standard.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_subscript.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_subscript.sxw
new file mode 100644
index 000000000000..486a8fb92d8d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_subscript.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_superscript.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_superscript.sxw
new file mode 100644
index 000000000000..cc65c10281df
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_superscript.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_symbols.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_symbols.sxw
new file mode 100644
index 000000000000..7d8961b142bd
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_symbols.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_tab.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_tab.sxw
new file mode 100644
index 000000000000..878707db6816
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_tab.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_table.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_table.sxw
new file mode 100644
index 000000000000..34634a4ec542
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_table.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_textspan.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_textspan.sxw
new file mode 100644
index 000000000000..c42751fa6ee4
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_textspan.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_unorderedlist.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_unorderedlist.sxw
new file mode 100644
index 000000000000..ca5ee406ccc5
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_unorderedlist.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_wordwrap.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_wordwrap.sxw
new file mode 100644
index 000000000000..168ebc72dfd1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/a_wordwrap.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_addition.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_addition.sxc
new file mode 100644
index 000000000000..9bd5c1a7ee73
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_addition.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_alignment.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_alignment.sxc
new file mode 100644
index 000000000000..b1fdbd58b7a8
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_alignment.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_backwardrange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_backwardrange.sxc
new file mode 100644
index 000000000000..f319ed9feb8d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_backwardrange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_basic.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_basic.sxc
new file mode 100644
index 000000000000..9bd5c1a7ee73
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_basic.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_boolean.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_boolean.sxc
new file mode 100644
index 000000000000..b6e876605be5
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_boolean.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellcurrencyalue.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellcurrencyalue.sxc
new file mode 100644
index 000000000000..808d781162e6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellcurrencyalue.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellpercentvalue.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellpercentvalue.sxc
new file mode 100644
index 000000000000..e0499ce95c17
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellpercentvalue.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellstringvalue.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellstringvalue.sxc
new file mode 100644
index 000000000000..f6fb4dc5de1a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cellstringvalue.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_columnswidth.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_columnswidth.sxc
new file mode 100644
index 000000000000..24aa28e71fbd
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_columnswidth.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cyclic.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cyclic.sxc
new file mode 100644
index 000000000000..196bd78962a9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_cyclic.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_dividefloating.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_dividefloating.sxc
new file mode 100644
index 000000000000..1e2c55b448c8
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_dividefloating.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_forwardrange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_forwardrange.sxc
new file mode 100644
index 000000000000..f37c97d7e2a8
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_forwardrange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_insertimage.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_insertimage.sxc
new file mode 100644
index 000000000000..9f42285d2881
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_insertimage.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_insertrow.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_insertrow.sxc
new file mode 100644
index 000000000000..e20c0fff4414
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_insertrow.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_invalidcellref.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_invalidcellref.sxc
new file mode 100644
index 000000000000..28fa241d7112
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_invalidcellref.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_largerange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_largerange.sxc
new file mode 100644
index 000000000000..618e9ee73478
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_largerange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_listrange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_listrange.sxc
new file mode 100644
index 000000000000..b29b34d589ad
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_listrange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_mathematical.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_mathematical.sxc
new file mode 100644
index 000000000000..deab6092dc97
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_mathematical.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_multi_boolean.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_multi_boolean.sxc
new file mode 100644
index 000000000000..38bc90cf0e52
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_multi_boolean.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_protection.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_protection.sxc
new file mode 100644
index 000000000000..64f89cc61ce7
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_protection.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_sheetreference.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_sheetreference.sxc
new file mode 100644
index 000000000000..0ebb013db25d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_sheetreference.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple01.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple01.sxc
new file mode 100755
index 000000000000..b4417b983444
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple01.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple02.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple02.sxc
new file mode 100755
index 000000000000..7a4d69640f0a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple02.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple03.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple03.sxc
new file mode 100755
index 000000000000..bb29f91d6b29
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple03.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple04.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple04.sxc
new file mode 100755
index 000000000000..318129c421c4
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_simple04.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_smallrange.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_smallrange.sxc
new file mode 100644
index 000000000000..ea7dacc2464d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_smallrange.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_styles.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_styles.sxc
new file mode 100644
index 000000000000..21e0f1ab5ac0
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_styles.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_textimage.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_textimage.sxc
new file mode 100644
index 000000000000..9f42285d2881
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/c_textimage.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/empty01.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/empty01.sxw
new file mode 100644
index 000000000000..d4d4eff4df96
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/empty01.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/hyperlink01.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/hyperlink01.sxw
new file mode 100644
index 000000000000..d000f2974b23
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/hyperlink01.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/image01.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/image01.sxw
new file mode 100644
index 000000000000..690e5611a4b6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/image01.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple01.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple01.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple01.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple02.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple02.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple02.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple03.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple03.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple03.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple04.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple04.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple04.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple05.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple05.sxw
new file mode 100644
index 000000000000..be65343e2ffe
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/simple05.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table01.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table01.sxw
new file mode 100644
index 000000000000..956bedcc24e2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table01.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table02.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table02.sxw
new file mode 100644
index 000000000000..956bedcc24e2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table02.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table03.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table03.sxw
new file mode 100644
index 000000000000..956bedcc24e2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table03.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table04.sxw b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table04.sxw
new file mode 100644
index 000000000000..956bedcc24e2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/testcases/xml-orig/table04.sxw
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/mysplit.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/mysplit.pl
new file mode 100755
index 000000000000..9eea6c551798
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/mysplit.pl
@@ -0,0 +1,60 @@
+#!/usr/local/bin/perl
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: mysplit.pl,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+open(TESTFILE, $ARGV[0]);
+
+while (<TESTFILE>)
+{
+ if ($_[1] eq "-q")
+ {
+ chomp $_;
+ @args = split('\|', $_);
+ @filestuff = split('\.', @args[0]);
+ $filename = @filestuff[0] . ".infile";
+ open (TESTCASE, ">$filename") || die "Error opening $filename";
+ print TESTCASE "# @args[1]\n# @args[2]\n";
+ print TESTCASE "TEST|@args[1]|QUICKWORD|@filestuff[0]\n" ;
+ close TESTCASE;
+ }
+ if ($_[1] eq "-m")
+ {
+ chomp $_;
+ @args = split('\|', $_);
+ @filestuff = split('\.', @args[0]);
+ $filename = @filestuff[0] . ".infile";
+ open (TESTCASE, ">$filename") || die "Error opening $filename";
+ print TESTCASE "# @args[1]\n# @args[2]\n";
+ print TESTCASE "TEST|@args[1]|MINICALC|@filestuff[0]\n" ;
+ close TESTCASE;
+ }
+
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/tappen.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/tappen.pl
new file mode 100755
index 000000000000..d2187757ef59
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/tappen.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: tappen.pl,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+####################################################################
+# File Name: template.pl
+# Version : 1.0
+# Project : XMerge
+# Author : Brian Cameron
+# Date : 5th Sept. 2001
+#
+# Takes x and y from the command line and taps the screen there.
+# Assumes pose is already running.
+#
+##########################################################################
+
+if ($#ARGV != 1)
+{
+ print "\nUsage: $0 x y\n\n";
+ exit -1;
+}
+
+use lib "$ENV{qa-dir}/lib";
+use converterlib;
+
+# Put commands to run between the open_connection() and
+# close_connection() calls...
+#
+open_connection();
+
+TapPen($ARGV[0], $ARGV[1]);
+
+close_connection();
+
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/template.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/template.pl
new file mode 100755
index 000000000000..a9af244a84b2
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/template.pl
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: template.pl,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+####################################################################
+# File Name: template.pl
+# Version : 1.0
+# Project : XMERGE
+# Author : Brian Cameron
+# Date : 5th Sept. 2001
+#
+# This is just a useful script to use as a template to run
+# commands. Assumes that pose is already running.
+#
+##########################################################################
+
+use lib "$ENV{qa-dir}/lib";
+use converterlib;
+
+# Put commands to run between the open_connection() and
+# close_connection() calls...
+#
+open_connection();
+
+# command(s) go here.
+
+close_connection();
+
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/test_driver.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/test_driver.pl
new file mode 100755
index 000000000000..a4dc46fb5e8f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/test_driver.pl
@@ -0,0 +1,787 @@
+#!/usr/bin/perl
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: test_driver.pl,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+####################################################################
+# File Name: test_driver.pl
+# Version : 1.0
+# Project : Xmerge
+# Author : Brian Cameron
+# Date : 5th Sept. 2001
+#
+# This script does the following:
+#
+# Processes the input file, and runs the tests specified in that
+# file. This will do the following for each test:
+#
+# 1. Convert a file from XML to PDB format
+# 2. Starts up the Palm OS emulator with the appropriate program
+# running and the converted file loaded the program.
+# 3. Makes automated changes as specified in the inputfile to
+# this script..
+# 4. Returns to the main applications window.
+#
+# Parameter
+# Filename to convert and change
+#
+##########################################################################
+
+# Turn on auto-flushing
+#
+$|=1;
+
+use EmRPC;
+
+# Directory where converterlib is located...
+#
+use lib "$ENV{qa-dir}/lib";
+use converterlib;
+
+#-------------------- Start of main script ------------------------------------
+
+# Environmental Settings
+
+$pose_exe = "$ENV{pose-dir}/pose/posedist/pose";
+$pose_prc = "$ENV{thirdpartyapps-dir}";
+$test_list = "";
+$infile = "";
+$merge_opt = 0;
+
+# You may need to change this from the default if your pose emulator
+# starts faster or slower than mine.
+#
+if ($ENV{'POSE_TIMEOUT'})
+{
+ $pose_timeout = "$ENV{'POSE_TIMEOUT'}";
+}
+else
+{
+ $pose_timeout = 15;
+}
+
+$cmdline_len = @ARGV;
+if ($cmdline_len <= 0)
+{
+ print_usage();
+ exit (0);
+}
+
+&process_cmdline(@ARGV);
+&print_env();
+&verify_env_options();
+
+# Make the output directories with timestamps included in the
+# directory names.
+#
+mkdir $pdb_orig, 0777 || die "can not create directory <$pdb_new>.";
+`chmod 777 $pdb_orig`;
+mkdir $pdb_new, 0777 || die "can not create directory <$pdb_new>.";
+`chmod 777 $pdb_new`;
+mkdir $xml_new, 0777 || die "can not create directory <$pdb_new>.";
+`chmod 777 $xml_new`;
+
+&verify_prcs_exist("DBExporter.prc");
+
+if ($test_list ne "")
+{
+ open (TESTLIST, $test_list) || die "Couldn't open testcase list file $test_list";
+
+ while (<TESTLIST>)
+ {
+ &process_testcase($_);
+ }
+}
+elsif ($infile ne "")
+{
+ &process_testcase($infile);
+}
+else
+{
+ die ("You didn't supply any test cases to process");
+}
+
+print "Finished.\n";
+exit(0);
+
+#-------------------- End of main script ----------------------------------------
+
+#--------------------------------------------------------------------------------
+# Various sub routines
+#--------------------------------------------------------------------------------
+
+# process_testcase
+# infile - test case file name
+#
+# This is the main driver function
+# Opens the infile, reads it in parses it, runs the appropriate conversion
+# starts pose and load the file into the emulator. It launches the
+# appropriate editor and then runs the commands specified in the test case.
+# It then exports the file and saves it locally. Finally it is converted
+# back to the original office format.
+#
+sub process_testcase
+{
+ my $infile = $_[0];
+ my $convert_file = "";
+ my $rc;
+
+ # Process the inputfile
+ #
+ open (INFILE, $infile) || die "Failed to open test case <$infile>";
+
+ $running_testtype = "";
+
+ # Process the input file.
+ #
+ while ($c_inline = <INFILE>)
+ {
+ chomp $c_inline;
+ @entry = split('\|', $c_inline);
+
+ # Process TEST
+ #
+ if ($c_inline =~ /^ *#/ || $c_inline =~ /^[ \t]*$/)
+ {
+ # skip comments and blank lines.
+ #
+ next;
+ }
+ elsif ("$entry[0]" eq "TEST")
+ {
+ # Close the test if one is running.
+ #
+ &close_program($convert_file);
+ $running_testtype = "";
+
+ $valid_test = 0;
+
+ if ($#entry != 3)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ else
+ {
+ # Start the test.
+ #
+ print "\nStarting test: $entry[1]\n";
+ $convert_file = $entry[3];
+
+ if ("$entry[2]" =~ /[Qq][Uu][Ii][Cc][Kk][Ww][Oo][Rr][Dd]/)
+ {
+ $xml_extension = "sxw";
+ $convert_to = "doc";
+
+ # Convert XML file to pdb format.
+ #
+ $rc = &convert_to_pdb("$xml_orig", $convert_file, $xml_extension ,
+ $convert_to,"$pdb_orig");
+ if ($rc != 0)
+ {
+ print "\nERROR, problem converting file $convert_file\n\n";
+ }
+ else
+ {
+ # Start pose
+ #
+ $rc = &start_pose("$pose_exe",
+ "$pose_prc/Quickword.PRC,$pose_prc/DBExporter.prc,$pdb_orig/$convert_file.pdb",
+ "Quickword", $pose_timeout);
+
+ if ($rc == 0)
+ {
+ &start_quickword();
+ $valid_test = 1;
+ $running_testtype = "QUICKWORD";
+ print "\npose launched, begin automated test sequence for QuickWord\n";
+ }
+ else
+ {
+ &kill_pose();
+ $running_testtype = "";
+ }
+ }
+ }
+ elsif ("$entry[2]" =~ /[Mm][Ii][Nn][Ii][Cc][Aa][Ll][Cc]/)
+ {
+ $xml_extension = "sxc";
+ $convert_to = "minicalc";
+
+ # Convert XML file to pdb format.
+ #
+ $rc = &convert_to_pdb("$xml_orig", $convert_file,
+ $xml_extension, $convert_to,"$pdb_orig");
+ if ($rc != 0)
+ {
+ print "\nERROR, problem converting file $convert_file\n\n";
+ }
+ else
+ {
+ # Get minicalc PDB file names, since an SXC file can
+ # be converted to more than one.
+ #
+ $pdb_files="";
+ $i = 1;
+ while (-f "$pdb_orig/$convert_file-Sheet$i.pdb")
+ {
+ if ($i > 1)
+ {
+ $pdb_files .= ",";
+ }
+ $pdb_files .= "$pdb_orig/$convert_file-Sheet$i.pdb";
+ $i++;
+ }
+ $number = $i-1;
+
+ # Start pose
+ #
+ $rc = &start_pose("$pose_exe",
+ "$pose_prc/MiniCalc.prc,$pose_prc/DBExporter.prc,$pdb_files",
+ "MiniCalc", $pose_timeout);
+
+ if ($rc == 0)
+ {
+ &start_minicalc();
+ $valid_test = 1;
+ $running_testtype = "MINICALC";
+ print "pose launched, begin automated test sequence for MiniCalc\n";
+ }
+ else
+ {
+ &kill_pose();
+ $running_testtype = "";
+ }
+ }
+ }
+ else
+ {
+ print "\nERROR, invalid extension <$entry[2]>\n\n";
+ }
+ }
+ }
+
+ # Process DB_EXPORT
+ #
+ elsif ("$entry[0]" eq "DB_EXPORT")
+ {
+ if ($#entry != 1)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ else
+ {
+ &db_export($entry[1]);
+ }
+ }
+
+ # Process TAP_APPLICATIONS
+ #
+ elsif ("$entry[0]" eq "TAP_APPLICATIONS")
+ {
+ if ($#entry != 0)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ else
+ {
+ &tap_applications(0);
+ }
+ }
+
+ # Process ENTER_STRING_AT_LOCATION
+ #
+ elsif ("$entry[0]" eq "ENTER_STRING_AT_LOCATION")
+ {
+ if ($#entry != 3)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &enter_string_at_location($entry[1], $entry[2],
+ $entry[3], $running_testtype);
+ }
+ }
+
+ # Process TAP_PEN
+ #
+ elsif ("$entry[0]" eq "TAP_PEN")
+ {
+ if ($#entry != 2)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &pose_tap_pen($entry[1], $entry[2], 0);
+ }
+ }
+
+ # Process TAP_BUTTON
+ #
+ elsif ("$entry[0]" eq "TAP_BUTTON")
+ {
+ if ($#entry != 1)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &pose_tap_button($entry[1], 0);
+ }
+ }
+
+ # Process SLEEP
+ #
+ elsif ("$entry[0]" eq "SLEEP")
+ {
+ if ($#entry != 1)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ else
+ {
+ &pose_sleep($entry[1]);
+ }
+ }
+
+ # Process MINICALC_ENTER_CELL
+ #
+ elsif ("$entry[0]" eq "MINICALC_ENTER_CELL")
+ {
+ if ($#entry != 3)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &minicalc_enter_cell($entry[1], $entry[2], $entry[3]);
+ }
+ }
+
+ # Process QUICKWORD_FIND_REPLACE
+ #
+ elsif ("$entry[0]" eq "QUICKWORD_FIND_REPLACE")
+ {
+ if ($#entry != 2)
+ {
+ print "\nERROR, $entry[0] invalid number of arguments\n\n";
+ }
+ elsif ($valid_test == 0)
+ {
+ print "\nERROR, can not process $entry[0] for invalid test\n\n";
+ }
+ else
+ {
+ &quickword_find_replace($entry[1], $entry[2]);
+ }
+ }
+ else
+ {
+ print "\nERROR, invalid line <$c_inline>\n";
+ }
+ }
+
+ &close_program($convert_file);
+}
+
+# close_program
+# convert_file - file to export
+#
+# closes the program running in pose and kills pose
+#
+sub close_program
+{
+ my $convert_file = $_[0];
+
+ if ($running_testtype eq "QUICKWORD")
+ {
+ print "QuickWord test completed.\n";
+ &close_program_quickword($convert_file);
+ }
+ elsif ($running_testtype eq "MINICALC")
+ {
+ print "MiniCalc test completed.\n";
+ &close_program_minicalc($convert_file, $number);
+ }
+}
+
+# close_program_quickword
+# convert_file - file to export
+#
+# Closes quickword and kills pose
+#
+sub close_program_quickword
+{
+ my $convert_file = $_[0];
+ my $error_file = "./error.txt";
+ my $rc;
+
+ &close_quickword();
+
+ &db_export($convert_file);
+ print "Moving /tmp/$convert_file.pdb to $pdb_new\n";
+ `mv /tmp/$convert_file.pdb $pdb_new`;
+ `chmod 666 $pdb_new/$convert_file.pdb`;
+
+ &close_connection(1);
+ &kill_pose();
+ print "\nFinishing test...\n";
+
+ # The path of where to put the error file should be specified
+ # in the properties file. Not sure if it is really necessary
+ # to put this out to a separate file. STDOUT should be fine.
+ #
+ $rc = &convert_to_xml($xml_new, $xml_orig,
+ "$pdb_new/$convert_file.pdb", "doc" ,
+ "sxw", $convert_file, $merge_opt);
+ if ($rc != 0)
+ {
+ print "\nERROR, problem converting file $pdb_new/$convert_file.pdb\n\n";
+ }
+}
+
+# close_program_minicalc
+# convert_file - file to export
+#
+# Closes minicalc and kills pose
+#
+sub close_program_minicalc
+{
+ my $convert_file = $_[0];
+ my $num_files = $_[1];
+ my $list="";
+ my $rc;
+
+ &close_minicalc();
+
+ for ($a=1; $a <= $num_files; $a++)
+ {
+ &db_export("$convert_file-Sheet$a");
+ print "Moving /tmp/$convert_file-Sheet$a.pdb to $pdb_new/\n";
+ `mv /tmp/$convert_file-Sheet$a.pdb $pdb_new/`;
+ `chmod 666 $pdb_new/$convert_file-Sheet$a.pdb`;
+ }
+
+ &close_connection(1);
+ &kill_pose();
+ print "\nFinishing test...\n";
+
+ for ($a=1; $a <= $num_files; $a++)
+ {
+ $list .="$pdb_new/$convert_file-Sheet$a.pdb "
+ }
+
+ $rc = &convert_to_xml($xml_new, $xml_orig, "$list",
+ "minicalc", "sxc", $convert_file, $merge_opt);
+ if ($rc != 0)
+ {
+ print "\nERROR, problem converting file(s) $list\n\n";
+ }
+
+ &pose_sleep(5);
+}
+
+# print_usage
+#
+# prints the usage for this program.
+#
+sub print_usage
+{
+ print "Usage : test_driver.pl\n";
+ print "\t-test=<file> \t\t: individual test case file to run\n";
+ print "\t-list=<file> \t\t: list of test case files\n";
+ print "\t-env=<file> \t\t: Properites like file defining env\n";
+ print "\t-pose-exe=<fullpath> \t: path to pose executable\n";
+ print "\t-pose-prc=<path> \t: path to directory holding prc files\n";
+ print "\t-pdb-orig=<path> \t: directory to hold original pdb files\n";
+ print "\t-pdb-new=<path> \t: directory to hold new pdb files\n";
+ print "\t-xml-orig=<path> \t: directory to hold original office documents\n";
+ print "\t-xml-new=<path> \t: directory to hold new office documents\n";
+ print "\t-merge \t: Invokes the merge option when converting\n";
+ print "\t \t from PDB back to XML.\n";
+}
+
+# print_env
+#
+# Prints the current environment.
+#
+sub print_env
+{
+ print "\nUsing the following environment:\n";
+ print "\tPOSE_EXE = $pose_exe\n";
+ print "\tPOSE_PRC = $pose_prc\n";
+ print "\tPDB_ORIG = $pdb_orig\n";
+ print "\tPDB_NEW = $pdb_new\n";
+ print "\tXML_ORIG = $xml_orig\n";
+ print "\tXML_NEW = $xml_new\n";
+}
+
+# process_cmdline
+#
+# command line options come in as key/value pairs.
+# read them and set the appropriate global variable
+#
+# Sets these globals: pose_exe, pose_prc, xml_orig, xml_new_dir,
+# xml_new, pdb_orig_dir, pdb_orig, pdb_new_dir, pdb_new.
+#
+sub process_cmdline
+{
+ my $lu_str = &get_date_string();
+
+ foreach $i (@_)
+ {
+ my @arg= split('=', $i);
+ @arg[0] =~ tr/A-Z/a-z/;
+
+ if (@arg[0] eq "-pose-exe")
+ {
+ $pose_exe=$arg[1];
+ }
+ elsif (@arg[0] eq "-pose-prc")
+ {
+ $pose_prc=$arg[1];
+ }
+ elsif (@arg[0] eq "-pdb-orig")
+ {
+ $pdb_orig_dir=$arg[1];
+ $pdb_orig=$arg[1];
+ $pdb_orig .= "/";
+ $pdb_orig .= "$lu_str";
+ }
+ elsif (@arg[0] eq "-pdb-new")
+ {
+ $pdb_new_dir=$arg[1];
+ $pdb_new=$arg[1];
+ $pdb_new .= "/";
+ $pdb_new .= "$lu_str";
+ }
+ elsif (@arg[0] eq "-xml-orig")
+ {
+ $xml_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "-xml-new")
+ {
+ $xml_new_dir=$arg[1];
+ $xml_new=$arg[1];
+ $xml_new .= "/";
+ $xml_new .= "$lu_str";
+ }
+ elsif (@arg[0] eq "-env")
+ {
+ &set_env_from_props($arg[1]);
+ }
+ elsif (@arg[0] eq "-list")
+ {
+ $test_list = $arg[1];
+ }
+ elsif (@arg[0] eq "-test")
+ {
+ $infile = $arg[1];
+ }
+ elsif (@arg[0] eq "-merge")
+ {
+ $merge_opt = 1;
+ }
+ else
+ {
+ print_usage();
+ die "Incorrect command line";
+ }
+ }
+}
+
+# set_env_from_props
+# infile - property file
+#
+# Read the properties file, of the form key=value
+# Valid key values are :
+# POSE_EXE
+# POSE_PRC
+# POSE_PERL
+# TEST_HOME
+# PDB_ORIG
+# PDB_NEW
+# XML_ORIG
+# XML_NEW
+# If a value is found the appropriate global variable is set.
+#
+# Sets these globals: pose_exe, pose_prc, xml_orig, xml_new_dir,
+# xml_new, pdb_orig_dir, pdb_orig, pdb_new_dir, pdb_new.
+#
+sub set_env_from_props
+{
+ my $infile = $_[0];
+ my $lu_str = &get_date_string();
+
+ open(PROPSFILE, $infile) || die "Could not open properties file <$infile>";
+
+ while (<PROPSFILE>)
+ {
+ chomp $_;
+ my @arg = split('=', $_);
+ @arg[0] =~ tr/a-z/A-Z/;
+ my $len = @arg;
+ if ($len != 2)
+ {
+ die "Malformed property in $arg[0]";
+ }
+ if (@arg[0] eq "POSE_EXE")
+ {
+ $pose_exe=$arg[1];
+ }
+ elsif (@arg[0] eq "POSE_PRC")
+ {
+ $pose_prc=$arg[1];
+ }
+ elsif (@arg[0] eq "PDB_ORIG")
+ {
+ $pdb_orig_dir=$arg[1];
+ $pdb_orig=$arg[1];
+ $pdb_orig .= "/";
+ $pdb_orig .= "$lu_str";
+ }
+ elsif (@arg[0] eq "PDB_NEW")
+ {
+ $pdb_new_dir=$arg[1];
+ $pdb_new=$arg[1];
+ $pdb_new .= "/";
+ $pdb_new .= "$lu_str";
+ }
+ elsif (@arg[0] eq "XML_ORIG")
+ {
+ $xml_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "XML_NEW")
+ {
+ $xml_new_dir=$arg[1];
+ $xml_new=$arg[1];
+ $xml_new .= "/";
+ $xml_new .= "$lu_str";
+ }
+
+ }
+ close PROPSFILE;
+}
+
+# verify_env_options
+#
+# Verify that input options are correctly set.
+# Assumes pose_exe, pose_prc, xml_orig, xml_new_dir,
+# pdb_orig_dir, and pdb_new_dir are already set.
+#
+sub verify_env_options
+{
+ if (!-e "$pose_exe")
+ {
+ die "The pose executable cannot be found at $pose_exe.";
+ }
+ if (!-x $pose_exe)
+ {
+ die "$pose_exe exists but is not executable.";
+ }
+
+ if (!-e "$pose_prc")
+ {
+ die "The PRC directory specified as $pose_prc does not exist.";
+ }
+ if (!-d "$pose_prc")
+ {
+ die "The PRC location specified as $pose_prc exists, but is not a directory.";
+ }
+
+ if (!-e "$pdb_orig_dir")
+ {
+ die "The original PDB directory specified as $pdb_orig_dir does not exist.";
+ }
+ if (!-d "$pdb_orig_dir")
+ {
+ die "The original PDB directory specified as $pdb_orig_dir exists but is not a directory.";
+ }
+
+ if (!-e "$pdb_new_dir")
+ {
+ die "The new PDB directory specified as $pdb_new_dir does not exist.";
+ }
+ if (!-d "$pdb_new_dir")
+ {
+ die "The new PDB directory specified as $pdb_new_dir exists but is not a directory.";
+ }
+
+ if (!-e "$xml_orig")
+ {
+ die "The original Office document directory specified as $xml_orig does not exist.";
+ }
+ if (!-d "$xml_orig")
+ {
+ die "The original Office document location specified as $xml_orig exists but is not a directory.";
+ }
+
+ if (!-e "$xml_new_dir")
+ {
+ die "The new Office document directory specified as $xml_new_dir does not exist.";
+ }
+ if (!-d "$xml_new_dir")
+ {
+ die "The new Office document location specified as $xml_new_dir exists but is not a directory.";
+ }
+}
+
+# verify_prcs_exist
+# prcfile - the PRC file to check
+#
+# Verifies that the specified PRC file exists.
+#
+sub verify_prcs_exist
+{
+ my $prcfile = $_[0];
+
+ if (!-e "$pose_prc/$prcfile")
+ {
+ die "The pose PRC directory ($pose_prc) is correct, but I can't find $prcfile there.";
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/OfficeZip.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/OfficeZip.java
new file mode 100644
index 000000000000..301c62aa123f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/OfficeZip.java
@@ -0,0 +1,244 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: OfficeZip.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+import java.util.List;
+import java.util.ListIterator;
+import java.util.LinkedList;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.CRC32;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.IOException;
+import java.io.ByteArrayOutputStream;
+import org.openoffice.xmerge.util.Debug;
+
+/**
+ * Class used by OfficeDocument to handle zip reading and writing,
+ * as well as storing zip entries.
+ *
+ * @author Herbie Ong
+ */
+
+class OfficeZip {
+
+ /** file name of the xml file in a zipped document. */
+ private final static String XMLFILE = "content.xml";
+
+ private final static int BUFFERSIZE = 1024;
+
+ private List entryList = null;
+
+ private int contentIndex = -1;
+
+ private String filename = null;
+
+ private class Entry {
+
+ ZipEntry zipEntry = null;
+ byte bytes[] = null;
+ }
+
+ /**
+ * Constructor
+ *
+ * @param filename Full Path to Zip file to process
+ *
+ */
+ public OfficeZip(String filename) {
+ this.filename = filename;
+ }
+
+
+ /**
+ * Read each zip entry in the given InputStream object
+ * and store in entryList both the ZipEntry object as well
+ * as the bits of each entry. Return the bytes for the
+ * entry of XMLFILE.
+ *
+ * @param is InputStream object to read from
+ * @return byte[] byte array of XML file
+ * @throws IOException if any I/O error occurs
+ */
+
+ byte[] read(InputStream is) throws IOException {
+
+ ZipInputStream zis = new ZipInputStream(is);
+ ZipEntry ze = null;
+ int i = -1;
+
+ entryList = new LinkedList();
+
+ while ((ze = zis.getNextEntry()) != null) {
+
+ String name = ze.getName();
+
+ Entry entry = new Entry();
+ entry.zipEntry = ze;
+
+ Debug.log(Debug.TRACE, "reading entry: " + name);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ int len = 0;
+ byte bytes[] = new byte[BUFFERSIZE];
+
+ while ((len = zis.read(bytes)) > 0) {
+ baos.write(bytes, 0, len);
+ }
+
+ entry.bytes = baos.toByteArray();
+
+ entryList.add(entry);
+
+ i++;
+
+ if (isContentXML(name)) {
+ contentIndex = i;
+ }
+ }
+
+ if (contentIndex == -1) {
+ throw new IOException(XMLFILE + " not found.");
+ }
+
+ Entry contentEntry = (Entry) entryList.get(contentIndex);
+
+ return contentEntry.bytes;
+ }
+
+ /**
+ * Write out the XMLFILE as a zip into the OutputStream object.
+ *
+ * If a zip inputstream was previously read, then use
+ * those zip contents to recreate the zip, except for XMLFILE,
+ * update it using the new content from xmlBytes.
+ *
+ * If there was no zip inputstream previously read, write
+ * XMLFILE out into the zip outputstream.
+ *
+ * @param os OutputStream object to write zip
+ * @param xmlBytes bytes of XMLFILE
+ * @throws IOException if any I/O errors occur.
+ */
+
+ void write(OutputStream os, byte xmlBytes[]) throws IOException {
+
+ ZipOutputStream zos = new ZipOutputStream(os);
+
+ // if read was not invoked previously, store the bytes directly.
+ if (contentIndex == -1) {
+
+ Debug.log(Debug.TRACE, "Writing out " + XMLFILE + " into zip.");
+
+ ZipEntry ze = new ZipEntry(XMLFILE);
+ ze.setSize(xmlBytes.length);
+
+ CRC32 crc = new CRC32();
+ crc.reset();
+ crc.update(xmlBytes);
+ ze.setCrc(crc.getValue());
+
+ ze.setTime(System.currentTimeMillis());
+ ze.setMethod(ZipEntry.DEFLATED);
+
+ zos.putNextEntry(ze);
+ zos.write(xmlBytes);
+
+ } else {
+
+ saveEntries(zos, xmlBytes);
+ }
+
+ zos.close();
+ }
+
+ /**
+ * Used by write method if there was a zip inputstream
+ * previously read. It would write out each ZipEntry of
+ * the previously read zip, except for XMLFILE, it would
+ * update it with new values and with the content from
+ * xmlBytes.
+ *
+ * @param os OutputStream object to write zip
+ * @param xmlBytes bytes of XMLFILE
+ * @throws ZipException if any zip I/O errors occur.
+ */
+
+ private void saveEntries(ZipOutputStream zos, byte xmlBytes[])
+ throws IOException {
+
+ Debug.log(Debug.TRACE, "Writing out the following entries into zip.");
+
+ ListIterator iterator = entryList.listIterator();
+
+ while (iterator.hasNext()) {
+
+ Entry entry = (Entry) iterator.next();
+ ZipEntry ze = entry.zipEntry;
+
+ String name = ze.getName();
+
+ Debug.log(Debug.TRACE, "... " + name);
+
+ if (isContentXML(name)) {
+
+ // set new values for this ZipEntry
+
+ ZipEntry zipEntry = new ZipEntry(name);
+
+ zipEntry.setMethod(ze.getMethod());
+ zipEntry.setSize(xmlBytes.length);
+
+ CRC32 crc = new CRC32();
+ crc.reset();
+ crc.update(xmlBytes);
+ zipEntry.setCrc(crc.getValue());
+
+ zipEntry.setTime(System.currentTimeMillis());
+
+ zos.putNextEntry(zipEntry);
+ zos.write(xmlBytes);
+
+ } else {
+
+ zos.putNextEntry(ze);
+ zos.write(entry.bytes);
+ }
+ }
+ }
+
+ private boolean isContentXML(String name) {
+
+ String lname = name.toLowerCase();
+ return lname.equals(XMLFILE);
+ }
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBDecoder.java
new file mode 100644
index 000000000000..417d886cecea
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBDecoder.java
@@ -0,0 +1,138 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PDBDecoder.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+import java.io.RandomAccessFile;
+import java.io.IOException;
+
+
+/**
+ * <p>Provides functionality to decode a pdb formatted file into
+ * a <code>PalmDB</code> object given a file input stream</p>
+ *
+ * <p>Sample usage:</p>
+ *
+ * <p><blockquote><pre>
+ * PDBDecoder decoder = new PDBDecoder("sample.pdb");
+ * PalmDB palmDB = decoder.parse();
+ * </pre></blockquote></p>
+ *
+ * <p>Refer to the
+ * <a href="http://starlite.eng/zensync/eng/converters/palmfileformats.pdf">
+ * Palm file format specification</a> for details on the pdb format.</p>
+ *
+ * <p>This decoder has the following assumptions on the pdb file ...</p>
+ * <ol>
+ * <li><p>There is only one RecordList section in the pdb.</p></li>
+ * <li><p>The record indices in the RecordList are sorted in order, i.e. the
+ * first record index refers to record 0, and so forth.</p></li>
+ * <li><p>The raw records in the record section are sorted as well in order,
+ * i.e. first record comes ahead of second record, etc.</p></li>
+ * </ol>
+ *
+ * Other decoders assume these as well.
+ *
+ * @author Herbie Ong
+ * @see PalmDB
+ * @see PDBHeader
+ *
+ * @author Herbie Ong
+ */
+
+public final class PDBDecoder {
+
+ /**
+ * <p>This method decodes a pdb file into a PalmDB object.</p>
+ *
+ * <p>First, read in the header data using <code>PDBHeader</code>'s
+ * <code>read</code> method</p>. Next, read in the record list
+ * section. Store the record offsets for use when parsing the records.
+ * Based on these offsets, read in each record's bytes and store
+ * each in a <code>Record</code> object. Lastly, create a
+ * <code>PalmDB</code> object with the read in <code>Record</code>s.
+ *
+ * @param fileName pdb file name
+ * @throws IOException if I/O error occurs
+ */
+
+ public PalmDB parse(String fileName) throws IOException {
+
+ RandomAccessFile file = new RandomAccessFile(fileName, "r");
+
+ // read the pdb header
+ PDBHeader header = new PDBHeader();
+ header.read(file);
+
+ Record recArray[] = new Record[header.numRecords];
+
+ if (header.numRecords != 0) {
+
+ // read in the record indices + offsets
+
+ int recOffset[] = new int[header.numRecords];
+
+ for (int i = 0; i < header.numRecords; i++) {
+
+ recOffset[i] = file.readInt();
+ int attr = file.readInt(); // read in attribute.
+ }
+
+ // read the records
+
+ int len = 0;
+ byte[] bytes = null;
+
+ int lastIndex = header.numRecords - 1;
+
+ for (int i = 0; i < lastIndex; i++) {
+
+ file.seek(recOffset[i]);
+ len = recOffset[i+1] - recOffset[i];
+ bytes = new byte[len];
+ file.readFully(bytes);
+ recArray[i] = new Record(bytes);
+ }
+
+ // last record
+ file.seek(recOffset[lastIndex]);
+ len = (int) file.length() - recOffset[lastIndex];
+ bytes = new byte[len];
+ file.readFully(bytes);
+ recArray[lastIndex] = new Record(bytes);
+ }
+
+ file.close();
+
+ // create PalmDB and return it
+ PalmDB pdb = new PalmDB(header.pdbName, recArray);
+ return pdb;
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBHeader.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBHeader.java
new file mode 100644
index 000000000000..3029149db22d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBHeader.java
@@ -0,0 +1,157 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PDBHeader.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+/**
+ * <p>Class used only internally by <code>PDBEncoder</code> and
+ * <code>PDBDecoder</code> to store, read and write a pdb header.</p>
+ *
+ * <p>Note that fields are intended to be accessible only at the
+ * package level.</p>
+ *
+ * <p>Some of the fields are internally represented using a
+ * larger type since Java does not have unsigned types.
+ * Some are not since they are not relevant for now.
+ * The <code>read</code> and <code>write</code> methods should
+ * handle them properly.</p>
+ *
+ * @author Herbie Ong
+ */
+
+final class PDBHeader {
+
+ /** name of the database. 32 bytes. */
+ byte[] pdbName = null;
+
+ /** flags for the database. Palm UInt16. Unsignedness should be irrelevant. */
+ short attribute = 0;
+
+ /** application-specific version for the database. Palm UInt16 */
+ int version = 0;
+
+ /** date created. Palm UInt32 */
+ long creationDate = 0;
+
+ /** date last modified. Palm UInt32 */
+ long modificationDate = 0;
+
+ /** date last backup. Palm UInt32 */
+ long lastBackupDate = 0;
+
+ /**
+ * incremented every time a record is
+ * added, deleted or modified. Palm UInt32.
+ */
+ long modificationNumber = 0;
+
+ /** optional field. Palm UInt32. Unsignedness should be irrelevant. */
+ int appInfoID = 0;
+
+ /** optional field. Palm UInt32. Unsignedness should be irrelevant. */
+ int sortInfoID = 0;
+
+ /** database type id. Palm UInt32. Unsignedness should be irrelevant. */
+ int typeID = 0;
+
+ /** database creator id. Palm UInt32. Unsignedness should be irrelevant. */
+ int creatorID = 0;
+
+ /** ??? */
+ int uniqueIDSeed = 0;
+
+ /** see numRecords. 4 bytes. */
+ int nextRecordListID = 0;
+
+ /**
+ * number of records stored in the database header.
+ * If all the record entries cannot fit in the header,
+ * then nextRecordList has the local ID of a
+ * recordList that contains the next set of records.
+ * Palm UInt16.
+ */
+ int numRecords = 0;
+
+ /**
+ * Read in the data for the pdb header. Need to
+ * preserve the unsigned value for some of the fields.
+ *
+ * @param di a DataInput object
+ * @throws IOException if I/O error occurs
+ */
+
+ public void read(DataInput in) throws IOException {
+
+ pdbName = new byte[PalmDB.NAME_LENGTH];
+ in.readFully(pdbName);
+ attribute = in.readShort();
+ version = in.readUnsignedShort();
+ creationDate = ((long) in.readInt()) & 0xffffffffL;
+ modificationDate = ((long) in.readInt()) & 0xffffffffL;
+ lastBackupDate = ((long) in.readInt()) & 0xffffffffL;
+ modificationNumber = ((long) in.readInt()) & 0xffffffffL;
+ appInfoID = in.readInt();
+ sortInfoID = in.readInt();
+ creatorID = in.readInt();
+ typeID = in.readInt();
+ uniqueIDSeed = in.readInt();
+ nextRecordListID = in.readInt();
+ numRecords = in.readUnsignedShort();
+ }
+
+ /**
+ * Write out pdb header data.
+ *
+ * @param out a DataOut object
+ * @throws IOException if I/O error occurs
+ */
+
+ public void write(DataOutput out) throws IOException {
+
+ out.write(pdbName);
+ out.writeShort(attribute);
+ out.writeShort(version);
+ out.writeInt((int) creationDate);
+ out.writeInt((int) modificationDate);
+ out.writeInt((int) lastBackupDate);
+ out.writeInt((int) modificationNumber);
+ out.writeInt(appInfoID);
+ out.writeInt(sortInfoID);
+ out.writeInt(typeID);
+ out.writeInt(creatorID);
+ out.writeInt(uniqueIDSeed);
+ out.writeInt(nextRecordListID);
+ out.writeShort(numRecords);
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBUtil.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBUtil.java
new file mode 100644
index 000000000000..5f18b73e2884
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBUtil.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PDBUtil.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+/**
+ * Contains common static methods and contants for use within the package.
+ *
+ * @author Herbie Ong
+ */
+
+public final class PDBUtil {
+
+ /** difference in seconds from Jan 01, 1904 to Jan 01, 1970 */
+ final static long TIME_DIFF = 2082844800;
+
+ /** encoding scheme used */
+ final static String ENCODING = "8859_1";
+
+ /** size of a pdb header in bytes */
+ final static int HEADER_SIZE = 78;
+
+ /**
+ * This method converts a 4 letter string into the Palm ID integer.
+ *
+ * It is normally used to convert the Palm creator ID string into
+ * the integer version of it. Also use for data types, etc.
+ *
+ * @param s 4 character string.
+ * @return int Palm ID representing the string.
+ * @throws ArrayIndexOutOfBoundsException if string parameter
+ * contains less than 4 characters.
+ */
+
+ public static int intID(String s) {
+
+ int id = -1;
+ int temp = 0;
+
+ // grab the first char and put it in the high bits
+ // note that we only want 8 lower bits of it.
+ temp = (int) s.charAt(0);
+ id = temp << 24;
+
+ // grab the second char and add it in.
+ temp = ((int) s.charAt(1)) & 0x00ff;
+ id += temp << 16;
+
+ // grab the second char and add it in.
+ temp = ((int) s.charAt(2)) & 0x00ff;
+ id += temp << 8;
+
+ // grab the last char and add it in
+ id += ((int) s.charAt(3)) & 0x00ff;
+
+ return id;
+ }
+
+ /**
+ * This method converts an integer into a String given
+ * the Palm ID format.
+ *
+ * @param i Palm id.
+ * @return String string representation.
+ */
+
+ public static String stringID(int i) {
+
+ char ch[] = new char[4];
+ ch[0] = (char) (i >>> 24);
+ ch[1] = (char) ((i >> 16) & 0x00ff);
+ ch[2] = (char) ((i >> 8) & 0x00ff);
+ ch[3] = (char) (i & 0x00ff);
+
+ return new String(ch);
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PalmDB.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PalmDB.java
new file mode 100644
index 000000000000..cc5eab0b2249
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PalmDB.java
@@ -0,0 +1,353 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PalmDB.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+
+import java.io.OutputStream;
+import java.io.InputStream;
+import java.io.DataOutputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * <p>This class contains data for a single Palm database for use during
+ * a conversion process.</p>
+ *
+ * <p>It contains zero or more <code>Record</code> objects stored in an
+ * array. The index of the <code>Record</code> object in the array is
+ * the record id or number for that specific <code>Record</code> object.
+ * Note that this class does not check for maximum number of records
+ * allowable in an actual pdb.</p>
+ *
+ * <p>This class also contains the pdb name associated with the Palm database
+ * it represents. A pdb name consists of 32 bytes of a certain encoding
+ * (extended ASCII in this case).</p>
+ *
+ * <p>The non default constructors take in a name parameter which may not
+ * be the exact pdb name to be used. The name parameter in
+ * <code>String</code> or <code>byte[]</code> are converted to an exact
+ * <code>NAME_LENGTH</code> byte array. If the length of the name is less
+ * than <code>NAME_LENGTH</code>, it is padded with '\0' characters. If it
+ * is more, it gets truncated. The last character in the resulting byte
+ * array is always a '\0' character. The resulting byte array is stored in
+ * <code>bName</code>, and a corresponding String object <code>sName</code>
+ * that contains characters without the '\0' characters.</p>
+ *
+ * <p>The {@link #write write} method is called within the
+ * {@link zensync.util.palm.PalmDBSet#write PalmDBSet.write} method
+ * for writing out its data to the <code>OutputStream</code> object.</p>
+ *
+ * <p>The {@link #read read} method is called within the
+ * {@link zensync.util.palm.PalmDBSet#read PalmDBSet.read} method
+ * for reading in its data from the <code>InputStream</code> object.</p>
+ *
+ * @author Akhil Arora, Herbie Ong
+ * @see PalmDBSet
+ * @see Record
+ */
+
+public final class PalmDB {
+
+ /** number of bytes for the name field in the pdb */
+ public final static int NAME_LENGTH = 32;
+
+ /** list of Record objects */
+ private Record[] records;
+
+ /** pdb name in bytes */
+ private byte[] bName = null;
+
+ /** pdb name in String */
+ private String sName = null;
+
+
+ /**
+ * Default constructor for use after a read().
+ */
+
+ public PalmDB() {
+
+ records = new Record[0];
+ }
+
+ /**
+ * Constructor to create object with Record objects.
+ * recs.length can be zero for an empty pdb.
+ *
+ * @param name suggested pdb name in String
+ * @param recs array of Record objects
+ * @throws NullPointerException if recs is null
+ */
+
+ public PalmDB(String name, Record[] recs)
+ throws UnsupportedEncodingException {
+
+ this(name.getBytes(PDBUtil.ENCODING), recs);
+ }
+
+ /**
+ * Constructor to create object with Record objects.
+ * recs.length can be zero for an empty pdb.
+ *
+ * @param name suggested pdb name in byte array
+ * @param recs array of Record objects
+ * @throws NullPointerException if recs is null
+ */
+
+ public PalmDB(byte[] name, Record[] recs)
+ throws UnsupportedEncodingException {
+
+ store(name);
+
+ records = new Record[recs.length];
+ System.arraycopy(recs, 0, records, 0, recs.length);
+ }
+
+ /**
+ * This private method is mainly used by the constructors above.
+ * to store bytes into name and also create a String representation.
+ * and also by the read method.
+ *
+ * TODO: Note that this method assumes that the byte array parameter
+ * contains one character per byte, else it would truncate
+ * improperly.
+ *
+ * @param bytes pdb name in byte array
+ * @throws UnsupportedEncodingException if ENCODING is not supported
+ */
+
+ private void store(byte[] bytes) throws UnsupportedEncodingException {
+
+ // note that this will initialize all bytes in name to 0.
+ bName = new byte[NAME_LENGTH];
+
+ // determine minimum length to copy over from bytes to bName.
+ // Note that the last byte in bName has to be '\0'.
+
+ int lastIndex = NAME_LENGTH - 1;
+
+ int len = (bytes.length < lastIndex)? bytes.length: lastIndex;
+
+ int i;
+
+ for (i = 0; i < len; i++) {
+
+ if (bytes[i] == 0) {
+ break;
+ }
+
+ bName[i] = bytes[i];
+ }
+
+ // set sName, no need to include the '\0' character.
+ sName = new String(bName, 0, i, PDBUtil.ENCODING);
+ }
+
+ /**
+ * Return the number of records contained in this
+ * pdb PalmDB object.
+ *
+ * @return int number of Record objects
+ */
+
+ public int getRecordCount() {
+
+ return records.length;
+ }
+
+ /**
+ * Return the specific Record object associated
+ * with the record number.
+ *
+ * @param index record index number
+ * @return Record the Record object in the specified index
+ * @throws ArrayIndexOutOfBoundsException if index is out of bounds
+ */
+
+ public Record getRecord(int index) {
+
+ return records[index];
+ }
+
+ /**
+ * Return the list of Record objects
+ *
+ * @return Record[] the list of Record objects
+ */
+
+ public Record[] getRecords() {
+
+ return records;
+ }
+
+ /**
+ * Return the PDBName associated with this object in String
+ *
+ * @return String pdb name in String
+ */
+
+ public String getPDBNameString() {
+
+ return sName;
+ }
+
+ /**
+ * Return the PDBName associated with this object
+ * in byte array of exact length of 32 bytes.
+ *
+ * @return byte[] pdb name in byte[] of length 32.
+ */
+
+ public byte[] getPDBNameBytes() {
+
+ return bName;
+ }
+
+ /**
+ * Write out the number of records followed by what
+ * will be written out by each Record object.
+ *
+ * @param os the stream to write the object to
+ * @throws IOException if any I/O error occurs
+ */
+
+ public void write(OutputStream os) throws IOException {
+
+ DataOutputStream out = new DataOutputStream(os);
+
+ // write out pdb name
+ out.write(bName);
+
+ // write out 2 bytes for number of records
+ out.writeShort(records.length);
+
+ // let each Record object write out its own info.
+ for (int i = 0; i < records.length; i++)
+ records[i].write(out);
+ }
+
+ /**
+ * Read the necessary data to create a pdb from
+ * the input stream.
+ *
+ * @param is the stream to read data from in order
+ * to restore the object
+ * @throws IOException if any I/O error occurs
+ */
+
+ public void read(InputStream is) throws IOException {
+
+ DataInputStream in = new DataInputStream(is);
+
+ // read in the pdb name.
+ byte[] bytes = new byte[NAME_LENGTH];
+ in.readFully(bytes);
+ store(bytes);
+
+ // read in number of records
+ int nrec = in.readUnsignedShort();
+ records = new Record[nrec];
+
+ // read in the Record infos
+ for (int i = 0; i < nrec; i++) {
+
+ records[i] = new Record();
+ records[i].read(in);
+ }
+ }
+
+ /**
+ * Override equals method of Object.
+ *
+ * 2 PalmDB objects are equal if they contain the same information,
+ * i.e. pdb name and records.
+ *
+ * This is used primarily for testing purposes only for now.
+ *
+ * @param obj a PalmDB object to compare with
+ * @return boolean true if obj is equal to this, else false.
+ */
+
+ public boolean equals(Object obj) {
+
+ boolean bool = false;
+
+ if (obj instanceof PalmDB) {
+
+ PalmDB pdb = (PalmDB) obj;
+
+ checkLabel: {
+
+ // compare sName
+
+ if (!sName.equals(pdb.sName)) {
+
+ break checkLabel;
+ }
+
+ // compare bName
+
+ if (bName.length != pdb.bName.length) {
+
+ break checkLabel;
+ }
+
+ for (int i = 0; i < bName.length; i++) {
+
+ if (bName[i] != pdb.bName[i]) {
+
+ break checkLabel;
+ }
+ }
+
+ // compare each Record
+
+ if (records.length != pdb.records.length) {
+
+ break checkLabel;
+ }
+
+ for (int i = 0; i < records.length; i++) {
+
+ if (!records[i].equals(pdb.records[i])) {
+
+ break checkLabel;
+ }
+ }
+
+ // all checks done
+ bool = true;
+ }
+ }
+
+ return bool;
+ }
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/README b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/README
new file mode 100644
index 000000000000..ad08e7592d0d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/README
@@ -0,0 +1,10 @@
+Building the Comparator code
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+To build the comparator code, the following is required in your classpath.
+
+ xerces.jar
+ xmerge.jar
+
+To Build type
+
+ javac *.java
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/Record.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/Record.java
new file mode 100644
index 000000000000..da36105d3eb9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/Record.java
@@ -0,0 +1,170 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: Record.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+
+import java.io.OutputStream;
+import java.io.InputStream;
+import java.io.DataOutputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+/**
+ * <p>Contains the raw bytes for a record in a pdb.</p>
+ *
+ * <p>Note that it is not associated with a record number or id.</p>
+ *
+ * @author Akhil Arora, Herbie Ong
+ * @see PalmDB
+ */
+
+
+public final class Record {
+
+ /** record bytes */
+ private byte[] data;
+
+ /**
+ * Default constructor.
+ */
+
+ public Record() {
+
+ data = new byte[0];
+ }
+
+ /**
+ * Constructor to create a Record filled with bytes.
+ * Note that this does not check for 64k record sizes.
+ * User of this class has to check for that.
+ *
+ * @param d byte array contents for this object.
+ */
+
+ public Record(byte[] d) {
+
+ data = new byte[d.length];
+ System.arraycopy(d, 0, data, 0, d.length);
+ }
+
+ /**
+ * This method returns the number of bytes in this object.
+ *
+ * @return int number of bytes in this object.
+ */
+
+ public int getSize() {
+
+ return data.length;
+ }
+
+ /**
+ * This method returns the contents of this object.
+ *
+ * @return byte[] contents in byte array
+ */
+
+ public byte[] getBytes() {
+
+ return data;
+ }
+
+ /**
+ * Write out the record length followed by the data
+ * in this Record object.
+ *
+ * @param out the stream to write the object to
+ * @throws IOException if any I/O error occurs
+ */
+
+
+ public void write(OutputStream outs) throws IOException {
+
+ DataOutputStream out = new DataOutputStream(outs);
+ out.writeShort(data.length);
+ out.write(data);
+ }
+
+ /**
+ * Read the necessary data to create a pdb from
+ * the input stream.
+ *
+ * @param in the stream to read data from in order to
+ * restore the object
+ * @throws IOException if any I/O error occurs
+ */
+
+ public void read(InputStream ins) throws IOException {
+
+ DataInputStream in = new DataInputStream(ins);
+ int len = in.readUnsignedShort();
+ data = new byte[len];
+ in.readFully(data);
+ }
+
+ /**
+ * Override equals method of Object.
+ *
+ * 2 Record objects are equal if they contain the same bytes
+ * in the array.
+ *
+ * This is used primarily for testing purposes only for now.
+ *
+ * @param obj a Record object to compare with
+ * @return boolean true if obj is equal to this, else false.
+ */
+
+ public boolean equals(Object obj) {
+
+ boolean bool = false;
+
+ if (obj instanceof Record) {
+
+ Record rec = (Record) obj;
+
+ checkLabel: {
+
+ if (rec.getSize() == data.length) {
+
+ for (int i = 0; i < data.length; i++) {
+
+ if (data[i] != rec.data[i]) {
+ break checkLabel;
+ }
+ }
+
+ bool = true;
+ }
+ }
+ }
+
+ return bool;
+ }
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/SimplePdbCompare.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/SimplePdbCompare.java
new file mode 100644
index 000000000000..b15593757f5d
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/SimplePdbCompare.java
@@ -0,0 +1,97 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: SimplePdbCompare.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+/*
+ * SimplePdbCompare.java
+ *
+ * Created on September 21, 2001, 10:23 AM
+ */
+
+/**
+ *
+ * @author mh101528
+ * @version
+ */
+public final class SimplePdbCompare {
+
+ /** Creates new SimplePdbCompare */
+ public SimplePdbCompare() {
+ }
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main (String args[])
+ {
+ SimplePdbCompare comparator = new SimplePdbCompare();
+ if (comparator.comparePDB(args[0], args[1]))
+ System.exit(2);
+ else
+ System.exit(3);
+ }
+
+ public boolean comparePDB(String pdbname1, String pdbname2)
+ {
+ PalmDB pdb1=null, pdb2=null;
+ PDBDecoder decoder = new PDBDecoder();
+ try
+ {
+ pdb1 = decoder.parse(pdbname1);
+ }
+ catch (Exception e)
+ {
+ System.out.println("Could not parse PDB " + pdbname1);
+ return false;
+ }
+
+ try
+ {
+ pdb2 = decoder.parse(pdbname2);
+ }
+ catch (Exception e)
+ {
+ System.out.println("Could not parse PDB " + pdbname2);
+ return false;
+ }
+
+ if (pdb1.equals(pdb2))
+ {
+ //writeToLog("PDB " + pdbname1 + " and PDB " + pdbname2 + " are equal");
+ System.out.println("PDB " + pdbname1 + " and PDB " + pdbname2 + " are equal");
+ return true;
+ }
+ else
+ {
+ //writeToLog("PDB " + pdbname1 + " and PDB " + pdbname2 + " are not equal");
+ System.out.println("PDB " + pdbname1 + " and PDB " + pdbname2 + " are not equal");
+ return false;
+ }
+ }
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.java
new file mode 100644
index 000000000000..b02812ebb24b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.java
@@ -0,0 +1,468 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: XmlDiff.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+import java.io.FileWriter;
+import java.io.InputStream;
+import java.io.FileInputStream;
+import java.io.BufferedInputStream;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.io.PrintWriter;
+import java.util.Vector;
+import java.util.Properties;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+/**
+ * This class will diff 2 Xml files.
+ *
+ * @author Stephen Mak
+ */
+
+public final class XmlDiff {
+
+ private static final String PROPSFILE = "XmlDiff.properties";
+ private static final String FILE1 = "XmlDiff.file1";
+ private static final String FILE2 = "XmlDiff.file2";
+ private static final String OUTPUT= "XmlDiff.output";
+ private static final String IGNORE_TAGS= "XmlDiff.tags";
+
+ private Properties props_ = null;
+ private static PrintWriter writer_ = null;
+ private String[] tags_ = null;
+ private String file1_ = null;
+ private String file2_ = null;
+
+ /**
+ * Constructor. Load the properties file.
+ */
+
+ public XmlDiff() throws IOException {
+
+ Class c = this.getClass();
+ InputStream is = c.getResourceAsStream(PROPSFILE);
+ BufferedInputStream bis = new BufferedInputStream(is);
+ props_ = new Properties();
+ props_.load(bis);
+ bis.close();
+
+ String file1 = props_.getProperty(FILE1, "");
+ String file2 = props_.getProperty(FILE2, "");
+ String tagsString = props_.getProperty(IGNORE_TAGS, "");
+ String output = props_.getProperty("debug.output", "System.out");
+ setOutput(output);
+ tags_ = parseTags(tagsString);
+ }
+
+ /**
+ * diff 2 xml, but overwrite the property file's file1/2 setting with
+ * the input argument
+ */
+ public boolean diff(String file1, String file2) throws IOException {
+ file1_ = file1;
+ file2_ = file2;
+ return diff();
+ }
+
+ public boolean diff() throws IOException {
+
+ boolean result = false;
+
+ writer_.println("parsing "+ file1_ + "...");
+ // parse the Xml file
+ Document doc1 = parseXml(file1_);
+
+ writer_.println("parsing "+ file1_ + "...");
+ Document doc2 = parseXml(file2_);
+
+ if (doc1 != null && doc2 != null) {
+ writer_.println("diffing "+ file1_ + " & " + file2_ + "...");
+ result = compareNode(doc1, doc2);
+ }
+ return result;
+ }
+
+ private void diffLog(String errMsg, Node node1, Node node2) {
+
+ String node1Str = "";
+ String node2Str = "";
+
+ if (node1 != null) {
+ node1Str = "[Type]:" + nodeInfo(node1) +
+ " [Name]:" + node1.getNodeName();
+ if (node1.getNodeValue() != null)
+ node1Str += " [Value]:" + node1.getNodeValue();
+ }
+
+ if (node2 != null) {
+ node2Str = "[Type]:" + nodeInfo(node2) +
+ " [Name]:" + node2.getNodeName();
+ if (node2.getNodeValue() != null)
+ node2Str += " [Value]:" + node2.getNodeValue();
+ }
+
+ writer_.println(errMsg);
+ writer_.println(" Node1 - " + node1Str);
+ writer_.println(" Node2 - " + node2Str);
+ }
+
+ private String nodeInfo(Node node) {
+
+ String str = null;
+ switch (node.getNodeType()) {
+
+ case Node.ELEMENT_NODE:
+ str = "ELEMENT";
+ break;
+ case Node.ATTRIBUTE_NODE:
+ str = "ATTRIBUTE";
+ break;
+ case Node.TEXT_NODE:
+ str = "TEXT";
+ break;
+ case Node.CDATA_SECTION_NODE:
+ str = "CDATA_SECTION";
+ break;
+ case Node.ENTITY_REFERENCE_NODE:
+ str = "ENTITY_REFERENCE";
+ break;
+ case Node.ENTITY_NODE:
+ str = "ENTITY";
+ break;
+ case Node.PROCESSING_INSTRUCTION_NODE:
+ str = "PROCESSING_INSTRUCTION";
+ break;
+ case Node.COMMENT_NODE:
+ str = "COMMENT";
+ break;
+ case Node.DOCUMENT_NODE:
+ str = "DOCUMENT";
+ break;
+ case Node.DOCUMENT_TYPE_NODE:
+ str = "DOCUMENT_TYPE";
+ break;
+ case Node.DOCUMENT_FRAGMENT_NODE:
+ str = "DOCUMENT_FRAGMENT";
+ break;
+ case Node.NOTATION_NODE:
+ str = "NOTATION";
+ break;
+ }
+ return str;
+ }
+
+ private boolean ignoreTag(String nodeName) {
+
+
+ if (tags_ != null) {
+ for (int i = 0; i < tags_.length; i++) {
+ if (tags_[i].equals(nodeName))
+ return true;
+ }
+ }
+ return false;
+ }
+
+ // for future use if we want to compare attributes
+ private boolean attributesEqual(Node node1, Node node2) {
+ return true;
+ }
+
+ private boolean compareNode(Node node1, Node node2) {
+ boolean equal = false;
+
+ while (true) {
+
+ if (node1 == null && node2 == null) {
+ equal = true;
+ break;
+ } else if (node1 == null || node2 == null) {
+ diffLog("DIFF: one of the node is null", node1, node2);
+ break;
+ }
+
+ if (node1.getNodeType() != node2.getNodeType()) {
+ diffLog("DIFF: nodetype is different", node1, node2);
+ break;
+ }
+
+ if (node1.getNodeName() == null && node2.getNodeName() == null) {
+ // empty
+ } else if (node1.getNodeName() == null ||
+ node2.getNodeName() == null) {
+ diffLog("DIFF: one of the nodeName is null", node1, node2);
+ break;
+ } else if (!node1.getNodeName().equals(node2.getNodeName())) {
+ diffLog("DIFF: nodeName is different", node1, node2);
+ break;
+ }
+
+ if (ignoreTag(node1.getNodeName())) {
+ diffLog("DIFF: Some tag(s) is ignored", node1, node2);
+ equal = true;
+ break;
+ }
+
+ if (node1.getNodeValue() == null && node2.getNodeValue() == null) {
+ // empty
+ } else if (node1.getNodeValue() == null ||
+ node2.getNodeValue() == null) {
+ diffLog("DIFF: one of the nodevalue is null", node1, node2);
+ break;
+ } else if (!node1.getNodeValue().equals(node2.getNodeValue())) {
+ diffLog("DIFF: nodeValue is different", node1, node2);
+ break;
+ }
+
+ // try to compare attributes if necessary
+ if (!attributesEqual(node1, node2))
+ break;
+
+ NodeList node1Children = node1.getChildNodes();
+ NodeList node2Children = node2.getChildNodes();
+
+ // number of children have to be the same
+ if (node1Children == null && node2Children == null) {
+ equal = true;
+ break;
+ }
+
+ if (node1Children == null || node2Children == null) {
+ diffLog("DIFF: one node's children is null", node1, node2);
+ break;
+ }
+
+ if (node1Children.getLength() != node2Children.getLength()) {
+ diffLog("DIFF: num of children is different", node1, node2);
+ break;
+ }
+
+ // compare all the childrens
+ equal = true;
+
+ for (int i = 0; i < node1Children.getLength(); i++) {
+ if (!compareNode(node1Children.item(i),
+ node2Children.item(i))) {
+ equal = false;
+ break;
+ }
+ }
+ break;
+ }
+
+ return equal;
+ }
+
+ private Document parseXml (String filename) throws IOException {
+
+ Document w3cDocument = null;
+
+ FileInputStream fis;
+
+ try {
+ fis = new FileInputStream(filename);
+ } catch (FileNotFoundException ex) {
+ ex.printStackTrace(writer_);
+ writer_.println(ex.getMessage());
+ return w3cDocument;
+ }
+
+ /** factory for DocumentBuilder objects */
+ DocumentBuilderFactory factory = null;
+ factory = DocumentBuilderFactory.newInstance();
+ factory.setNamespaceAware(true);
+ factory.setValidating(false);
+
+ /** DocumentBuilder object */
+ DocumentBuilder builder = null;
+
+ try {
+ builder = factory.newDocumentBuilder();
+ } catch (ParserConfigurationException ex) {
+ ex.printStackTrace(writer_);
+ writer_.println(ex.getMessage());
+ return null;
+ }
+
+
+ builder.setErrorHandler(
+ new org.xml.sax.ErrorHandler() {
+ // ignore fatal errors (an exception is guaranteed)
+ public void fatalError(SAXParseException e)
+ throws SAXException {
+ throw e;
+ }
+
+ public void error(SAXParseException e)
+ throws SAXParseException {
+ // make sure validation error is thrown.
+ throw e;
+ }
+
+ public void warning(SAXParseException e)
+ throws SAXParseException {
+ }
+ }
+ );
+
+ try {
+ w3cDocument = builder.parse(fis);
+ w3cDocument.getDocumentElement().normalize();
+ } catch (SAXException ex) {
+ ex.printStackTrace(writer_);
+ writer_.println(ex.getMessage());
+ return w3cDocument;
+ }
+
+ return w3cDocument;
+ }
+
+ private String [] parseTags(String tagsString) {
+ Vector tagsVector = new Vector();
+ if (tagsString.length() == 0)
+ return null;
+
+ int start = 0;
+ int end = 0;
+ // break the tag string into a vector of strings by words
+ for (end = tagsString.indexOf(" ", start);
+ end != -1 ;
+ start = end + 1, end = tagsString.indexOf(" ", start)) {
+ tagsVector.add(tagsString.substring(start,end));
+ }
+
+ tagsVector.add(tagsString.substring(start,tagsString.length()));
+
+ // convert the vector to array
+ String[] tags= new String[tagsVector.size()];
+ tagsVector.copyInto(tags);
+
+ return tags;
+ }
+
+
+ /**
+ * Set the output to the specified argument.
+ * This method is only used internally to prevent
+ * invalid string parameter.
+ *
+ * @param str output specifier
+ */
+ private static void setOutput(String str) {
+
+ if (writer_ == null) {
+
+ if (str.equals("System.out")) {
+
+ setOutput(System.out);
+
+ } else if (str.equals("System.err")) {
+
+ setOutput(System.err);
+
+ } else {
+
+ try {
+
+ setOutput(new FileWriter(str));
+
+ } catch (IOException e) {
+
+ e.printStackTrace(System.err);
+ }
+ }
+ }
+ }
+
+ /**
+ * Set the output to an OutputStream object.
+ *
+ * @param stream OutputStream object
+ */
+
+ private static void setOutput(OutputStream stream) {
+
+ setOutput(new OutputStreamWriter(stream));
+ }
+
+ /**
+ * Set the Writer object to manage the output.
+ *
+ * @param w Writer object to write out
+ */
+
+ private static void setOutput(Writer w) {
+
+ if (writer_ != null) {
+
+ writer_.close();
+ }
+
+ writer_ = new PrintWriter(new BufferedWriter(w), true);
+ }
+
+ public static void main(String args[]) throws IOException {
+
+ if (args.length != 0 && args.length != 2) {
+ System.out.println("Usage: XmlDiff [<file1> <file2>].");
+ return;
+ }
+
+ XmlDiff xmldiff = new XmlDiff();
+
+ boolean same = false;
+ if (args.length == 2) {
+ same = xmldiff.diff(args[0], args[1]);
+ } else {
+ same = xmldiff.diff();
+ }
+
+ System.out.println("Diff result: " + same);
+ if (same)
+ {
+ System.out.println("XMLDIFFRESULT:PASSED");
+ } else {
+ System.out.println("XMLDIFFRESULT:FAILED");
+ }
+ }
+}
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.properties b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.properties
new file mode 100644
index 000000000000..513add086214
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.properties
@@ -0,0 +1,13 @@
+#
+# $Id: XmlDiff.properties,v 1.1 2002-04-16 13:53:20 aidan Exp $
+#
+# This properties file provides info for XmlDiff program
+# XmlDiff.file1 is the first input XML file
+# XmlDiff.file2 is the second input XML file
+# XmlDiff.output is where the output (err/message) go
+# XmlDiff.tags are what tagname should ignore (and the subtree under it)
+#
+XmlDiff.file1=test1.xml
+XmlDiff.file2=test2.xml
+XmlDiff.output=System.err
+XmlDiff.tags=
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlWrapper.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlWrapper.java
new file mode 100644
index 000000000000..19a69602ee29
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlWrapper.java
@@ -0,0 +1,156 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: XmlWrapper.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+import java.io.IOException;
+import java.io.File;
+import java.util.zip.*;
+
+public class XmlWrapper
+{
+ public static void main(String args[]) throws IOException
+ {
+ System.out.println("args.length is " + args.length);
+ if (args.length < 2) {
+ System.out.println("Usage: java XmlWrapper [<zipfile1> <zipfile2>].");
+ //return;
+ System.exit(-1);
+
+ }
+
+ XmlWrapper w = new XmlWrapper();
+ File currdirfp = null;
+ try {
+ currdirfp = new File(".");
+ } catch (Exception fx) {
+ System.out.println("Could not get File instance for current directory \n");
+ //return;
+ System.exit(-1);
+ }
+
+ File f1 = null;
+ File f2 = null;
+ String fname1,fname2;
+ try {
+ f1 = File.createTempFile("xmlcomp", ".tmp", currdirfp);
+ f2 = File.createTempFile("xmlcomp", ".tmp", currdirfp);
+ } catch (Exception tx) {
+ System.out.println("Could not create TempFile ");
+ System.out.println("Exception: " + tx.toString());
+ //return;
+ System.exit(-1);
+ }
+
+ fname1 = f1.getAbsolutePath();
+ fname2 = f2.getAbsolutePath();
+
+ // get content.xml file from zip file and copy it to temporary
+ // filename
+ XmlZipExtract xw1 = new XmlZipExtract(args[0]);
+ try {
+ xw1.getContentXml(fname1);
+ } catch (ZipException e) {
+ System.out.println("Exception: file is not a ZIP file: " + args[0]);
+ f1.delete();
+ f2.delete();
+ //return;
+ System.exit(-1);
+ } catch (Exception e) {
+ System.out.println("Exception: Could not extract XML from " + args[0]);
+ System.out.println("Exception: " + e.toString());
+ f1.delete();
+ f2.delete();
+ //return;
+ System.exit(-1);
+ }
+
+ // get content.xml file from zip file and copy it to temporary
+ // filename
+ XmlZipExtract xw2 = new XmlZipExtract(args[1]);
+ try {
+ xw2.getContentXml(fname2);
+ } catch (ZipException e) {
+ System.out.println("Exception: file is not a ZIP file: " + args[0]);
+ f1.delete();
+ f2.delete();
+ //return;
+ System.exit(-1);
+ } catch (Exception ex) {
+ System.out.println(ex.getMessage());
+ System.out.println("Exception: Could not extract XML from " + args[1]);
+ System.out.println("Exception: " + ex.toString());
+ f1.delete();
+ f2.delete();
+ //return;
+ System.exit(-1);
+ }
+
+ boolean same = false;
+
+ try
+ {
+ XmlDiff xmldiff = new XmlDiff();
+
+ if (args.length == 2) {
+ same = xmldiff.diff(fname1, fname2);
+ } else {
+ same = xmldiff.diff();
+ }
+ }
+ catch (Exception ex)
+ {
+ System.out.println("XmlDiff failed");
+ System.out.println("Exception: " + ex.toString());
+ f1.delete();
+ f2.delete();
+ //return;
+ System.exit(-1);
+ }
+
+ System.out.println("Diff result: " + same);
+ if (same)
+ {
+ System.out.println("XMLDIFFRESULT:PASSED");
+ } else {
+ System.out.println("XMLDIFFRESULT:FAILED");
+ }
+
+ f1.delete();
+ f2.delete();
+
+ if (same)
+ {
+ System.exit(2);
+ }
+ else
+ {
+ System.exit(3);
+ }
+ }
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlZipExtract.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlZipExtract.java
new file mode 100644
index 000000000000..fb1b25eaee4a
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlZipExtract.java
@@ -0,0 +1,149 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: XmlZipExtract.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.FileInputStream;
+import java.io.RandomAccessFile;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.Enumeration;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipEntry;
+
+public class XmlZipExtract
+{
+
+ public static final String CONTENT = "Content.xml";
+ public static final String OLDCONTENT = "content.xml";
+ private static final int BUFFER_SIZE = 2048;
+
+
+ /**
+ * Full path of the Zip file to process.
+ */
+ private String filename = null;
+
+
+ /**
+ * Constructor
+ *
+ * @param filename Full Path to Zip file to process
+ *
+ */
+ public XmlZipExtract(String filename) {
+ this.filename = filename;
+ }
+
+ /**
+ * Copies Content.xml from zip file onto the filename passed as
+ * an argument
+ *
+ * @param fname Full Path to file to which contents have to be copied
+ *
+ */
+ public void getContentXml(String fname) throws IOException
+ {
+ try
+ {
+ getContentXmlInt(fname, XmlZipExtract.CONTENT);
+ }
+ catch (NullPointerException e1)
+ {
+ // If the new name of the content file failed, try
+ // the older name.
+ //
+ System.out.println(filename + " Content.xml does not exist, trying content.xml...");
+ try
+ {
+ getContentXmlInt(fname, XmlZipExtract.OLDCONTENT);
+ }
+ catch (NullPointerException e2)
+ {
+ System.out.println(filename + " content.xml does not exist, trying content.xml...");
+ throw e2;
+ }
+ }
+ }
+
+ public void getContentXmlInt(String fname, String cname) throws IOException
+ {
+ byte b[] = getEntry(cname);
+
+ RandomAccessFile raf=null;
+ raf = new RandomAccessFile(fname, "rw");
+ raf.write(b);
+ raf.close();
+ }
+
+ /**
+ * Get the specified entry in the zip file as a stream.
+ *
+ * @param entryName The name of the entry in the zipfile to get.
+ * This should be one of the constants defined above.
+ *
+ * @return byte[] bits for entryName
+ *
+ * @throws IOException if something goes wrong
+ */
+ public byte[] getEntry(String entryName) throws IOException
+ {
+ ZipFile zf = new ZipFile(filename);
+ ZipEntry ze = zf.getEntry(entryName);
+ byte[] bits = readStream(zf.getInputStream(ze));
+ zf.close();
+ return bits;
+ }
+
+
+ /**
+ * Read an InputStream into an array of bytes.
+ *
+ * @param is InputStream of data from Zip file
+ *
+ * @return an array of Bytes
+ */
+ private byte[] readStream(InputStream is) throws IOException
+ {
+ BufferedInputStream bis = new BufferedInputStream(is);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] buffer = new byte[BUFFER_SIZE];
+ int eof = 0;
+ while ((eof = bis.read(buffer, 0, buffer.length)) > 0) {
+ baos.write(buffer, 0, eof);
+ }
+
+ return baos.toByteArray();
+ }
+}
+
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/comparator.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/comparator.pl
new file mode 100755
index 000000000000..9a5bf484947e
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/comparator.pl
@@ -0,0 +1,249 @@
+#!/usr/bin/perl
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: comparator.pl,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+$compare_home = "$ENV{QA_COMPARATOR_HOME}";
+
+if ($ENV{'CLASSPATH'})
+{
+ $classpath_val = "$compare_home:$ENV{'CLASSPATH'}";
+}
+else
+{
+ $classpath_val = "$compare_home";
+}
+
+print "classpath is $classpath_val\n";
+
+$list_file="";
+$orig_dir="";
+$new_dir="";
+$diff_type="";
+
+####### BEGIN MAIN ##############
+$cmdline_len = @ARGV;
+if ($cmdline_len <= 0)
+{
+ print_usage();
+ exit (0);
+}
+
+process_cmdline(@ARGV);
+print_env();
+open (LOGFILE, ">$logfile") || die "Cannot open log file $logfile";
+if ($test_list ne "")
+{
+ open (TESTLIST, $test_list) || die "Couldn't open diff list file $test_list";
+
+ while (<TESTLIST>)
+ {
+ chomp $_;
+ process_diff(get_file_title($_));
+ }
+}
+close TESTLIST;
+close LOGFILE;
+
+####### END MAIN ##############
+
+sub process_diff
+{
+ $_[0] =~ tr/A-Z/a-z/;
+
+ # chdir to the output directory so the temporary files created by
+ # the java programs are put in the right place.
+ #
+ chdir ($xml_new);
+
+ if ($diff_type eq "xml")
+ {
+ # Ugly hack, probably a way to tell xerces directly that the dtd's
+ # are in $compare_home/dtd.
+ #
+ `cp $compare_home/dtd/* $xml_new`;
+
+ $cmd = "java -classpath $classpath_val XmlWrapper $xml_orig/$_[0].sxw $xml_new/$_[0].sxw";
+ $val = system($cmd)/256;
+ if ($val == 2)
+ {
+ print LOGFILE "$_[0]|TRUE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n";
+ }
+ elsif($val == 3)
+ {
+ print LOGFILE "$_[0]|FALSE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n";
+ }
+ else
+ {
+ print LOGFILE "$_[0]|ERROR|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n";
+ }
+ }
+ elsif ($diff_type eq "pdb")
+ {
+ $cmd = "java -classpath $classpath_val SimplePdbCompare $pdb_orig/$_[0].pdb $pdb_new/$_[0].pdb\n";
+ print "Executing: $cmd\n";
+ $val = system($cmd)/256;
+ if ($val == 2)
+ {
+ print LOGFILE "$_[0]|TRUE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n";
+ }
+ elsif($val == 3)
+ {
+ print LOGFILE "$_[0]|FALSE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n";
+ }
+ else
+ {
+ print LOGFILE "$_[0]|ERROR|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n";
+ }
+ }
+ else
+ {
+ die "Don't understand test type of $diff_type.";
+ }
+}
+
+sub process_cmdline
+{
+ foreach $i (@_)
+ {
+ @arg= split('=', $i);
+ @arg[0] =~ tr/A-Z/a-z/;
+
+ if (@arg[0] eq "-pdb-orig")
+ {
+ $pdb_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "-pdb-new")
+ {
+ $pdb_new=$arg[1];
+ }
+ elsif (@arg[0] eq "-xml-orig")
+ {
+ $xml_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "-xml-new")
+ {
+ $xml_new=$arg[1];
+ }
+ elsif (@arg[0] eq "-env")
+ {
+ set_env_from_props($arg[1]);
+ }
+ elsif (@arg[0] eq "-list")
+ {
+ $test_list = $arg[1];
+ }
+ elsif (@arg[0] eq "-one")
+ {
+ $infile = $arg[1];
+ }
+ elsif (@arg[0] eq "-type")
+ {
+ $diff_type = $arg[1];
+ chomp $diff_type;
+ }
+ elsif (@arg[0] eq "-log")
+ {
+ $logfile = $arg[1];
+ }
+ else
+ {
+ print_usage();
+ die "Incorrect command line. Don't understand $i";
+ }
+ }
+}
+
+sub set_env_from_props
+{
+ open(PROPSFILE, $_[0]) || die "Could not open properties file";
+
+ while (<PROPSFILE>)
+ {
+ chomp $_;
+ @arg = split('=', $_);
+ @arg[0] =~ tr/a-z/A-Z/;
+ $len = @arg;
+ if ($len != 2)
+ {
+ die "Malformed property in $ARGV[0]";
+ }
+
+ if (@arg[0] eq "PDB_ORIG")
+ {
+ $pdb_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "PDB_NEW")
+ {
+ $pdb_new=$arg[1];
+ }
+ elsif (@arg[0] eq "XML_ORIG")
+ {
+ $xml_orig=$arg[1];
+ }
+ elsif (@arg[0] eq "XML_NEW")
+ {
+ $xml_new=$arg[1];
+ }
+
+ }
+ close PROPSFILE;
+}
+
+sub print_usage
+{
+ print "Usage : compartor.pl - compare Office or pdb files\n";
+ print "\t-one=<file> :\t\t individual test case file to run\n";
+ print "\t-list=<file> :\t\t list of test case files\n";
+ print "\t-env=<file> :\t\t Properites like file defining env\n";
+ print "\t-pdb-orig=<path> :\t directory to hold original pdb files\n";
+ print "\t-pdb-new=<path> :\t directory to hold new pdb files\n";
+ print "\t-xml-orig=<path> :\t directory to hold original office documents\n";
+ print "\t-xml-new=<path> :\t directory to hold new office documents\n";
+ print "\t-type=<xml|pdb> :\t Invokes the merge option when converting\n";
+ print "\t-log=<logfile> :\t Save results to logfile.\n";
+}
+
+sub print_env
+{
+ print "Using the following environment:\n";
+ print "\tPDB_ORIG = $pdb_orig\n";
+ print "\tPDB_NEW = $pdb_new\n";
+ print "\tXML_ORIG = $xml_orig\n";
+ print "\tXML_NEW = $xml_new\n\n";
+}
+
+sub get_file_title
+{
+ @paths = split('\/', $_[0]);
+ $len = @paths;
+ @names = split('\.', @paths[$len-1]);
+ return $names[0];
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/Blocklist.dtd b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/Blocklist.dtd
new file mode 100644
index 000000000000..c1d585a7b0a9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/Blocklist.dtd
@@ -0,0 +1,38 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: Blocklist.dtd,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+<!ELEMENT block-list:block-list (block-list:block*) >
+<!ATTLIST block-list:block-list
+ block-list:list-name CDATA #REQUIRED>
+<!ELEMENT block-list:block EMPTY>
+<!ATTLIST block-list:block
+ block-list:abbreviated-name CDATA #REQUIRED
+ block-list:package-name CDATA #REQUIRED
+ block-list:name CDATA #REQUIRED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/chart.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/chart.mod
new file mode 100644
index 000000000000..dec81f10aac6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/chart.mod
@@ -0,0 +1,232 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: chart.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+
+<!ENTITY % chart-class "(line|area|circle|ring|scatter|radar|bar|stock|add-in)">
+<!ENTITY % chart-solid-type "(cuboid|cylinder|cone|pyramid)">
+
+<!-- Chart element -->
+<!ELEMENT chart:chart ( chart:title?, chart:subtitle?, chart:legend?,
+ chart:plot-area,
+ table:table? )>
+<!ATTLIST chart:chart
+ chart:class %chart-class; #REQUIRED
+ chart:add-in-name %string; #IMPLIED
+ chart:table-number-list %string; #IMPLIED
+ draw:name %string; #IMPLIED
+ %draw-position;
+ %draw-size;
+ %draw-style-name;
+ chart:style-name %styleName; #IMPLIED>
+
+<!ATTLIST chart:chart %presentation-class; >
+<!ATTLIST chart:chart %zindex;>
+<!ATTLIST chart:chart %draw-end-position; >
+<!ATTLIST chart:chart draw:id %draw-shape-id; >
+<!ATTLIST chart:chart draw:layer %layerName; #IMPLIED>
+
+<!ATTLIST style:properties
+ chart:scale-text %boolean; "true"
+ chart:stock-updown-bars %boolean; "false"
+ chart:stock-with-volume %boolean; "false"
+ chart:three-dimensional %boolean; "false"
+ chart:deep %boolean; "false"
+ chart:lines %boolean; "false"
+ chart:percentage %boolean; "false"
+ chart:solid-type %chart-solid-type; "cuboid"
+ chart:splines %nonNegativeInteger; "0"
+ chart:stacked %boolean; "false"
+ chart:symbol %integer; "-1"
+ chart:vertical %boolean; "false"
+ chart:lines-used %nonNegativeInteger; "0"
+ chart:connect-bars %boolean; "false">
+
+<!-- Main/Sub Title -->
+<!-- the cell-address attribute is currently not supported for titles -->
+<!ELEMENT chart:title (text:p)?>
+<!ATTLIST chart:title
+ table:cell-range %cell-address; #IMPLIED
+ svg:x %coordinate; #IMPLIED
+ svg:y %coordinate; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!ELEMENT chart:subtitle (text:p)?>
+<!ATTLIST chart:subtitle
+ table:cell-range %cell-address; #IMPLIED
+ svg:x %coordinate; #IMPLIED
+ svg:y %coordinate; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!-- you must specify either a legend-position or both, x and y coordinates -->
+<!ELEMENT chart:legend EMPTY>
+<!ATTLIST chart:legend
+ chart:legend-position (top|left|bottom|right) "right"
+ svg:x %coordinate; #IMPLIED
+ svg:y %coordinate; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!-- Plot-Area specification -->
+
+<!ELEMENT chart:plot-area (dr3d:light*,
+ chart:axis*,
+ chart:categories?,
+ chart:series*,
+ chart:wall?,
+ chart:floor?) >
+
+<!ATTLIST chart:plot-area
+ svg:x %coordinate; #IMPLIED
+ svg:y %coordinate; #IMPLIED
+ svg:width %length; #IMPLIED
+ svg:height %length; #IMPLIED
+ chart:style-name %styleName; #IMPLIED
+ table:cell-range-address %cell-range-address; #IMPLIED
+ chart:table-number-list %string; #IMPLIED
+ chart:data-source-has-labels (none|row|column|both) "none" >
+
+<!-- 3d scene attributes on plot-area -->
+<!ATTLIST chart:plot-area
+ dr3d:vrp %vector3D; #IMPLIED
+ dr3d:vpn %vector3D; #IMPLIED
+ dr3d:vup %vector3D; #IMPLIED
+ dr3d:projection (parallel|perspective) #IMPLIED
+ dr3d:transform CDATA #IMPLIED
+ dr3d:distance %length; #IMPLIED
+ dr3d:focal-length %length; #IMPLIED
+ dr3d:shadow-slant %nonNegativeInteger; #IMPLIED
+ dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED
+ dr3d:ambient-color %color; #IMPLIED
+ dr3d:lighting-mode %boolean; #IMPLIED >
+
+<!ATTLIST style:properties
+ chart:series-source (columns|rows) "columns" >
+
+<!ELEMENT chart:wall EMPTY>
+<!ATTLIST chart:wall
+ svg:width %length; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!ELEMENT chart:floor EMPTY>
+<!ATTLIST chart:floor
+ svg:width %length; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!-- Axis -->
+
+<!ELEMENT chart:axis (chart:title?, chart:grid*)>
+<!ATTLIST chart:axis
+ chart:class (category|value|series|domain) #REQUIRED
+ chart:name %string; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!ATTLIST style:properties
+ chart:tick-marks-major-inner %boolean; "false"
+ chart:tick-marks-major-outer %boolean; "true"
+ chart:tick-marks-minor-inner %boolean; "false"
+ chart:tick-marks-minor-outer %boolean; "false"
+ chart:logarithmic %boolean; "false"
+ chart:maximum %float; #IMPLIED
+ chart:minimum %float; #IMPLIED
+ chart:origin %float; #IMPLIED
+ chart:interval-major %float; #IMPLIED
+ chart:interval-minor %float; #IMPLIED
+ chart:gap-width %integer; #IMPLIED
+ chart:overlap %integer; #IMPLIED
+ text:line-break %boolean; "true"
+ chart:display-label %boolean; "true"
+ chart:label-arrangement (side-by-side|stagger-even|stagger-odd) "side-by-side"
+ chart:visible %boolean; "true"
+ chart:link-data-style-to-source %boolean; "true" >
+
+<!ELEMENT chart:grid EMPTY>
+<!ATTLIST chart:grid
+ chart:class (major|minor) "major"
+ chart:style-name %styleName; #IMPLIED >
+
+
+<!ELEMENT chart:categories EMPTY>
+<!ATTLIST chart:categories
+ table:cell-range-address %cell-range-address; #REQUIRED >
+
+<!--
+ each series element must have an cell-range-address element that points
+ to the underlying table data.
+ Impl. Note: Internally all href elements are merged to one table range
+ that represents the data for the whole chart
+-->
+<!ELEMENT chart:series ( chart:domain*,
+ chart:data-point* )>
+<!ATTLIST chart:series
+ chart:values-cell-range-address %cell-range-address; #IMPLIED
+ chart:label-cell-address %cell-address; #IMPLIED
+ chart:class %chart-class; #IMPLIED
+ chart:attached-axis %string; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!ELEMENT chart:domain EMPTY>
+<!ATTLIST chart:domain
+ table:cell-range-address %cell-range-address; #IMPLIED >
+
+<!ELEMENT chart:data-point EMPTY>
+<!ATTLIST chart:data-point
+ chart:repeated %nonNegativeInteger; #IMPLIED
+ chart:style-name %styleName; #IMPLIED >
+
+<!-- statistical properties -->
+
+<!ATTLIST style:properties
+ chart:mean-value %boolean; #IMPLIED
+ chart:error-category (none|variance|standard-deviation|percentage|error-margin|constant) "none"
+ chart:error-percentage %float; #IMPLIED
+ chart:error-margin %float; #IMPLIED
+ chart:error-lower-limit %float; #IMPLIED
+ chart:error-upper-limit %float; #IMPLIED
+ chart:error-upper-indicator %boolean; #IMPLIED
+ chart:error-lower-indicator %boolean; #IMPLIED
+ chart:regression-type (none|linear|logarithmic|exponential|power) "none" >
+
+<!-- data label properties -->
+
+<!ATTLIST style:properties
+ chart:data-label-number (none|value|percentage) "none"
+ chart:data-label-text %boolean; "false"
+ chart:data-label-symbol %boolean; "false" >
+
+<!-- general text properties -->
+
+<!ATTLIST style:properties text:rotation-angle %integer; "0" >
+
+<!-- symbol properties -->
+
+<!ATTLIST style:properties
+ chart:symbol-width %nonNegativeLength; #IMPLIED
+ chart:symbol-height %nonNegativeLength; #IMPLIED
+ chart:symbol-image-name %string; #IMPLIED >
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/datastyl.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/datastyl.mod
new file mode 100644
index 000000000000..31bf7a464c77
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/datastyl.mod
@@ -0,0 +1,172 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: datastyl.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!-- data styles -->
+<!ENTITY % any-number "( number:number | number:scientific-number | number:fraction )">
+<!ENTITY % number-style-content "( (number:text,(%any-number;,number:text?)?) | (%any-number;,number:text?) )">
+<!ELEMENT number:number-style ( style:properties?, %number-style-content;, style:map* )>
+<!ELEMENT number:number EMPTY>
+<!ELEMENT number:scientific-number EMPTY>
+<!ELEMENT number:fraction EMPTY>
+
+<!ENTITY % currency-symbol-and-text "number:currency-symbol,number:text?">
+<!ENTITY % number-and-text "number:number,number:text?">
+<!ENTITY % currency-symbol-and-number "((%number-and-text;),(%currency-symbol-and-text;)?) | ((%currency-symbol-and-text;),(%number-and-text;)?)">
+<!ENTITY % currency-style-content "number:text?, (%currency-symbol-and-number;)?">
+
+<!ELEMENT number:currency-style ( style:properties?, (%currency-style-content;), style:map* )>
+<!ELEMENT number:currency-symbol (#PCDATA)>
+<!ATTLIST number:currency-symbol number:language CDATA #IMPLIED>
+<!ATTLIST number:currency-symbol number:country CDATA #IMPLIED>
+
+<!ENTITY % percentage-style-content "( (number:text,(%number-and-text;)?) | (%number-and-text;) )">
+<!ELEMENT number:percentage-style ( style:properties?, %percentage-style-content;, style:map* )>
+
+<!ENTITY % any-date "( number:day | number:month | number:year | number:era | number:day-of-week | number:week-of-year | number:quarter| number:hours | number:am-pm | number:minutes | number:seconds )">
+<!ENTITY % date-style-content "( (number:text,(%any-date;,number:text?)+) | (%any-date;,number:text?)+ )">
+<!ELEMENT number:date-style ( style:properties?, %date-style-content;, style:map* )>
+<!ELEMENT number:day EMPTY>
+<!ATTLIST number:day number:style (short|long) "short">
+<!ATTLIST number:day number:calendar CDATA #IMPLIED>
+<!ELEMENT number:month EMPTY>
+<!ATTLIST number:month number:textual %boolean; "false">
+<!ATTLIST number:month number:style (short|long) "short">
+<!ATTLIST number:month number:calendar CDATA #IMPLIED>
+<!ELEMENT number:year EMPTY>
+<!ATTLIST number:year number:style (short|long) "short">
+<!ATTLIST number:year number:calendar CDATA #IMPLIED>
+<!ELEMENT number:era EMPTY>
+<!ATTLIST number:era number:style (short|long) "short">
+<!ATTLIST number:era number:calendar CDATA #IMPLIED>
+<!ELEMENT number:day-of-week EMPTY>
+<!ATTLIST number:day-of-week number:style (short|long) "short">
+<!ATTLIST number:day-of-week number:calendar CDATA #IMPLIED>
+<!ELEMENT number:week-of-year EMPTY>
+<!ATTLIST number:week-of-year number:calendar CDATA #IMPLIED>
+<!ELEMENT number:quarter EMPTY>
+<!ATTLIST number:quarter number:style (short|long) "short">
+<!ATTLIST number:quarter number:calendar CDATA #IMPLIED>
+
+<!ENTITY % any-time "( number:hours | number:am-pm | number:minutes | number:seconds )">
+<!ENTITY % time-style-content "( (number:text,(%any-time;,number:text?)+) | (%any-time;,number:text?)+)">
+<!ELEMENT number:time-style ( style:properties?, %time-style-content;, style:map* )>
+<!ELEMENT number:hours EMPTY>
+<!ATTLIST number:hours number:style (short|long) "short">
+<!ELEMENT number:minutes EMPTY>
+<!ATTLIST number:minutes number:style (short|long) "short">
+<!ELEMENT number:seconds EMPTY>
+<!ATTLIST number:seconds number:style (short|long) "short">
+<!ATTLIST number:seconds number:decimal-places %integer; "0">
+<!ELEMENT number:am-pm EMPTY>
+
+<!ENTITY % boolean-style-content "( (number:text,(number:boolean,number:text?)?) | (number:boolean,number:text?) )">
+<!ELEMENT number:boolean-style ( style:properties?,%boolean-style-content;, style:map* )>
+<!ELEMENT number:boolean EMPTY>
+
+<!ENTITY % text-style-content "( (number:text,(number:text-content,number:text?)?) | (number:text-content,number:text?) )">
+<!ELEMENT number:text-style ( style:properties?,%text-style-content;, style:map* )>
+<!ELEMENT number:text (#PCDATA)>
+<!ELEMENT number:text-content EMPTY>
+
+<!ATTLIST number:number-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:currency-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:percentage-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:date-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:time-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:boolean-style style:name %styleName; #REQUIRED>
+<!ATTLIST number:text-style style:name %styleName; #REQUIRED>
+
+<!ATTLIST number:number-style style:family CDATA #REQUIRED>
+<!ATTLIST number:currency-style style:family CDATA #REQUIRED>
+<!ATTLIST number:percentage-style style:family CDATA #REQUIRED>
+<!ATTLIST number:date-style style:family CDATA #REQUIRED>
+<!ATTLIST number:time-style style:family CDATA #REQUIRED>
+<!ATTLIST number:boolean-style style:family CDATA #REQUIRED>
+<!ATTLIST number:text-style style:family CDATA #REQUIRED>
+
+<!ATTLIST number:number-style number:language CDATA #IMPLIED>
+<!ATTLIST number:currency-style number:language CDATA #IMPLIED>
+<!ATTLIST number:percentage-style number:language CDATA #IMPLIED>
+<!ATTLIST number:date-style number:language CDATA #IMPLIED>
+<!ATTLIST number:time-style number:language CDATA #IMPLIED>
+<!ATTLIST number:boolean-style number:language CDATA #IMPLIED>
+<!ATTLIST number:text-style number:language CDATA #IMPLIED>
+
+<!ATTLIST number:number-style number:country CDATA #IMPLIED>
+<!ATTLIST number:currency-style number:country CDATA #IMPLIED>
+<!ATTLIST number:percentage-style number:country CDATA #IMPLIED>
+<!ATTLIST number:date-style number:country CDATA #IMPLIED>
+<!ATTLIST number:time-style number:country CDATA #IMPLIED>
+<!ATTLIST number:boolean-style number:country CDATA #IMPLIED>
+<!ATTLIST number:text-style number:country CDATA #IMPLIED>
+
+<!ATTLIST number:number-style number:title CDATA #IMPLIED>
+<!ATTLIST number:currency-style number:title CDATA #IMPLIED>
+<!ATTLIST number:percentage-style number:title CDATA #IMPLIED>
+<!ATTLIST number:date-style number:title CDATA #IMPLIED>
+<!ATTLIST number:time-style number:title CDATA #IMPLIED>
+<!ATTLIST number:boolean-style number:title CDATA #IMPLIED>
+<!ATTLIST number:text-style number:title CDATA #IMPLIED>
+
+<!ATTLIST number:number-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:currency-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:percentage-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:date-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:time-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:boolean-style style:volatile %boolean; #IMPLIED>
+<!ATTLIST number:text-style style:volatile %boolean; #IMPLIED>
+
+<!ATTLIST number:currency-style number:automatic-order %boolean; "false">
+<!ATTLIST number:date-style number:automatic-order %boolean; "false">
+
+<!ATTLIST number:date-style number:format-source (fixed|language) "fixed">
+<!ATTLIST number:time-style number:format-source (fixed|language) "fixed">
+
+<!ATTLIST number:time-style number:truncate-on-overflow %boolean; "true">
+
+<!ATTLIST number:number number:decimal-places %integer; #IMPLIED>
+<!ATTLIST number:scientific-number number:decimal-places %integer; #IMPLIED>
+
+<!ATTLIST number:number number:min-integer-digits %integer; #IMPLIED>
+<!ATTLIST number:scientific-number number:min-integer-digits %integer; #IMPLIED>
+<!ATTLIST number:fraction number:min-integer-digits %integer; #IMPLIED>
+
+<!ATTLIST number:number number:grouping %boolean; "false">
+<!ATTLIST number:scientific-number number:grouping %boolean; "false">
+<!ATTLIST number:fraction number:grouping %boolean; "false">
+
+<!ATTLIST number:number number:decimal-replacement CDATA #IMPLIED>
+
+<!ATTLIST number:scientific-number number:min-exponent-digits %integer; #IMPLIED>
+
+<!ATTLIST number:fraction number:min-numerator-digits %integer; #IMPLIED>
+
+<!ATTLIST number:fraction number:min-denominator-digits %integer; #IMPLIED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/drawing.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/drawing.mod
new file mode 100644
index 000000000000..d200a39fe7f9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/drawing.mod
@@ -0,0 +1,841 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: drawing.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY % points "CDATA" >
+<!ENTITY % pathData "CDATA" >
+<!ENTITY % gradient-style "(linear|axial|radial|ellipsoid|square|rectangular)" >
+<!ENTITY % draw-position "svg:x %coordinate; #IMPLIED svg:y %coordinate; #IMPLIED">
+<!ENTITY % draw-end-position "table:end-cell-address %cell-address; #IMPLIED table:end-x %coordinate; #IMPLIED table:end-y %coordinate; #IMPLIED">
+<!ENTITY % draw-size "svg:width %coordinate; #IMPLIED svg:height %coordinate; #IMPLIED">
+<!ENTITY % draw-transform "draw:transform CDATA #IMPLIED">
+<!ENTITY % draw-viewbox "svg:viewBox CDATA #REQUIRED">
+<!ENTITY % draw-style-name "draw:style-name %styleName; #IMPLIED presentation:style-name %styleName; #IMPLIED draw:text-style-name %styleName; #IMPLIED">
+<!ENTITY % draw-shape-id "CDATA #IMPLIED" >
+<!ENTITY % draw-text "(text:p|text:unordered-list|text:ordered-list)*">
+<!ENTITY % zindex "draw:z-index %nonNegativeInteger; #IMPLIED">
+<!ENTITY % distance "CDATA">
+<!ENTITY % rectanglePoint "(top-left|top|top-right|left|center|right|bottom-left|bottom|bottom-right)">
+<!ENTITY % vector3D "CDATA">
+<!ENTITY % text-anchor "text:anchor-type %anchorType; #IMPLIED text:anchor-page-number %positiveInteger; #IMPLIED">
+<!ENTITY % layerName "CDATA">
+<!ENTITY % table-background "table:table-background (true | false) #IMPLIED">
+
+<!-- commont presentation shape attributes -->
+<!ENTITY % presentation-style-name "presentation:style-name %styleName; #IMPLIED">
+<!ENTITY % presentation-classes "(title|outline|subtitle|text|graphic|object|chart|table|orgchart|page|notes)" >
+<!-- ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED" -->
+<!ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED presentation:placeholder (true|false) #IMPLIED presentation:user-transformed (true|false) #IMPLIED">
+<!ENTITY % presentationEffects "(none|fade|move|stripes|open|close|dissolve|wavyline|random|lines|laser|appear|hide|move-short|checkerboard|rotate|stretch)" >
+<!ENTITY % presentationEffectDirections "(none|from-left|from-top|from-right|from-bottom|from-center|from-upper-left|from-upper-right|from-lower-left|from-lower-right|to-left|to-top|to-right|to-bottom|to-upper-left|to-upper-right|to-lower-right|to-lower-left|path|spiral-inward-left|spiral-inward-right|spiral-outward-left|spiral-outward-right|vertical|horizontal|to-center|clockwise|counter-clockwise)" >
+<!ENTITY % presentationSpeeds "(slow|medium|fast)" >
+
+<!-- Drawing shapes -->
+<!ELEMENT draw:rect ( office:events?, %draw-text; )>
+<!ATTLIST draw:rect %draw-position; >
+<!ATTLIST draw:rect %draw-end-position; >
+<!ATTLIST draw:rect %table-background; >
+<!ATTLIST draw:rect %draw-size; >
+<!ATTLIST draw:rect %draw-style-name; >
+<!ATTLIST draw:rect %draw-transform; >
+<!ATTLIST draw:rect draw:corner-radius %nonNegativeLength; #IMPLIED>
+<!ATTLIST draw:rect %zindex;>
+<!ATTLIST draw:rect draw:id %draw-shape-id;>
+<!ATTLIST draw:rect %text-anchor;>
+<!ATTLIST draw:rect draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:line ( office:events?, %draw-text; )>
+<!ATTLIST draw:line svg:x1 %length; #REQUIRED>
+<!ATTLIST draw:line svg:y1 %length; #REQUIRED>
+<!ATTLIST draw:line svg:x2 %length; #REQUIRED>
+<!ATTLIST draw:line svg:y2 %length; #REQUIRED>
+<!ATTLIST draw:line %draw-style-name; >
+<!ATTLIST draw:line %draw-transform; >
+<!ATTLIST draw:line %zindex;>
+<!ATTLIST draw:line %draw-end-position; >
+<!ATTLIST draw:line %table-background; >
+<!ATTLIST draw:line draw:id %draw-shape-id;>
+<!ATTLIST draw:line %text-anchor;>
+<!ATTLIST draw:line draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:polyline ( office:events?, %draw-text; )>
+<!ATTLIST draw:polyline %draw-position; >
+<!ATTLIST draw:polyline %draw-size; >
+<!ATTLIST draw:polyline %draw-viewbox; >
+<!ATTLIST draw:polyline draw:points %points; #REQUIRED>
+<!ATTLIST draw:polyline %draw-style-name; >
+<!ATTLIST draw:polyline %draw-transform; >
+<!ATTLIST draw:polyline %zindex;>
+<!ATTLIST draw:polyline %draw-end-position; >
+<!ATTLIST draw:polyline %table-background; >
+<!ATTLIST draw:polyline draw:id %draw-shape-id;>
+<!ATTLIST draw:polyline %text-anchor;>
+<!ATTLIST draw:polyline draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:polygon ( office:events?, %draw-text; )>
+<!ATTLIST draw:polygon %draw-position; >
+<!ATTLIST draw:polygon %draw-end-position; >
+<!ATTLIST draw:polygon %table-background; >
+<!ATTLIST draw:polygon %draw-size; >
+<!ATTLIST draw:polygon %draw-viewbox; >
+<!ATTLIST draw:polygon draw:points %points; #REQUIRED >
+<!ATTLIST draw:polygon %draw-style-name; >
+<!ATTLIST draw:polygon %draw-transform; >
+<!ATTLIST draw:polygon %zindex;>
+<!ATTLIST draw:polygon draw:id %draw-shape-id;>
+<!ATTLIST draw:polygon %text-anchor;>
+<!ATTLIST draw:polygon draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:path ( office:events?, %draw-text; )>
+<!ATTLIST draw:path %draw-position;>
+<!ATTLIST draw:path %draw-end-position; >
+<!ATTLIST draw:path %table-background; >
+<!ATTLIST draw:path %draw-size; >
+<!ATTLIST draw:path %draw-viewbox; >
+<!ATTLIST draw:path svg:d %pathData; #REQUIRED >
+<!ATTLIST draw:path %draw-style-name; >
+<!ATTLIST draw:path %draw-transform; >
+<!ATTLIST draw:path %zindex;>
+<!ATTLIST draw:path draw:id %draw-shape-id;>
+<!ATTLIST draw:path %text-anchor;>
+<!ATTLIST draw:path draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:circle ( office:events?, %draw-text; )>
+<!ATTLIST draw:circle %draw-position; >
+<!ATTLIST draw:circle %draw-size; >
+<!ATTLIST draw:circle %draw-style-name; >
+<!ATTLIST draw:circle %draw-transform; >
+<!ATTLIST draw:circle %zindex;>
+<!ATTLIST draw:circle %draw-end-position; >
+<!ATTLIST draw:circle %table-background; >
+<!ATTLIST draw:circle draw:id %draw-shape-id;>
+<!ATTLIST draw:circle draw:kind (full|section|cut|arc) "full">
+<!ATTLIST draw:circle draw:start-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST draw:circle draw:end-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST draw:circle %text-anchor;>
+<!ATTLIST draw:circle draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:ellipse ( office:events?, %draw-text; )>
+<!ATTLIST draw:ellipse %draw-position; >
+<!ATTLIST draw:ellipse %draw-size; >
+<!ATTLIST draw:ellipse %draw-style-name; >
+<!ATTLIST draw:ellipse %draw-transform; >
+<!ATTLIST draw:ellipse %zindex;>
+<!ATTLIST draw:ellipse %draw-end-position; >
+<!ATTLIST draw:ellipse %table-background; >
+<!ATTLIST draw:ellipse draw:id %draw-shape-id;>
+<!ATTLIST draw:ellipse draw:kind (full|section|cut|arc) "full">
+<!ATTLIST draw:ellipse draw:start-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST draw:ellipse draw:end-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST draw:ellipse %text-anchor;>
+<!ATTLIST draw:ellipse draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:connector ( office:events?, %draw-text;)>
+<!ATTLIST draw:connector draw:type (standard|lines|line|curve) "standard">
+<!ATTLIST draw:connector draw:line-skew CDATA #IMPLIED>
+<!ATTLIST draw:connector %draw-style-name;>
+<!ATTLIST draw:connector svg:x1 %coordinate; #REQUIRED>
+<!ATTLIST draw:connector svg:y1 %coordinate; #REQUIRED>
+<!ATTLIST draw:connector svg:x2 %coordinate; #REQUIRED>
+<!ATTLIST draw:connector svg:y2 %coordinate; #REQUIRED>
+<!ATTLIST draw:connector draw:start-shape %draw-shape-id;>
+<!ATTLIST draw:connector draw:start-glue-point %integer; #IMPLIED>
+<!ATTLIST draw:connector draw:end-shape %draw-shape-id;>
+<!ATTLIST draw:connector draw:end-glue-point %integer; #IMPLIED>
+<!ATTLIST draw:connector %zindex;>
+<!ATTLIST draw:connector %draw-end-position; >
+<!ATTLIST draw:connector %table-background; >
+<!ATTLIST draw:connector draw:id %draw-shape-id;>
+<!ATTLIST draw:connector %text-anchor;>
+<!ATTLIST draw:connector draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:control EMPTY>
+<!ATTLIST draw:control %draw-style-name;>
+<!ATTLIST draw:control %draw-position; >
+<!ATTLIST draw:control %draw-size; >
+<!ATTLIST draw:control %control-id; >
+<!ATTLIST draw:control %zindex;>
+<!ATTLIST draw:control %draw-end-position; >
+<!ATTLIST draw:control %table-background; >
+<!ATTLIST draw:control draw:id %draw-shape-id;>
+<!ATTLIST draw:control %text-anchor;>
+<!ATTLIST draw:control draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:g ( office:events?, (%shapes;)* ) >
+<!ATTLIST draw:g %draw-transform; >
+<!ATTLIST draw:g %draw-style-name; >
+<!ATTLIST draw:g %zindex;>
+<!ATTLIST draw:g %draw-end-position; >
+<!ATTLIST draw:g %table-background; >
+<!ATTLIST draw:g draw:id %draw-shape-id;>
+<!ATTLIST draw:g %text-anchor;>
+<!ATTLIST draw:g draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:page-thumbnail EMPTY>
+<!ATTLIST draw:page-thumbnail draw:page-number %positiveInteger; #IMPLIED>
+<!ATTLIST draw:page-thumbnail %draw-position; >
+<!ATTLIST draw:page-thumbnail %draw-size; >
+<!ATTLIST draw:page-thumbnail %draw-style-name; >
+<!ATTLIST draw:page-thumbnail %presentation-class; >
+<!ATTLIST draw:page-thumbnail %zindex;>
+<!ATTLIST draw:page-thumbnail %draw-end-position; >
+<!ATTLIST draw:page-thumbnail %table-background; >
+<!ATTLIST draw:page-thumbnail draw:id %draw-shape-id;>
+<!ATTLIST draw:page-thumbnail %text-anchor;>
+<!ATTLIST draw:page-thumbnail draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT draw:caption ( office:events?, %draw-text;)>
+<!ATTLIST draw:caption %draw-position; >
+<!ATTLIST draw:caption %draw-end-position; >
+<!ATTLIST draw:caption %table-background; >
+<!ATTLIST draw:caption %draw-size; >
+<!ATTLIST draw:caption %draw-style-name; >
+<!ATTLIST draw:caption %draw-transform; >
+<!ATTLIST draw:caption draw:caption-point-x %coordinate; #IMPLIED>
+<!ATTLIST draw:caption draw:caption-point-y %coordinate; #IMPLIED>
+<!ATTLIST draw:caption %zindex;>
+<!ATTLIST draw:caption draw:id %draw-shape-id;>
+<!ATTLIST draw:caption %text-anchor;>
+<!ATTLIST draw:caption draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:caption draw:corner-radius %nonNegativeLength; #IMPLIED>
+
+<!ELEMENT draw:measure ( office:events?, %draw-text;)>
+<!ATTLIST draw:measure svg:x1 %coordinate; #REQUIRED>
+<!ATTLIST draw:measure svg:y1 %coordinate; #REQUIRED>
+<!ATTLIST draw:measure svg:x2 %coordinate; #REQUIRED>
+<!ATTLIST draw:measure svg:y2 %coordinate; #REQUIRED>
+<!ATTLIST draw:measure %draw-end-position; >
+<!ATTLIST draw:measure %table-background; >
+<!ATTLIST draw:measure %draw-style-name; >
+<!ATTLIST draw:measure %draw-transform; >
+<!ATTLIST draw:measure %zindex;>
+<!ATTLIST draw:measure draw:id %draw-shape-id;>
+<!ATTLIST draw:measure %text-anchor;>
+<!ATTLIST draw:measure draw:layer %layerName; #IMPLIED>
+
+<!-- graphic style elements -->
+<!ELEMENT draw:gradient EMPTY >
+<!ATTLIST draw:gradient draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:gradient draw:style %gradient-style; #REQUIRED>
+<!ATTLIST draw:gradient draw:cx %coordinate; #IMPLIED>
+<!ATTLIST draw:gradient draw:cy %coordinate; #IMPLIED>
+<!ATTLIST draw:gradient draw:start-color %color; #IMPLIED>
+<!ATTLIST draw:gradient draw:end-color %color; #IMPLIED>
+<!ATTLIST draw:gradient draw:start-intensity %percentage; #IMPLIED>
+<!ATTLIST draw:gradient draw:end-intensity %percentage; #IMPLIED>
+<!ATTLIST draw:gradient draw:angle %integer; #IMPLIED>
+<!ATTLIST draw:gradient draw:border %percentage; #IMPLIED>
+
+<!ELEMENT draw:hatch EMPTY >
+<!ATTLIST draw:hatch draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:hatch draw:style (single|double|triple) #REQUIRED >
+<!ATTLIST draw:hatch draw:color %color; #IMPLIED>
+<!ATTLIST draw:hatch draw:distance %length; #IMPLIED>
+<!ATTLIST draw:hatch draw:rotation %integer; #IMPLIED>
+
+
+<!ELEMENT draw:fill-image EMPTY >
+<!ATTLIST draw:fill-image draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:fill-image xlink:href %uriReference; #REQUIRED>
+<!ATTLIST draw:fill-image xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:fill-image xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:fill-image xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:fill-image svg:width %length; #IMPLIED>
+<!ATTLIST draw:fill-image svg:height %length; #IMPLIED>
+
+<!ELEMENT draw:transparency EMPTY>
+<!ATTLIST draw:transparency draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:transparency draw:style %gradient-style; #REQUIRED>
+<!ATTLIST draw:transparency draw:cx %coordinate; #IMPLIED>
+<!ATTLIST draw:transparency draw:cy %coordinate; #IMPLIED>
+<!ATTLIST draw:transparency draw:start %percentage; #IMPLIED>
+<!ATTLIST draw:transparency draw:end %percentage; #IMPLIED>
+<!ATTLIST draw:transparency draw:angle %integer; #IMPLIED>
+<!ATTLIST draw:transparency draw:border %percentage; #IMPLIED>
+
+<!ELEMENT draw:marker EMPTY>
+<!ATTLIST draw:marker draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:marker %draw-viewbox; >
+<!ATTLIST draw:marker svg:d %pathData; #REQUIRED>
+
+<!ELEMENT draw:stroke-dash EMPTY>
+<!ATTLIST draw:stroke-dash draw:name %styleName; #REQUIRED>
+<!ATTLIST draw:stroke-dash draw:style (rect|round) #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:dots1 %integer; #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:dots1-length %length; #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:dots2 %integer; #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:dots2-length %length; #IMPLIED>
+<!ATTLIST draw:stroke-dash draw:distance %length; #IMPLIED>
+
+<!-- stroke attributes -->
+<!ATTLIST style:properties draw:stroke (none|dash|solid) #IMPLIED>
+<!ATTLIST style:properties draw:stroke-dash CDATA #IMPLIED>
+<!ATTLIST style:properties svg:stroke-width %length; #IMPLIED>
+<!ATTLIST style:properties svg:stroke-color %color; #IMPLIED>
+<!ATTLIST style:properties draw:marker-start %styleName; #IMPLIED>
+<!ATTLIST style:properties draw:marker-end %styleName; #IMPLIED>
+<!ATTLIST style:properties draw:marker-start-width %length; #IMPLIED>
+<!ATTLIST style:properties draw:marker-end-width %length; #IMPLIED>
+<!ATTLIST style:properties draw:marker-start-center %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:marker-end-center %boolean; #IMPLIED>
+<!ATTLIST style:properties svg:stroke-opacity %floatOrPercentage; #IMPLIED>
+<!ATTLIST style:properties svg:stroke-linejoin (miter|round|bevel|middle|none|inherit) #IMPLIED>
+
+<!-- text attributes -->
+<!ATTLIST style:properties draw:auto-grow-width %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:auto-grow-height %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fit-to-size %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fit-to-contour %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:textarea-horizontal-align ( left | center | right | justify ) #IMPLIED>
+<!ATTLIST style:properties draw:textarea-vertical-align ( top | middle | bottom ) #IMPLIED>
+
+<!-- fill attributes -->
+<!ATTLIST style:properties draw:fill (none|solid|bitmap|gradient|hatch) #IMPLIED>
+<!ATTLIST style:properties draw:fill-color %color; #IMPLIED>
+<!ATTLIST style:properties draw:fill-gradient-name %styleName; #IMPLIED>
+<!ATTLIST style:properties draw:gradient-step-count CDATA #IMPLIED>
+<!ATTLIST style:properties draw:fill-hatch-name %styleName; #IMPLIED>
+<!ATTLIST style:properties draw:fill-hatch-solid %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-name %styleName; #IMPLIED>
+<!ATTLIST style:properties style:repeat (no-repeat|repeat|stretch) #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-ref-point-x %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-ref-point-y %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:fill-image-ref-point %rectanglePoint; #IMPLIED>
+<!ATTLIST style:properties draw:tile-repeat-offset CDATA #IMPLIED>
+<!ATTLIST style:properties draw:transparency %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:transparency-name %styleName; #IMPLIED>
+
+<!-- graphic attributes -->
+<!ATTLIST style:properties draw:color-mode (greyscale|mono|watermark|standard) #IMPLIED>
+<!ATTLIST style:properties draw:luminance %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:contrast %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:gamma %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:red %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:green %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:blue %percentage; #IMPLIED>
+<!ATTLIST style:properties draw:color-inversion %boolean; #IMPLIED>
+
+<!-- shadow attributes -->
+<!ATTLIST style:properties draw:shadow (visible|hidden) #IMPLIED>
+<!ATTLIST style:properties draw:shadow-offset-x %length; #IMPLIED>
+<!ATTLIST style:properties draw:shadow-offset-y %length; #IMPLIED>
+<!ATTLIST style:properties draw:shadow-color %color; #IMPLIED>
+<!ATTLIST style:properties draw:shadow-transparency CDATA #IMPLIED>
+
+<!-- connector attributes -->
+<!ATTLIST style:properties draw:start-line-spacing-horizontal %distance; #IMPLIED>
+<!ATTLIST style:properties draw:start-line-spacing-vertical %distance; #IMPLIED>
+<!ATTLIST style:properties draw:end-line-spacing-horizontal %distance; #IMPLIED>
+<!ATTLIST style:properties draw:end-line-spacing-vertical %distance; #IMPLIED>
+
+<!-- measure attributes -->
+<!ATTLIST style:properties draw:line-distance %distance; #IMPLIED>
+<!ATTLIST style:properties draw:guide-overhang %distance; #IMPLIED>
+<!ATTLIST style:properties draw:guide-distance %distance; #IMPLIED>
+<!ATTLIST style:properties draw:start-guide %distance; #IMPLIED>
+<!ATTLIST style:properties draw:end-guide %distance; #IMPLIED>
+<!ATTLIST style:properties draw:measure-align (automatic|left-outside|inside|right-outside) #IMPLIED>
+<!ATTLIST style:properties draw:measure-vertical-align (automatic|above|below|center) #IMPLIED>
+<!ATTLIST style:properties draw:unit (automatic|mm|cm|m|km|pt|pc|inch|ft|mi) #IMPLIED>
+<!ATTLIST style:properties draw:show-unit %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:placing (below|above) #IMPLIED>
+<!ATTLIST style:properties draw:parallel %boolean; #IMPLIED>
+
+<!-- frame attributes -->
+<!ATTLIST style:properties draw:frame-display-scrollbar %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:frame-display-border %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:frame-margin-horizontal %nonNegativePixelLength; #IMPLIED>
+<!ATTLIST style:properties draw:frame-margin-vertical %nonNegativePixelLength; #IMPLIED>
+<!ATTLIST style:properties draw:size-protect %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:move-protect %boolean; #IMPLIED>
+
+<!-- ole object attributes -->
+<!ATTLIST style:properties draw:visible-area-left %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties draw:visible-area-top %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties draw:visible-area-width %positiveLength; #IMPLIED>
+<!ATTLIST style:properties draw:visible-area-height %positiveLength; #IMPLIED>
+
+<!-- fontwork attributes -->
+<!ATTLIST style:properties draw:fontwork-style (rotate|upright|slant-x|slant-y|none) #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-adjust (left|right|autosize|center) #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-distance %distance; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-start %distance; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-mirror %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-outline %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow (normal|slant|none) #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow-color %color; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow-offset-x %distance; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow-offset-y %distance; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-form (none|top-circle|bottom-circle|left-circle|right-circle|top-arc|bottom-arc|left-arc|right-arc|button1|button2|button3|button4) #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-hide-form %boolean; #IMPLIED>
+<!ATTLIST style:properties draw:fontwork-shadow-transparence %percentage; #IMPLIED>
+
+<!-- caption attributes -->
+<!ATTLIST style:properties draw:caption-type (straight-line|angled-line|angled-connector-line) #IMPLIED>
+<!ATTLIST style:properties draw:caption-angle-type (fixed|free) #IMPLIED>
+<!ATTLIST style:properties draw:caption-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties draw:caption-gap %distance; #IMPLIED>
+<!ATTLIST style:properties draw:caption-escape-direction (horizontal|vertical|auto) #IMPLIED>
+<!ATTLIST style:properties draw:caption-escape %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties draw:caption-line-length %distance; #IMPLIED>
+<!ATTLIST style:properties draw:caption-fit-line-length %boolean; #IMPLIED>
+
+<!-- Animations -->
+<!ELEMENT presentation:sound EMPTY>
+<!ATTLIST presentation:sound xlink:href %uriReference; #REQUIRED>
+<!ATTLIST presentation:sound xlink:type (simple) #FIXED "simple">
+<!ATTLIST presentation:sound xlink:show (new|replace) #IMPLIED>
+<!ATTLIST presentation:sound xlink:actuate (onRequest) "onRequest">
+<!ATTLIST presentation:sound presentation:play-full %boolean; #IMPLIED>
+
+<!ELEMENT presentation:show-shape (presentation:sound)?>
+<!ATTLIST presentation:show-shape draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:show-shape presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:show-shape presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:show-shape presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:show-shape presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:show-shape presentation:path-id CDATA #IMPLIED >
+
+<!ELEMENT presentation:show-text (presentation:sound)?>
+<!ATTLIST presentation:show-text draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:show-text presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:show-text presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:show-text presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:show-text presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:show-text presentation:path-id CDATA #IMPLIED >
+
+<!ELEMENT presentation:hide-shape (presentation:sound)?>
+<!ATTLIST presentation:hide-shape draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:hide-shape presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:hide-shape presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:hide-shape presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:hide-shape presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:hide-shape presentation:path-id CDATA #IMPLIED >
+
+<!ELEMENT presentation:hide-text (presentation:sound)?>
+<!ATTLIST presentation:hide-text draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:hide-text presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:hide-text presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:hide-text presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:hide-text presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:hide-text presentation:path-id CDATA #IMPLIED >
+
+<!ELEMENT presentation:dim (presentation:sound)?>
+<!ATTLIST presentation:dim draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:dim draw:color %color; #REQUIRED>
+
+<!ELEMENT presentation:play EMPTY>
+<!ATTLIST presentation:play draw:shape-id CDATA #REQUIRED>
+<!ATTLIST presentation:play presentation:speed %presentationSpeeds; "medium">
+
+<!ELEMENT presentation:animations (presentation:show-shape|presentation:show-text|presentation:hide-shape|presentation:hide-text|presentation:dim|presentation:play)*>
+
+<!ELEMENT presentation:show EMPTY>
+<!ATTLIST presentation:show presentation:name %styleName; #REQUIRED>
+<!ATTLIST presentation:show presentation:pages CDATA #REQUIRED>
+
+<!ELEMENT presentation:settings (presentation:show)*>
+<!ATTLIST presentation:settings presentation:start-page %styleName; #IMPLIED>
+<!ATTLIST presentation:settings presentation:show %styleName; #IMPLIED>
+<!ATTLIST presentation:settings presentation:full-screen %boolean; "true">
+<!ATTLIST presentation:settings presentation:endless %boolean; "false">
+<!ATTLIST presentation:settings presentation:pause %timeDuration; #IMPLIED>
+<!ATTLIST presentation:settings presentation:show-logo %boolean; "false">
+<!ATTLIST presentation:settings presentation:force-manual %boolean; "false">
+<!ATTLIST presentation:settings presentation:mouse-visible %boolean; "true">
+<!ATTLIST presentation:settings presentation:mouse-as-pen %boolean; "false">
+<!ATTLIST presentation:settings presentation:start-with-navigator %boolean; "false">
+<!ATTLIST presentation:settings presentation:animations (enabled|disabled) "enabled">
+<!ATTLIST presentation:settings presentation:stay-on-top %boolean; "false">
+<!ATTLIST presentation:settings presentation:transition-on-click (enabled|disabled) "enabled">
+
+<!-- Drawing page -->
+<!ELEMENT draw:page (office:forms?,(%shapes;)*,presentation:animations?,presentation:notes?)>
+<!ATTLIST draw:page draw:name %string; #IMPLIED>
+<!ATTLIST draw:page draw:style-name %styleName; #IMPLIED>
+<!ATTLIST draw:page draw:master-page-name %styleName; #REQUIRED>
+<!ATTLIST draw:page presentation:presentation-page-layout-name %styleName; #IMPLIED>
+<!ATTLIST draw:page draw:id %nonNegativeInteger; #IMPLIED>
+
+<!-- Presentation notes -->
+<!ELEMENT presentation:notes (%shapes;)*>
+
+
+<!-- presentation page layouts -->
+<!ELEMENT style:presentation-page-layout (presentation:placeholder)* >
+<!ATTLIST style:presentation-page-layout style:name %styleName; #REQUIRED>
+<!ELEMENT presentation:placeholder EMPTY >
+<!ATTLIST presentation:placeholder presentation:object (title|outline|subtitle|text|graphic|object|chart|orgchart|page|notes|handout) #REQUIRED>
+<!ATTLIST presentation:placeholder svg:x %coordinateOrPercentage; #REQUIRED>
+<!ATTLIST presentation:placeholder svg:y %coordinateOrPercentage; #REQUIRED>
+<!ATTLIST presentation:placeholder svg:width %lengthOrPercentage; #REQUIRED>
+<!ATTLIST presentation:placeholder svg:height %lengthOrPercentage; #REQUIRED>
+
+<!-- presentation page attributes -->
+<!ATTLIST style:properties presentation:transition-type (manual|automatic|semi-automatic) #IMPLIED >
+<!ATTLIST style:properties presentation:transition-style (none|fade-from-left|fade-from-top|fade-from-right|fade-from-bottom|fade-to-center|fade-from-center|move-from-left|move-from-top|move-from-right|move-from-bottom|roll-from-top|roll-from-left|roll-from-right|roll-from-bottom|vertical-stripes|horizontal-stripes|clockwise|counterclockwise|fade-from-upperleft|fade-from-upperright|fade-from-lowerleft|fade-from-lowerright|close-vertical|close-horizontal|open-vertical|open-horizontal|spiralin-left|spiralin-right|spiralout-left|spiralout-right|dissolve|wavyline-from-left|wavyline-from-top|wavyline-from-right|wavyline-from-bottom|random|stretch-from-left|stretch-from-top|stretch-from-right|stretch-from-bottom|vertical-lines|horizontal-lines) #IMPLIED >
+<!ATTLIST style:properties presentation:transition-speed %presentationSpeeds; #IMPLIED >
+<!ATTLIST style:properties presentation:duration %timeDuration; #IMPLIED>
+<!ATTLIST style:properties presentation:visibility (visible|hidden) #IMPLIED>
+<!ATTLIST style:properties draw:background-size (full|border) #IMPLIED>
+<!ATTLIST style:properties presentation:background-objects-visible %boolean; #IMPLIED>
+<!ATTLIST style:properties presentation:background-visible %boolean; #IMPLIED>
+
+
+<!-- text boxes -->
+<!ELEMENT draw:text-box (office:events?,draw:image-map?,
+ (text:h|text:p|text:ordered-list|
+ text:unordered-list|table:table|chart:chart|
+ draw:a|draw:text-box|draw:image)*)>
+<!ATTLIST draw:text-box %draw-style-name;>
+<!ATTLIST draw:text-box %draw-transform; >
+<!ATTLIST draw:text-box draw:name %string; #IMPLIED>
+<!ATTLIST draw:text-box draw:chain-next-name %string; #IMPLIED>
+
+<!ATTLIST draw:text-box %text-anchor;>
+<!ATTLIST draw:text-box %draw-position;>
+<!ATTLIST draw:text-box %draw-end-position; >
+<!ATTLIST draw:text-box %table-background; >
+<!ATTLIST draw:text-box svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:text-box svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:text-box fo:min-height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:text-box %zindex;>
+<!ATTLIST draw:text-box %presentation-class; >
+<!ATTLIST draw:text-box %draw-transform; >
+<!ATTLIST draw:text-box draw:id %draw-shape-id;>
+<!ATTLIST draw:text-box draw:layer %layerName; #IMPLIED>
+
+<!-- image -->
+<!ELEMENT draw:image (office:binary-data?,office:events?,draw:image-map?,svg:desc?,(draw:contour-polygon|draw:contour-path)?)>
+<!ATTLIST draw:image %draw-style-name;>
+<!ATTLIST draw:image draw:name %string; #IMPLIED>
+<!ATTLIST draw:image xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:image xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:image xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:image xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:image draw:filter-name %string; #IMPLIED>
+<!ATTLIST draw:image %text-anchor;>
+<!ATTLIST draw:image %draw-position;>
+<!ATTLIST draw:image %draw-end-position; >
+<!ATTLIST draw:image %table-background; >
+<!ATTLIST draw:image svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:image svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:image %presentation-class; >
+<!ATTLIST draw:image %zindex;>
+<!ATTLIST draw:image draw:id %draw-shape-id;>
+<!ATTLIST draw:image draw:layer %layerName; #IMPLIED>
+
+<!-- objects -->
+<!ELEMENT draw:thumbnail EMPTY>
+<!ATTLIST draw:thumbnail xlink:href %uriReference; #REQUIRED>
+<!ATTLIST draw:thumbnail xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:thumbnail xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:thumbnail xlink:actuate (onLoad) #IMPLIED>
+
+<!ELEMENT math:math ANY> <!-- dummy (we have no MathML DTD currently)-->
+<!ELEMENT draw:object (draw:thumbnail?,(office:document|math:math)?,office:events?, draw:image-map?, svg:desc?,(draw:contour-polygon|draw:contour-path)?)>
+<!ATTLIST draw:object %draw-style-name;>
+<!ATTLIST draw:object draw:name %string; #IMPLIED>
+<!ATTLIST draw:object xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:object xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:object xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:object xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:object %text-anchor;>
+<!ATTLIST draw:object %draw-position;>
+<!ATTLIST draw:object %draw-end-position; >
+<!ATTLIST draw:object %table-background; >
+<!ATTLIST draw:object svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:object svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:object %presentation-class; >
+<!ATTLIST draw:object %zindex;>
+<!ATTLIST draw:object draw:id %draw-shape-id;>
+<!ATTLIST draw:object draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:object draw:notify-on-update-of-ranges %string; #IMPLIED>
+
+<!ELEMENT draw:object-ole (office:binary-data?|office:events?|draw:image-map?|svg:desc?|draw:contour-polygon?|draw:contour-path?|draw:thumbnail?)>
+<!ATTLIST draw:object-ole draw:class-id CDATA #IMPLIED>
+<!ATTLIST draw:object-ole %draw-style-name;>
+<!ATTLIST draw:object-ole draw:name %string; #IMPLIED>
+<!ATTLIST draw:object-ole xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:object-ole xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:object-ole xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:object-ole xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:object-ole %text-anchor;>
+<!ATTLIST draw:object-ole %draw-position;>
+<!ATTLIST draw:object-ole %draw-end-position; >
+<!ATTLIST draw:object-ole %table-background; >
+<!ATTLIST draw:object-ole svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:object-ole svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:object-ole %presentation-class; >
+<!ATTLIST draw:object-ole %zindex;>
+<!ATTLIST draw:object-ole draw:id %draw-shape-id;>
+<!ATTLIST draw:object-ole draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT svg:desc (#PCDATA)>
+
+<!ELEMENT draw:contour-polygon EMPTY>
+<!ATTLIST draw:contour-polygon svg:width %coordinate; #REQUIRED>
+<!ATTLIST draw:contour-polygon svg:height %coordinate; #REQUIRED>
+<!ATTLIST draw:contour-polygon %draw-viewbox;>
+<!ATTLIST draw:contour-polygon svg:points %points; #REQUIRED>
+
+<!ELEMENT draw:contour-path EMPTY>
+<!ATTLIST draw:contour-path svg:width %coordinate; #REQUIRED>
+<!ATTLIST draw:contour-path svg:height %coordinate; #REQUIRED>
+<!ATTLIST draw:contour-path %draw-viewbox;>
+<!ATTLIST draw:contour-path svg:d %pathData; #REQUIRED>
+
+<!-- hyperlink -->
+<!ELEMENT draw:a (draw:image|draw:text-box)>
+<!ATTLIST draw:a xlink:href %uriReference; #REQUIRED>
+<!ATTLIST draw:a xlink:type (simple) #FIXED "simple">
+<!ATTLIST draw:a xlink:show (new|replace) #IMPLIED>
+<!ATTLIST draw:a xlink:actuate (onRequest) "onRequest">
+<!ATTLIST draw:a office:name %string; #IMPLIED>
+<!ATTLIST draw:a office:target-frame-name %string; #IMPLIED>
+<!ATTLIST draw:a office:server-map %boolean; "false">
+
+<!-- 3d properties -->
+<!ATTLIST style:properties dr3d:horizontal-segments %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties dr3d:vertical-segments %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties dr3d:edge-rounding %percentage; #IMPLIED>
+<!ATTLIST style:properties dr3d:edge-rounding-mode (correct|attractive) #IMPLIED>
+<!ATTLIST style:properties dr3d:back-scale %percentage; #IMPLIED>
+<!ATTLIST style:properties dr3d:end-angle %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties dr3d:depth %length; #IMPLIED>
+<!ATTLIST style:properties dr3d:backface-culling (enabled|disabled) #IMPLIED>
+<!ATTLIST style:properties dr3d:lighting-mode (standard|double-sided) #IMPLIED>
+<!ATTLIST style:properties dr3d:normals-kind (object|flat|sphere) #IMPLIED>
+<!ATTLIST style:properties dr3d:normals-direction (normal|inverse) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-generation-mode-x (object|parallel|sphere) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-generation-mode-y (object|parallel|sphere) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-kind (luminance|intesity|color) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-filter (enabled|disabled) #IMPLIED>
+<!ATTLIST style:properties dr3d:texture-mode (replace|modulate|blend) #IMPLIED>
+<!ATTLIST style:properties dr3d:ambient-color %color; #IMPLIED>
+<!ATTLIST style:properties dr3d:emissive-color %color; #IMPLIED>
+<!ATTLIST style:properties dr3d:specular-color %color; #IMPLIED>
+<!ATTLIST style:properties dr3d:diffuse-color %color; #IMPLIED>
+<!ATTLIST style:properties dr3d:shininess %percentage; #IMPLIED>
+<!ATTLIST style:properties dr3d:shadow (visible|hidden) #IMPLIED>
+
+<!ELEMENT dr3d:light EMPTY>
+<!ATTLIST dr3d:light dr3d:diffuse-color %color; #IMPLIED>
+<!ATTLIST dr3d:light dr3d:direction %vector3D; #REQUIRED>
+<!ATTLIST dr3d:light dr3d:enabled %boolean; #IMPLIED>
+<!ATTLIST dr3d:light dr3d:specular %boolean; #IMPLIED>
+
+<!ENTITY % shapes3d "(dr3d:scene|dr3d:extrude|dr3d:sphere|dr3d:rotate|dr3d:cube)">
+
+<!ELEMENT dr3d:cube EMPTY>
+<!ATTLIST dr3d:cube dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:cube dr3d:min-edge %vector3D; #IMPLIED>
+<!ATTLIST dr3d:cube dr3d:max-edge %vector3D; #IMPLIED>
+<!ATTLIST dr3d:cube %zindex;>
+<!ATTLIST dr3d:cube draw:id %draw-shape-id;>
+<!ATTLIST dr3d:cube %draw-end-position; >
+<!ATTLIST dr3d:cube %table-background; >
+<!ATTLIST dr3d:cube %draw-style-name; >
+<!ATTLIST dr3d:cube draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT dr3d:sphere EMPTY>
+<!ATTLIST dr3d:sphere dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:sphere dr3d:center %vector3D; #IMPLIED>
+<!ATTLIST dr3d:sphere dr3d:size %vector3D; #IMPLIED>
+<!ATTLIST dr3d:sphere %zindex;>
+<!ATTLIST dr3d:sphere draw:id %draw-shape-id;>
+<!ATTLIST dr3d:sphere %draw-end-position; >
+<!ATTLIST dr3d:sphere %table-background; >
+<!ATTLIST dr3d:sphere %draw-style-name; >
+<!ATTLIST dr3d:sphere draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT dr3d:extrude EMPTY>
+<!ATTLIST dr3d:extrude dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:extrude %draw-viewbox;>
+<!ATTLIST dr3d:extrude svg:d %pathData; #REQUIRED >
+<!ATTLIST dr3d:extrude %zindex;>
+<!ATTLIST dr3d:extrude draw:id %draw-shape-id;>
+<!ATTLIST dr3d:extrude %draw-end-position; >
+<!ATTLIST dr3d:extrude %table-background; >
+<!ATTLIST dr3d:extrude %draw-style-name; >
+<!ATTLIST dr3d:extrude draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT dr3d:rotate EMPTY>
+<!ATTLIST dr3d:rotate dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:rotate %draw-viewbox;>
+<!ATTLIST dr3d:rotate svg:d %pathData; #REQUIRED >
+<!ATTLIST dr3d:rotate %zindex;>
+<!ATTLIST dr3d:rotate draw:id %draw-shape-id;>
+<!ATTLIST dr3d:rotate %draw-end-position; >
+<!ATTLIST dr3d:rotate %table-background; >
+<!ATTLIST dr3d:rotate %draw-style-name; >
+<!ATTLIST dr3d:rotate draw:layer %layerName; #IMPLIED>
+
+<!ELEMENT dr3d:scene (dr3d:light*,(%shapes3d;)*)>
+<!ATTLIST dr3d:scene %draw-style-name; >
+<!ATTLIST dr3d:scene svg:x %coordinate; #IMPLIED>
+<!ATTLIST dr3d:scene svg:y %coordinate; #IMPLIED>
+<!ATTLIST dr3d:scene svg:width %length; #IMPLIED>
+<!ATTLIST dr3d:scene svg:height %length; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:vrp %vector3D; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:vpn %vector3D; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:vup %vector3D; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:projection (parallel|perspective) #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:transform CDATA #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:distance %length; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:focal-length %length; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:shadow-slant %nonNegativeInteger; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:ambient-color %color; #IMPLIED>
+<!ATTLIST dr3d:scene dr3d:lighting-mode %boolean; #IMPLIED>
+<!ATTLIST dr3d:scene %zindex;>
+<!ATTLIST dr3d:scene draw:id %draw-shape-id;>
+<!ATTLIST dr3d:scene %draw-end-position; >
+<!ATTLIST dr3d:scene %table-background; >
+
+<!-- layer -->
+
+<!ELEMENT draw:layer-set (draw:layer*)>
+
+<!ELEMENT draw:layer EMPTY>
+<!ATTLIST draw:layer draw:name %layerName; #REQUIRED>
+
+<!-- events -->
+<!ELEMENT presentation:event (presentation:sound)?>
+<!ATTLIST presentation:event %event-name;>
+<!ATTLIST presentation:event presentation:action (none|previous-page|next-page|first-page|last-page|hide|stop|execute|show|verb|fade-out|sound) #REQUIRED>
+<!ATTLIST presentation:event presentation:effect %presentationEffects; "none">
+<!ATTLIST presentation:event presentation:direction %presentationEffectDirections; "none">
+<!ATTLIST presentation:event presentation:speed %presentationSpeeds; "medium">
+<!ATTLIST presentation:event presentation:start-scale %percentage; "100%">
+<!ATTLIST presentation:event xlink:href %uriReference; #IMPLIED>
+<!ATTLIST presentation:event xlink:type (simple) #IMPLIED>
+<!ATTLIST presentation:event xlink:show (embed) #IMPLIED>
+<!ATTLIST presentation:event xlink:actuate (onRequest) #IMPLIED>
+<!ATTLIST presentation:event presentation:verb %nonNegativeInteger; #IMPLIED>
+
+<!-- applets -->
+<!ELEMENT draw:applet (draw:thumbnail?, draw:param*, svg:desc?)>
+<!ATTLIST draw:applet xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:applet xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:applet xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:applet xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:applet draw:code CDATA #REQUIRED>
+<!ATTLIST draw:applet draw:object CDATA #IMPLIED>
+<!ATTLIST draw:applet draw:archive CDATA #IMPLIED>
+<!ATTLIST draw:applet draw:may-script %boolean; "false">
+<!ATTLIST draw:applet draw:name CDATA #IMPLIED>
+<!ATTLIST draw:applet %draw-style-name;>
+<!ATTLIST draw:applet svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:applet svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:applet %zindex;>
+<!ATTLIST draw:applet draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:applet %draw-position;>
+<!ATTLIST draw:applet %draw-end-position; >
+
+<!-- plugins -->
+<!ELEMENT draw:plugin (draw:thumbnail?, draw:param*, svg:desc?)>
+<!ATTLIST draw:plugin xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:plugin xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:plugin xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:plugin xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:plugin draw:mime-type CDATA #IMPLIED>
+<!ATTLIST draw:plugin draw:name CDATA #IMPLIED>
+<!ATTLIST draw:plugin %draw-style-name;>
+<!ATTLIST draw:plugin svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:plugin svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:plugin %zindex;>
+<!ATTLIST draw:plugin draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:plugin %draw-position;>
+<!ATTLIST draw:plugin %draw-end-position; >
+
+<!-- Paramaters -->
+<!ELEMENT draw:param EMPTY>
+<!ATTLIST draw:param draw:name CDATA #IMPLIED>
+<!ATTLIST draw:param draw:value CDATA #IMPLIED>
+
+<!-- Floating Frames -->
+<!ELEMENT draw:floating-frame (draw:thumbnail?, svg:desc?)>
+<!ATTLIST draw:floating-frame xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:floating-frame xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:floating-frame xlink:show (embed) #IMPLIED>
+<!ATTLIST draw:floating-frame xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST draw:floating-frame draw:name CDATA #IMPLIED>
+<!ATTLIST draw:floating-frame draw:frame-name CDATA #IMPLIED>
+<!ATTLIST draw:floating-frame %draw-style-name;>
+<!ATTLIST draw:floating-frame svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:floating-frame svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST draw:floating-frame %zindex;>
+<!ATTLIST draw:floating-frame draw:layer %layerName; #IMPLIED>
+<!ATTLIST draw:floating-frame %draw-position;>
+<!ATTLIST draw:floating-frame %draw-end-position; >
+
+<!-- Image Maps -->
+<!ELEMENT draw:image-map
+ (draw:area-rectangle|draw:area-circle|draw:area-polygon)*>
+
+<!ELEMENT draw:area-rectangle (svg:desc?,office:events?)>
+<!ATTLIST draw:area-rectangle xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:area-rectangle xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:area-rectangle office:target-frame-name CDATA #IMPLIED>
+<!ATTLIST draw:area-rectangle xlink:show (new|replace) #IMPLIED>
+<!ATTLIST draw:area-rectangle office:name CDATA #IMPLIED>
+<!ATTLIST draw:area-rectangle draw:nohref (nohref) #IMPLIED>
+<!ATTLIST draw:area-rectangle svg:x %coordinate; #REQUIRED>
+<!ATTLIST draw:area-rectangle svg:y %coordinate; #REQUIRED>
+<!ATTLIST draw:area-rectangle svg:width %coordinate; #REQUIRED>
+<!ATTLIST draw:area-rectangle svg:height %coordinate; #REQUIRED>
+
+<!ELEMENT draw:area-circle (svg:desc?,office:events?)>
+<!ATTLIST draw:area-circle xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:area-circle xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:area-circle office:target-frame-name CDATA #IMPLIED>
+<!ATTLIST draw:area-circle xlink:show (new|replace) #IMPLIED>
+<!ATTLIST draw:area-circle office:name CDATA #IMPLIED>
+<!ATTLIST draw:area-circle draw:nohref (nohref) #IMPLIED>
+<!ATTLIST draw:area-circle svg:cx %coordinate; #REQUIRED>
+<!ATTLIST draw:area-circle svg:cy %coordinate; #REQUIRED>
+<!ATTLIST draw:area-circle svg:r %coordinate; #REQUIRED>
+
+<!ELEMENT draw:area-polygon (svg:desc?,office:events?)>
+<!ATTLIST draw:area-polygon xlink:href %uriReference; #IMPLIED>
+<!ATTLIST draw:area-polygon xlink:type (simple) #IMPLIED>
+<!ATTLIST draw:area-polygon office:target-frame-name CDATA #IMPLIED>
+<!ATTLIST draw:area-polygon xlink:show (new|replace) #IMPLIED>
+<!ATTLIST draw:area-polygon office:name CDATA #IMPLIED>
+<!ATTLIST draw:area-polygon draw:nohref (nohref) #IMPLIED>
+<!ATTLIST draw:area-polygon svg:x %coordinate; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:y %coordinate; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:width %coordinate; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:height %coordinate; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:points %points; #REQUIRED>
+<!ATTLIST draw:area-polygon svg:viewBox CDATA #REQUIRED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/dtypes.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/dtypes.mod
new file mode 100644
index 000000000000..1cdd7bf50785
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/dtypes.mod
@@ -0,0 +1,147 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: dtypes.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!-- datatypes corresponding to XML Schema Part 2 W3C Working draft of -->
+<!-- 07 April 2000 -->
+
+<!-- string -->
+<!ENTITY % string "CDATA">
+<!ENTITY % cString "#PCDATA">
+
+<!-- boolean (values are "true" and "false" -->
+<!ENTITY % boolean "CDATA">
+
+<!-- integer ( ..., -2, -1, 0, 1, 2, ...) -->
+<!ENTITY % integer "CDATA">
+
+<!-- non negative integer ( 0, 1, 2, ...) -->
+<!ENTITY % nonNegativeInteger "CDATA">
+
+<!-- positive integer ( 1, 2, ...) -->
+<!ENTITY % positiveInteger "CDATA">
+<!ENTITY % cPositiveInteger "#PCDATA">
+
+<!ENTITY % positiveNumberOrDefault "CDATA">
+
+<!-- time duration as specified by ISO8601, section 5.5.3.2 -->
+<!ENTITY % timeDuration "CDATA">
+<!ENTITY % cTimeDuration "#PCDATA">
+
+<!-- time instance as specified by ISO8601, section 5.4 -->
+<!ENTITY % timeInstance "CDATA">
+<!ENTITY % cTimeInstance "#PCDATA">
+
+<!-- date instance as specified by ISO8601, section 5.2.1.1, extended format-->
+<!ENTITY % date "CDATA">
+<!ENTITY % cDate "#PCDATA">
+
+<!-- date duration, like timDuration but truncated to full dates -->
+<!ENTITY % dateDuration "CDATA">
+<!ENTITY % cDateDuration "#PCDATA">
+
+<!-- URI reference -->
+<!ENTITY % uriReference "CDATA">
+
+<!-- language code as specified by RFC1766 -->
+<!ENTITY % language "CDATA">
+<!ENTITY % cLanguage "#PCDATA">
+
+<!-- float -->
+<!ENTITY % float "CDATA">
+
+<!-- Some other common used data types -->
+
+<!-- a single UNICODE character -->
+<!ENTITY % character "CDATA">
+
+<!-- a style name -->
+<!ENTITY % styleName "CDATA">
+
+<!-- a target frame mame -->
+<!ENTITY % targetFrameName "CDATA">
+
+<!-- a language without a country as specified by ISO639 -->
+<!ENTITY % languageOnly "CDATA">
+
+<!-- a country as specified by ISO3166 -->
+<!ENTITY % country "CDATA">
+
+<!-- a color value having the format #rrggbb -->
+<!ENTITY % color "CDATA">
+<!-- a color value having the format #rrggbb or "transparent" -->
+<!ENTITY % transparentOrColor "CDATA">
+
+<!-- a percentage -->
+<!ENTITY % percentage "CDATA">
+
+<!-- a length (i.e. 1cm or .6inch) -->
+<!ENTITY % length "CDATA">
+<!ENTITY % positiveLength "CDATA">
+<!ENTITY % nonNegativeLength "CDATA">
+<!ENTITY % lengthOrNoLimit "CDATA">
+
+<!-- a length or a percentage -->
+<!ENTITY % lengthOrPercentage "CDATA">
+<!ENTITY % positiveLengthOrPercentage "CDATA">
+
+<!-- a pixel length (i.e. 2px) -->
+<!ENTITY % nonNegativePixelLength "CDATA">
+
+<!-- a float or a percentage -->
+<!ENTITY % floatOrPercentage "CDATA">
+
+<!-- a text encoding -->
+<!ENTITY % textEncoding "CDATA">
+
+<!-- cell address and cell range address -->
+<!ENTITY % cell-address "CDATA">
+<!ENTITY % cell-range-address "CDATA">
+<!ENTITY % cell-range-address-list "CDATA">
+
+<!-- value types -->
+<!ENTITY % valueType "(float|time|date|percentage|currency|boolean|string)">
+
+<!-- an svg coordinate in different distance formats -->
+<!ENTITY % coordinate "CDATA">
+
+<!ENTITY % coordinateOrPercentage "CDATA">
+
+<!ENTITY % shape "draw:rect|draw:line|draw:polyline|draw:polygon|draw:path|
+ draw:circle|draw:ellipse|draw:g|draw:page-thumbnail|
+ draw:text-box|draw:image|draw:object|draw:object-ole|
+ draw:applet|draw:floating-frame|draw:plugin|
+ draw:measure|draw:caption|draw:connector|chart:chart|
+ dr3d:scene|draw:control" >
+<!ENTITY % shapes "(%shape;)" >
+
+<!ENTITY % anchorType "(page|frame|paragraph|char|as-char)">
+
+<!ENTITY % control-id "form:id CDATA #REQUIRED">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/form.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/form.mod
new file mode 100644
index 000000000000..7c39fe5fd43b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/form.mod
@@ -0,0 +1,312 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: form.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY % controls "form:text|form:textarea|form:fixed-text|form:file|
+ form:password|form:formatted-text|form:button|form:image|
+ form:checkbox|form:radio|form:listbox|form:combobox|form:frame|
+ form:hidden|form:image-frame|form:grid|form:generic-control">
+
+<!ENTITY % name "form:name CDATA #IMPLIED">
+<!ENTITY % service-name "form:service-name CDATA #IMPLIED">
+
+<!ENTITY % navigation "(none|current|parent)">
+<!ENTITY % cycles "(records|current|page)">
+<!ENTITY % url "CDATA">
+
+
+<!ENTITY % types "(submit|reset|push|url)">
+<!ENTITY % button-type "form:button-type %types; 'push'">
+<!ENTITY % current-selected "form:current-selected %boolean; 'false'">
+<!ENTITY % current-value "form:current-value CDATA #IMPLIED">
+<!ENTITY % value "form:value CDATA #IMPLIED">
+<!ENTITY % disabled "form:disabled %boolean; 'false'">
+<!ENTITY % dropdown "form:dropdown %boolean; 'false'">
+<!ENTITY % for "form:for CDATA #IMPLIED">
+<!ENTITY % image-data "form:image-data %url; #IMPLIED">
+<!ENTITY % label "form:label CDATA #IMPLIED">
+<!ENTITY % max-length "form:max-length CDATA #IMPLIED">
+<!ENTITY % printable "form:printable %boolean; 'true'">
+<!ENTITY % readonly "form:readonly %boolean; 'false'">
+<!ENTITY % size "form:size CDATA #IMPLIED">
+<!ENTITY % selected "form:selected %boolean; 'false'">
+<!ENTITY % size "form:size CDATA #IMPLIED">
+<!ENTITY % tab-index "form:tab-index CDATA #IMPLIED">
+<!ENTITY % target-frame "office:target-frame CDATA '_blank'">
+<!ENTITY % target-location "xlink:href %url; #IMPLIED">
+<!ENTITY % tab-stop "form:tab-stop %boolean; 'true'">
+<!ENTITY % title "form:title CDATA #IMPLIED">
+<!ENTITY % default-value "form:default-value CDATA #IMPLIED">
+<!ENTITY % bound-column "form:bound-column CDATA #IMPLIED">
+<!ENTITY % convert-empty "form:convert-empty-to-null %boolean; 'false'">
+<!ENTITY % data-field "form:data-field CDATA #IMPLIED">
+<!ENTITY % list-source "form:list-source CDATA #IMPLIED">
+<!ENTITY % list-source-types "(table|query|sql|sql-pass-through|value-list|table-fields)">
+<!ENTITY % list-source-type "form:list-source-type %list-source-types; #IMPLIED">
+
+<!ELEMENT form:control (%controls;)+>
+<!ATTLIST form:control %name;
+ %service-name;
+ %control-id;>
+
+<!ELEMENT form:form (form:properties?, office:events?, (form:control|form:form)*)>
+<!ATTLIST form:form %name; %service-name;>
+<!ATTLIST form:form xlink:href %url; #IMPLIED>
+<!ATTLIST form:form form:enctype CDATA "application/x-www-form-urlencoded">
+<!ATTLIST form:form form:method CDATA "get">
+<!ATTLIST form:form office:target-frame CDATA "_blank">
+<!ATTLIST form:form form:allow-deletes %boolean; "true">
+<!ATTLIST form:form form:allow-inserts %boolean; "true">
+<!ATTLIST form:form form:allow-updates %boolean; "true">
+<!ATTLIST form:form form:apply-filter %boolean; "false">
+<!ATTLIST form:form form:command CDATA #IMPLIED>
+<!ATTLIST form:form form:command-type (table|query|command) "command">
+<!ATTLIST form:form form:datasource CDATA #IMPLIED>
+<!ATTLIST form:form form:detail-fields CDATA #IMPLIED>
+<!ATTLIST form:form form:escape-processing %boolean; "true">
+<!ATTLIST form:form form:filter CDATA #IMPLIED>
+<!ATTLIST form:form form:ignore-result %boolean; "false">
+<!ATTLIST form:form form:master-fields CDATA #IMPLIED>
+<!ATTLIST form:form form:navigation-mode %navigation; #IMPLIED>
+<!ATTLIST form:form form:order CDATA #IMPLIED>
+<!ATTLIST form:form form:tab-cycle %cycles; #IMPLIED>
+
+<!ELEMENT office:forms (form:form*)>
+<!ATTLIST office:forms form:automatic-focus %boolean; "false">
+<!ATTLIST office:forms form:apply-design-mode %boolean; "true">
+
+<!ELEMENT form:text (form:properties?, office:events?)>
+<!ATTLIST form:text %current-value;
+ %disabled;
+ %max-length;
+ %printable;
+ %readonly;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;
+ %data-field;>
+
+<!ELEMENT form:textarea (form:properties?, office:events?)>
+<!ATTLIST form:textarea %current-value;
+ %disabled;
+ %max-length;
+ %printable;
+ %readonly;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;
+ %data-field;>
+
+<!ELEMENT form:password (form:properties?, office:events?)>
+<!ATTLIST form:password %disabled;
+ %max-length;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;>
+
+<!ATTLIST form:password form:echo-char CDATA "*">
+
+<!ELEMENT form:file (form:properties?, office:events?)>
+<!ATTLIST form:file %current-value;
+ %disabled;
+ %max-length;
+ %printable;
+ %readonly;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;>
+
+<!ELEMENT form:formatted-text (form:properties?, office:events?)>
+<!ATTLIST form:formatted-text %current-value;
+ %disabled;
+ %max-length;
+ %printable;
+ %readonly;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;
+ %data-field;>
+<!ATTLIST form:formatted-text form:max-value CDATA #IMPLIED>
+<!ATTLIST form:formatted-text form:min-value CDATA #IMPLIED>
+<!ATTLIST form:formatted-text form:validation %boolean; "false">
+
+<!ELEMENT form:fixed-text (form:properties?, office:events?)>
+<!ATTLIST form:fixed-text %for;
+ %disabled;
+ %label;
+ %printable;
+ %title;>
+<!ATTLIST form:fixed-text form:multi-line %boolean; "false">
+
+<!ELEMENT form:combobox (form:properties?, office:events?, form:item*)>
+<!ATTLIST form:combobox %current-value;
+ %disabled;
+ %dropdown;
+ %max-length;
+ %printable;
+ %readonly;
+ %size;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %convert-empty;
+ %data-field;
+ %list-source;
+ %list-source-type;>
+<!ATTLIST form:combobox form:auto-complete %boolean; #IMPLIED>
+
+<!ELEMENT form:item (#PCDATA)>
+<!ATTLIST form:item %label;>
+
+<!ELEMENT form:listbox (form:properties?, office:events?, form:option*)>
+<!ATTLIST form:listbox %disabled;
+ %dropdown;
+ %printable;
+ %size;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %bound-column;
+ %data-field;
+ %list-source;
+ %list-source-type;>
+<!ATTLIST form:listbox form:multiple %boolean; "false">
+
+<!ELEMENT form:option (#PCDATA)>
+<!ATTLIST form:option %current-selected;
+ %selected;
+ %label;
+ %value;>
+
+<!ELEMENT form:button (form:properties?, office:events?)>
+<!ATTLIST form:button %button-type;
+ %disabled;
+ %label;
+ %image-data;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %target-frame;
+ %target-location;
+ %title;
+ %value;>
+<!ATTLIST form:button form:default-button %boolean; "false">
+
+<!ELEMENT form:image (form:properties?, office:events?)>
+<!ATTLIST form:image %button-type;
+ %disabled;
+ %image-data;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %target-frame;
+ %target-location;
+ %title;
+ %value;>
+
+<!ELEMENT form:checkbox (form:properties?, office:events?)>
+<!ATTLIST form:checkbox %disabled;
+ %label;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %data-field;>
+<!ENTITY % states "(unchecked|checked|unknown)">
+<!ATTLIST form:checkbox form:current-state %states; #IMPLIED>
+<!ATTLIST form:checkbox form:is-tristate %boolean; "false">
+<!ATTLIST form:checkbox form:state %states; "unchecked">
+
+<!ELEMENT form:radio (form:properties?, office:events?)>
+<!ATTLIST form:radio %current-selected;
+ %disabled;
+ %label;
+ %printable;
+ %selected;
+ %tab-index;
+ %tab-stop;
+ %title;
+ %value;
+ %data-field;>
+
+<!ELEMENT form:frame (form:properties?, office:events?)>
+<!ATTLIST form:frame %disabled;
+ %for;
+ %label;
+ %printable;
+ %title;>
+
+<!ELEMENT form:image-frame (form:properties?, office:events?)>
+<!ATTLIST form:image-frame %disabled;
+ %image-data;
+ %printable;
+ %readonly;
+ %title;
+ %data-field;>
+
+<!ELEMENT form:hidden (form:properties?, office:events?)>
+<!ATTLIST form:hidden %name;
+ %service-name;
+ %value;>
+
+<!ELEMENT form:grid (form:properties?, office:events?, form:column*)>
+<!ATTLIST form:grid %disabled;
+ %printable;
+ %tab-index;
+ %tab-stop;
+ %title;>
+<!ENTITY % column-type "form:text| form:textarea| form:formatted-text|form:checkbox| form:listbox| form:combobox">
+<!ELEMENT form:column (%column-type;)+>
+<!ATTLIST form:column %name;
+ %service-name;
+ %label;>
+
+<!ELEMENT form:generic-control (form:properties?, office:events?)>
+
+
+<!ELEMENT form:properties (form:property+)>
+<!ELEMENT form:property (form:property-value*)>
+<!ATTLIST form:property form:property-is-list %boolean; #IMPLIED>
+<!ATTLIST form:property form:property-name CDATA #REQUIRED>
+<!ATTLIST form:property form:property-type (boolean|short|int|long|double|string) #REQUIRED>
+<!ELEMENT form:property-value (#PCDATA)>
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/meta.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/meta.mod
new file mode 100644
index 000000000000..0bef2535bcbf
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/meta.mod
@@ -0,0 +1,94 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: meta.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+
+<!ELEMENT meta:generator (%cString;)>
+
+<!ELEMENT dc:title (%cString;)>
+
+<!ELEMENT dc:description (%cString;)>
+
+<!ELEMENT dc:subject (%cString;)>
+
+<!ELEMENT meta:keywords (meta:keyword)*>
+<!ELEMENT meta:keyword (%cString;)>
+
+<!ELEMENT meta:initial-creator (%cString;)>
+
+<!ELEMENT dc:creator (%cString;)>
+
+<!ELEMENT meta:printed-by (%cString;)>
+
+<!ELEMENT meta:creation-date (%cTimeInstance;)>
+
+<!ELEMENT dc:date (%cTimeInstance;)>
+
+<!ELEMENT meta:print-date (%cTimeInstance;)>
+
+<!ELEMENT meta:template EMPTY>
+<!ATTLIST meta:template xlink:type (simple) #FIXED "simple">
+<!ATTLIST meta:template xlink:actuate (onRequest) "onRequest">
+<!ATTLIST meta:template xlink:href %uriReference; #REQUIRED>
+<!ATTLIST meta:template xlink:title %string; #IMPLIED>
+<!ATTLIST meta:template meta:date %timeInstance; #IMPLIED>
+
+<!ELEMENT meta:auto-reload EMPTY>
+<!ATTLIST meta:auto-reload xlink:type (simple) #IMPLIED>
+<!ATTLIST meta:auto-reload xlink:show (replace) #IMPLIED>
+<!ATTLIST meta:auto-reload xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST meta:auto-reload xlink:href %uriReference; #IMPLIED>
+<!ATTLIST meta:auto-reload meta:delay %timeDuration; "P0S">
+
+<!ELEMENT meta:hyperlink-behaviour EMPTY>
+<!ATTLIST meta:hyperlink-behaviour office:target-frame-name %targetFrameName; #IMPLIED>
+<!ATTLIST meta:hyperlink-behaviour xlink:show (new|replace) #IMPLIED>
+
+<!ELEMENT dc:language (%cLanguage;)>
+
+<!ELEMENT meta:editing-cycles (%cPositiveInteger;)>
+
+<!ELEMENT meta:editing-duration (%cTimeDuration;)>
+
+<!ELEMENT meta:user-defined (%cString;)>
+<!ATTLIST meta:user-defined meta:name %string; #REQUIRED>
+
+<!ELEMENT meta:document-statistic EMPTY>
+<!ATTLIST meta:document-statistic meta:page-count %positiveInteger; #IMPLIED
+ meta:table-count %nonNegativeInteger; #IMPLIED
+ meta:draw-count %nonNegativeInteger; #IMPLIED
+ meta:image-count %nonNegativeInteger; #IMPLIED
+ meta:ole-object-count %nonNegativeInteger; #IMPLIED
+ meta:paragraph-count %nonNegativeInteger; #IMPLIED
+ meta:word-count %nonNegativeInteger; #IMPLIED
+ meta:character-count %nonNegativeInteger; #IMPLIED
+ meta:row-count %nonNegativeInteger; #IMPLIED
+ meta:cell-count %nonNegativeInteger; #IMPLIED
+ meta:object-count %positiveInteger; #IMPLIED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/nmspace.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/nmspace.mod
new file mode 100644
index 000000000000..3dd3c4177c82
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/nmspace.mod
@@ -0,0 +1,54 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: nmspace.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY nFO "http://www.w3.org/1999/XSL/Format">
+<!ENTITY nXLink "http://www.w3.org/1999/xlink">
+<!ENTITY nSVG "http://www.w3.org/2000/svg">
+
+<!-- StarOffice namespace names and prefixes -->
+
+<!ENTITY nOpenOffice "http://openoffice.org/2000">
+<!ENTITY nOpenOffice2001 "http://openoffice.org/2001">
+
+<!ENTITY nOffice "&nOpenOffice;/office">
+<!ENTITY nStyle "&nOpenOffice;/style">
+<!ENTITY nText "&nOpenOffice;/text">
+<!ENTITY nTable "&nOpenOffice;/table">
+<!ENTITY nMeta "&nOpenOffice;/meta">
+<!ENTITY nScript "&nOpenOffice;/script">
+<!ENTITY nDraw "&nOpenOffice;/drawing">
+<!ENTITY nChart "&nOpenOffice;/chart">
+<!ENTITY nNumber "&nOpenOffice;/datastyle">
+<!ENTITY nConfig "&nOpenOffice2001;/config">
+
+
+<!-- dublin core namespace name and prefic -->
+<!ENTITY nDC "http://purl.org/dc/elements/1.1/">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.dtd b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.dtd
new file mode 100644
index 000000000000..ef73319720b1
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.dtd
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: office.dtd,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY % dtypes-mod SYSTEM "dtypes.mod">
+%dtypes-mod;
+<!ENTITY % nmspace-mod SYSTEM "nmspace.mod">
+%nmspace-mod;
+<!ENTITY % style-mod SYSTEM "style.mod">
+%style-mod;
+<!ENTITY % office-mod SYSTEM "office.mod">
+%office-mod;
+<!ENTITY % meta-mod SYSTEM "meta.mod">
+%meta-mod;
+<!ENTITY % script-mod SYSTEM "script.mod">
+%script-mod;
+<!ENTITY % drawing-mod SYSTEM "drawing.mod">
+%drawing-mod;
+<!ENTITY % text-mod SYSTEM "text.mod">
+%text-mod;
+<!ENTITY % table-mod SYSTEM "table.mod">
+%table-mod;
+<!ENTITY % chart-mod SYSTEM "chart.mod">
+%chart-mod;
+<!ENTITY % datastyl-mod SYSTEM "datastyl.mod">
+%datastyl-mod;
+<!ENTITY % form-mod SYSTEM "form.mod">
+%form-mod;
+<!ENTITY % settings-mod SYSTEM "settings.mod">
+%settings-mod;
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.mod
new file mode 100644
index 000000000000..ed543b22a520
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.mod
@@ -0,0 +1,238 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: office.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT office:document ( office:meta?,
+ office:settings?,
+ office:script?,
+ office:font-decls?,
+ office:styles?,
+ office:automatic-styles?,
+ office:master-styles?,
+ office:body ) >
+
+<!ATTLIST office:document xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document xmlns:meta CDATA #FIXED "&nMeta;">
+<!ATTLIST office:document xmlns:script CDATA #FIXED "&nScript;">
+<!ATTLIST office:document xmlns:style CDATA #FIXED "&nStyle;">
+<!ATTLIST office:document xmlns:text CDATA #FIXED "&nText;">
+<!ATTLIST office:document xmlns:table CDATA #FIXED "&nTable;">
+<!ATTLIST office:document xmlns:draw CDATA #FIXED "&nDraw;">
+<!ATTLIST office:document xmlns:chart CDATA #FIXED "&nChart;">
+<!ATTLIST office:document xmlns:number CDATA #FIXED "&nNumber;">
+<!ATTLIST office:document xmlns:fo CDATA #FIXED "&nFO;">
+<!ATTLIST office:document xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document xmlns:svg CDATA #FIXED "&nSVG;">
+<!ATTLIST office:document xmlns:dc CDATA #FIXED "&nDC;">
+
+<!ATTLIST office:document office:class
+ (text|text-global|
+ drawing|presentation|
+ spreadsheet|chart) #REQUIRED>
+
+<!ATTLIST office:document office:version %string; #IMPLIED>
+
+<!-- document-styles -->
+<!ELEMENT office:document-styles (
+ office:font-decls?,
+ office:styles?,
+ office:automatic-styles?,
+ office:master-styles? ) >
+
+<!ATTLIST office:document-styles xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document-styles xmlns:meta CDATA #FIXED "&nMeta;">
+<!ATTLIST office:document-styles xmlns:script CDATA #FIXED "&nScript;">
+<!ATTLIST office:document-styles xmlns:style CDATA #FIXED "&nStyle;">
+<!ATTLIST office:document-styles xmlns:text CDATA #FIXED "&nText;">
+<!ATTLIST office:document-styles xmlns:table CDATA #FIXED "&nTable;">
+<!ATTLIST office:document-styles xmlns:draw CDATA #FIXED "&nDraw;">
+<!ATTLIST office:document-styles xmlns:chart CDATA #FIXED "&nChart;">
+<!ATTLIST office:document-styles xmlns:number CDATA #FIXED "&nNumber;">
+<!ATTLIST office:document-styles xmlns:fo CDATA #FIXED "&nFO;">
+<!ATTLIST office:document-styles xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document-styles xmlns:svg CDATA #FIXED "&nSVG;">
+<!ATTLIST office:document-styles xmlns:dc CDATA #FIXED "&nDC;">
+
+<!ATTLIST office:document-styles office:version %string; #IMPLIED>
+
+<!-- document-content -->
+
+<!ELEMENT office:document-content (
+ office:script?,
+ office:font-decls?,
+ office:automatic-styles?,
+ office:body ) >
+
+<!ATTLIST office:document-content xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document-content xmlns:meta CDATA #FIXED "&nMeta;">
+<!ATTLIST office:document-content xmlns:script CDATA #FIXED "&nScript;">
+<!ATTLIST office:document-content xmlns:style CDATA #FIXED "&nStyle;">
+<!ATTLIST office:document-content xmlns:text CDATA #FIXED "&nText;">
+<!ATTLIST office:document-content xmlns:table CDATA #FIXED "&nTable;">
+<!ATTLIST office:document-content xmlns:draw CDATA #FIXED "&nDraw;">
+<!ATTLIST office:document-content xmlns:chart CDATA #FIXED "&nChart;">
+<!ATTLIST office:document-content xmlns:number CDATA #FIXED "&nNumber;">
+<!ATTLIST office:document-content xmlns:fo CDATA #FIXED "&nFO;">
+<!ATTLIST office:document-content xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document-content xmlns:svg CDATA #FIXED "&nSVG;">
+<!ATTLIST office:document-content xmlns:dc CDATA #FIXED "&nDC;">
+
+<!ATTLIST office:document-content office:class
+ (text|text-global|
+ drawing|presentation|
+ spreadsheet|chart) #REQUIRED>
+
+<!ATTLIST office:document-content office:version %string; #IMPLIED>
+
+<!-- document-content -->
+
+<!ELEMENT office:document-meta ( office:meta? ) >
+
+<!ATTLIST office:document-meta xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document-meta xmlns:meta CDATA #FIXED "&nMeta;">
+<!ATTLIST office:document-meta xmlns:script CDATA #FIXED "&nScript;">
+<!ATTLIST office:document-meta xmlns:style CDATA #FIXED "&nStyle;">
+<!ATTLIST office:document-meta xmlns:text CDATA #FIXED "&nText;">
+<!ATTLIST office:document-meta xmlns:table CDATA #FIXED "&nTable;">
+<!ATTLIST office:document-meta xmlns:draw CDATA #FIXED "&nDraw;">
+<!ATTLIST office:document-meta xmlns:chart CDATA #FIXED "&nChart;">
+<!ATTLIST office:document-meta xmlns:number CDATA #FIXED "&nNumber;">
+<!ATTLIST office:document-meta xmlns:fo CDATA #FIXED "&nFO;">
+<!ATTLIST office:document-meta xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document-meta xmlns:svg CDATA #FIXED "&nSVG;">
+<!ATTLIST office:document-meta xmlns:dc CDATA #FIXED "&nDC;">
+
+<!ATTLIST office:document-meta office:version %string; #IMPLIED>
+
+<!ELEMENT office:document-settings (office:settings) >
+<!ATTLIST office:document-settings xmlns:office CDATA #FIXED "&nOffice;">
+<!ATTLIST office:document-settings xmlns:xlink CDATA #FIXED "&nXLink;">
+<!ATTLIST office:document-settings xmlns:config CDATA #FIXED "&nConfig;">
+
+<!ATTLIST office:document-settings office:version %string; #IMPLIED>
+
+<!ENTITY % meta "(meta:generator?,
+ dc:title?,
+ dc:description?,
+ dc:subject?,
+ meta:initial-creator?,
+ meta:creation-date?,
+ dc:creator?,
+ dc:date?,
+ meta:printed-by?,
+ meta:print-date?,
+ meta:keywords?,
+ dc:language?,
+ meta:editing-cycles?,
+ meta:editing-duration?,
+ meta:hyperlink-behaviour?,
+ meta:auto-reload?,
+ meta:template?,
+ meta:user-defined*,
+ meta:document-statistic?)">
+<!ELEMENT office:meta %meta;>
+
+<!ENTITY % script "(script:library-embedded |
+ script:library-linked)*">
+<!ELEMENT office:script %script;>
+
+<!ELEMENT office:font-decls (style:font-decl)*>
+
+<!ENTITY % styles "(style:default-style|style:style|text:list-style|
+ number:number-style|number:currency-style|number:percentage-style|
+ number:date-style|number:time-style|number:boolean-style|
+ number:text-style|
+ draw:gradient|draw:hatch|draw:fill-image|draw:marker|draw:stroke-dash|
+ style:presentation-page-layout|draw:transparency)">
+
+<!-- Validity constraint: The elements
+ text:outline-style,
+ text:footnotes-configuration,
+ text:endnotes-configuration,
+ text:bibliography-configuration and
+ text:linenumbering-configuration
+ may appear only once!
+ Unfortunatetly, this constraint cannot be easily specified in the DTD.
+-->
+<!ELEMENT office:styles (%styles;|text:outline-style|
+ text:footnotes-configuration|text:endnotes-configuration|
+ text:bibliography-configuration|text:linenumbering-configuration)*>
+
+<!ELEMENT office:automatic-styles (%styles;|style:page-master)*>
+
+<!ELEMENT office:master-styles (draw:layer-set?,style:handout-master?,style:master-page*) >
+
+<!ENTITY % text-decls "text:variable-decls?, text:sequence-decls?,
+ text:user-field-decls?, text:dde-connection-decls?,
+ text:alphabetical-index-auto-mark-file?" >
+
+<!ENTITY % change-marks "text:change | text:change-start | text:change-end">
+
+<!ENTITY % body "(office:forms?,(text:tracked-changes|table:tracked-changes)?,%text-decls;,table:calculation-settings?,table:content-validations?,table:label-ranges?,
+ (text:h|text:p|text:ordered-list|
+ text:unordered-list|table:table|draw:page|
+ draw:a|%shape;|text:section|text:table-of-content|
+ text:illustration-index|text:table-index|text:object-index|
+ text:user-index|text:alphabetical-index|text:bibliography|
+ %change-marks;)*,
+ table:named-expressions?,
+ table:database-ranges?,table:data-pilot-tables?,
+ table:consolidation?,
+ table:dde-links?,
+ presentation:settings?)">
+<!ELEMENT office:body %body;>
+<!ATTLIST office:body table:structure-protected %boolean; "false"
+ table:protection-key CDATA #IMPLIED>
+
+<!ELEMENT office:events (script:event|presentation:event)*>
+
+<!-- DDE source: for text sections and tables -->
+<!ELEMENT office:dde-source EMPTY>
+<!ATTLIST office:dde-source office:dde-application CDATA #IMPLIED>
+<!ATTLIST office:dde-source office:dde-topic CDATA #IMPLIED>
+<!ATTLIST office:dde-source office:dde-item CDATA #IMPLIED>
+<!ATTLIST office:dde-source office:automatic-update %boolean; "false">
+<!ATTLIST office:dde-source office:name CDATA #IMPLIED>
+<!ATTLIST office:dde-source table:conversion-mode (into-default-style-data-style|into-english-number|let-text) "into-default-style-data-style" >
+
+<!-- annotations -->
+<!-- limitation: in the current implementation, only plain text inside of
+ paragraphs is supported -->
+<!ELEMENT office:annotation (text:p)*>
+<!ATTLIST office:annotation office:author %string; #IMPLIED>
+<!ATTLIST office:annotation office:create-date %date; #IMPLIED>
+<!ATTLIST office:annotation office:create-date-string %string; #IMPLIED>
+<!ATTLIST office:annotation office:display %boolean; "false">
+
+<!ELEMENT office:change-info (text:p)*>
+<!ATTLIST office:change-info office:chg-author %string; #REQUIRED>
+<!ATTLIST office:change-info office:chg-date-time %timeInstance; #REQUIRED>
+
+<!ELEMENT office:binary-data (#PCDATA)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/script.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/script.mod
new file mode 100644
index 000000000000..81220e346f20
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/script.mod
@@ -0,0 +1,55 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: script.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT script:library-embedded (script:module*)>
+<!ATTLIST script:library-embedded script:name %string; #REQUIRED>
+<!ATTLIST script:library-embedded script:password %string; #IMPLIED>
+
+<!ELEMENT script:library-linked EMPTY>
+<!ATTLIST script:library-linked script:name %string; #REQUIRED>
+<!ATTLIST script:library-linked xlink:href %string; #REQUIRED>
+<!ATTLIST script:library-linked xlink:type (simple) #FIXED "simple">
+
+<!ELEMENT script:module (#PCDATA)>
+<!ATTLIST script:module script:name %string; #REQUIRED>
+<!ATTLIST script:module script:language %string; #IMPLIED>
+
+
+<!ENTITY % script-language "script:language %string; #REQUIRED">
+<!ENTITY % event-name "script:event-name %string; #REQUIRED">
+<!ENTITY % location "script:location (document|application) #REQUIRED">
+<!ENTITY % macro-name "script:macro-name %string; #REQUIRED">
+
+<!ELEMENT script:event (#PCDATA)>
+<!ATTLIST script:event %script-language;
+ %event-name;
+ %location;
+ %macro-name;>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/settings.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/settings.mod
new file mode 100644
index 000000000000..5ba8f38f3ba6
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/settings.mod
@@ -0,0 +1,53 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: settings.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT office:settings (config:config-item-set+)>
+
+<!ENTITY % items "(config:config-item |
+ config:config-item-set |
+ config:config-item-map-named |
+ config:config-item-map-indexed)+">
+
+<!ELEMENT config:config-item-set %items;>
+<!ATTLIST config:config-item-set config:name CDATA #REQUIRED>
+
+<!ELEMENT config:config-item (#PCDATA)>
+<!ATTLIST config:config-item config:name CDATA #REQUIRED
+ config:type (boolean | short | int | long | double | string | datetime | base64Binary) #REQUIRED>
+
+<!ELEMENT config:config-item-map-named (config:config-item-map-entry)+>
+<!ATTLIST config:config-item-map-named config:name CDATA #REQUIRED>
+
+<!ELEMENT config:config-item-map-indexed (config:config-item-map-entry)+>
+<!ATTLIST config:config-item-map-indexed config:name CDATA #REQUIRED>
+
+<!ELEMENT config:config-item-map-entry %items;>
+<!ATTLIST config:config-item-map-entry config:name CDATA #IMPLIED>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/style.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/style.mod
new file mode 100644
index 000000000000..5c5b3dca3c4b
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/style.mod
@@ -0,0 +1,395 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: style.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT style:font-decl EMPTY>
+<!ATTLIST style:font-decl style:name %string; #REQUIRED>
+<!ATTLIST style:font-decl fo:font-family %string; #REQUIRED>
+<!ATTLIST style:font-decl style:font-style-name %string; #IMPLIED>
+<!ENTITY % fontFamilyGeneric "(roman|swiss|modern|decorative|script|system)">
+<!ATTLIST style:font-decl style:font-family-generic %fontFamilyGeneric;
+ #IMPLIED>
+<!ENTITY % fontPitch "(fixed|variable)">
+<!ATTLIST style:font-decl style:font-pitch %fontPitch; #IMPLIED>
+<!ATTLIST style:font-decl style:font-charset %textEncoding; #IMPLIED>
+
+<!ELEMENT style:style ( style:properties?,office:events?,style:map*)>
+
+<!ATTLIST style:style style:name %styleName; #REQUIRED>
+
+<!ENTITY % styleFamily "(paragraph|text|section|
+ table|table-column|table-row|table-cell|table-page|chart|graphics|default|drawing-page|presentation|control)">
+<!ATTLIST style:style style:family %styleFamily; #REQUIRED>
+
+<!ATTLIST style:style style:parent-style-name %styleName; #IMPLIED>
+<!ATTLIST style:style style:master-page-name %styleName; #IMPLIED>
+<!ATTLIST style:style style:next-style-name %styleName; #IMPLIED>
+<!ATTLIST style:style style:list-style-name %styleName; #IMPLIED>
+<!ATTLIST style:style style:data-style-name %styleName; #IMPLIED>
+
+<!ATTLIST style:style style:auto-update %boolean; "false">
+
+<!ATTLIST style:style style:class %string; #IMPLIED>
+
+<!ELEMENT style:default-style (style:properties?)>
+<!ATTLIST style:default-style style:family %styleFamily; #REQUIRED>
+
+<!ELEMENT style:map EMPTY>
+
+<!ATTLIST style:map style:condition %string; #REQUIRED>
+<!ATTLIST style:map style:apply-style-name %styleName; #REQUIRED>
+<!ATTLIST style:map style:base-cell-address %cell-address; #IMPLIED>
+
+<!ELEMENT style:properties ANY>
+
+<!-- number format properties -->
+<!ATTLIST style:properties style:num-prefix %string; #IMPLIED>
+<!ATTLIST style:properties style:num-suffix %string; #IMPLIED>
+<!ATTLIST style:properties style:num-format %string; #IMPLIED>
+<!ATTLIST style:properties style:num-letter-sync %boolean; #IMPLIED>
+
+<!-- frame properties -->
+<!ATTLIST style:properties fo:width %positiveLength; #IMPLIED>
+<!ATTLIST style:properties fo:height %positiveLength; #IMPLIED>
+<!ATTLIST style:properties style:vertical-pos (top|middle|bottom|from-top) #IMPLIED>
+<!ATTLIST style:properties style:vertical-rel (page|page-content|
+ frame|frame-content|
+ paragraph|paragraph-content|char|
+ line|baseline|text) #IMPLIED>
+<!ATTLIST style:properties style:horizontal-pos (left|center|right|from-left|inside|outside|from-inside) #IMPLIED>
+<!ATTLIST style:properties style:horizontal-rel (page|page-content|
+ frame|frame-content|
+ paragraph|paragraph-content|
+ char) #IMPLIED>
+<!ATTLIST style:properties svg:width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties svg:height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:min-height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:min-width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:max-height %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:max-width %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties text:anchor-type %anchorType; #IMPLIED>
+<!ATTLIST style:properties text:anchor-page-number %positiveInteger; #IMPLIED>
+<!ATTLIST style:properties svg:x %coordinate; #IMPLIED>
+<!ATTLIST style:properties svg:y %coordinate; #IMPLIED>
+<!ATTLIST style:properties style:print-content %boolean; #IMPLIED>
+<!ATTLIST style:properties style:protect %boolean; #IMPLIED>
+<!ATTLIST style:properties style:wrap (none|left|right|parallel|dynamic|run-through) #IMPLIED>
+<!ENTITY % noLimitOrPositiveInteger "CDATA">
+<!ATTLIST style:properties style:number-wrapped-paragraphs %noLimitOrPositiveInteger; #IMPLIED>
+<!ATTLIST style:properties style:wrap-contour %boolean; #IMPLIED>
+<!ATTLIST style:properties style:wrap-contour-mode (full|outside) #IMPLIED>
+<!ATTLIST style:properties style:run-through (foreground|background) #IMPLIED>
+<!ATTLIST style:properties style:editable %boolean; #IMPLIED>
+<!ATTLIST style:properties style:mirror CDATA #IMPLIED>
+<!ATTLIST style:properties fo:clip CDATA #IMPLIED>
+<!ATTLIST style:properties text:animation (none|scroll|alternate|slide) #IMPLIED>
+<!ATTLIST style:properties text:animation-direction (left|right|up|down) #IMPLIED>
+<!ATTLIST style:properties text:animation-start-inside %boolean; #IMPLIED>
+<!ATTLIST style:properties text:animation-stop-inside %boolean; #IMPLIED>
+<!ATTLIST style:properties text:animation-repeat %integer; #IMPLIED>
+<!ATTLIST style:properties text:animation-delay %timeDuration; #IMPLIED>
+<!ATTLIST style:properties text:animation-steps %length; #IMPLIED>
+
+<!-- text properties -->
+<!ATTLIST style:properties fo:font-variant (normal|small-caps) #IMPLIED>
+<!ATTLIST style:properties fo:text-transform (none|lowercase|
+ uppercase|capitalize) #IMPLIED>
+<!ATTLIST style:properties fo:color %color; #IMPLIED>
+<!ATTLIST style:properties style:use-window-font-color %boolean; #IMPLIED>
+<!ATTLIST style:properties style:text-outline %boolean; #IMPLIED>
+<!ATTLIST style:properties style:text-crossing-out
+ (none|single-line|double-line|thick-line|slash|X)
+ #IMPLIED>
+<!ATTLIST style:properties style:text-position CDATA #IMPLIED>
+<!ATTLIST style:properties style:text-align (left|right|start|center|end|justify|justified) #IMPLIED>
+
+<!ATTLIST style:properties style:font-name %string; #IMPLIED>
+<!ATTLIST style:properties fo:font-family %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-generic %fontFamilyGeneric;
+ #IMPLIED>
+<!ATTLIST style:properties style:font-style-name %string; #IMPLIED>
+<!ATTLIST style:properties style:font-pitch %fontPitch; #IMPLIED>
+<!ATTLIST style:properties style:font-charset %textEncoding; #IMPLIED>
+<!ATTLIST style:properties style:font-name-asian %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-asian %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-generic-asian %fontFamilyGeneric;
+ #IMPLIED>
+<!ATTLIST style:properties style:font-style-name-asian %string; #IMPLIED>
+<!ATTLIST style:properties style:font-pitch-asian %fontPitch; #IMPLIED>
+<!ATTLIST style:properties style:font-charset-asian %textEncoding; #IMPLIED>
+<!ATTLIST style:properties style:font-name-complex %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-complex %string; #IMPLIED>
+<!ATTLIST style:properties style:font-family-generic-complex %fontFamilyGeneric;
+ #IMPLIED>
+<!ATTLIST style:properties style:font-style-name-complex %string; #IMPLIED>
+<!ATTLIST style:properties style:font-pitch-complex %fontPitch; #IMPLIED>
+<!ATTLIST style:properties style:font-charset-complex %textEncoding; #IMPLIED>
+
+<!ATTLIST style:properties fo:font-size %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties style:font-size-rel %length; #IMPLIED>
+<!ATTLIST style:properties style:font-size-asian %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties style:font-size-rel-asian %length; #IMPLIED>
+<!ATTLIST style:properties style:font-size-complex %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties style:font-size-rel-complex %length; #IMPLIED>
+<!ENTITY % normalOrLength "CDATA">
+<!ATTLIST style:properties fo:letter-spacing %normalOrLength; #IMPLIED>
+<!ATTLIST style:properties fo:language %languageOnly; #IMPLIED>
+<!ATTLIST style:properties style:language-asian %languageOnly; #IMPLIED>
+<!ATTLIST style:properties style:language-complex %languageOnly; #IMPLIED>
+<!ATTLIST style:properties fo:country %country; #IMPLIED>
+<!ATTLIST style:properties style:country-asian %country; #IMPLIED>
+<!ATTLIST style:properties style:country-complex %country; #IMPLIED>
+<!ENTITY % fontStyle "(normal|italic|oblique)">
+<!ATTLIST style:properties fo:font-style %fontStyle; #IMPLIED>
+<!ATTLIST style:properties style:font-style-asian %fontStyle; #IMPLIED>
+<!ATTLIST style:properties style:font-style-complex %fontStyle; #IMPLIED>
+<!ENTITY % fontRelief "(none|embossed|engraved)">
+<!ATTLIST style:properties style:font-relief %fontRelief; #IMPLIED>
+<!ATTLIST style:properties fo:text-shadow CDATA #IMPLIED>
+<!ATTLIST style:properties style:text-underline
+ (none|single|double|dotted|dash|long-dash|dot-dash|
+ dot-dot-dash|wave|bold|bold-dotted|bold-dash|
+ bold-long-dash|bold-dot-dash|bold-dot-dot-dash|
+ bold-wave|double-wave|small-wave) #IMPLIED>
+<!ATTLIST style:properties style:text-autospace (none | ideograph-alpha) #IMPLIED>
+<!ATTLIST style:properties style:punctuation-wrap (simple | hanging) #IMPLIED>
+<!ATTLIST style:properties style:line-break (normal | strict) #IMPLIED>
+<!ENTITY % fontColorOrColor "CDATA">
+<!ATTLIST style:properties style:text-underline-color %fontColorOrColor;
+ #IMPLIED>
+<!ATTLIST style:properties fo:font-weight CDATA #IMPLIED>
+<!ATTLIST style:properties style:font-weight-asian CDATA #IMPLIED>
+<!ATTLIST style:properties style:font-weight-complex CDATA #IMPLIED>
+<!ATTLIST style:properties fo:score-spaces %boolean; #IMPLIED>
+<!ATTLIST style:properties style:letter-kerning %boolean; #IMPLIED>
+<!ATTLIST style:properties style:text-blinking %boolean; #IMPLIED>
+<!ATTLIST style:properties style:text-background-color %transparentOrColor;
+ #IMPLIED>
+
+<!ATTLIST style:properties style:text-combine (none|letters|lines) #IMPLIED>
+<!ATTLIST style:properties style:text-combine-start-char %character; #IMPLIED>
+<!ATTLIST style:properties style:text-combine-end-char %character; #IMPLIED>
+<!ATTLIST style:properties style:text-emphasize CDATA #IMPLIED>
+<!ATTLIST style:properties style:text-scale %percentage; #IMPLIED>
+<!ATTLIST style:properties style:text-rotation-angle %integer; #IMPLIED>
+<!ATTLIST style:properties style:text-rotation-scale (fixed|line-height) #IMPLIED>
+
+<!-- paragraph properties -->
+<!ENTITY % nonNegativeLengthOrPercentageOrNormal "CDATA">
+<!ATTLIST style:properties fo:line-height
+ %nonNegativeLengthOrPercentageOrNormal; #IMPLIED>
+<!ATTLIST style:properties style:line-height-at-least %nonNegativeLength;
+ #IMPLIED>
+<!ATTLIST style:properties style:line-spacing %length; #IMPLIED>
+<!ATTLIST style:properties fo:text-align (start|end|center|justify) #IMPLIED>
+<!ATTLIST style:properties fo:text-align-last (start|center|justify) #IMPLIED>
+<!ATTLIST style:properties style:text-align-source (fix|value-type) #IMPLIED>
+<!ATTLIST style:properties style:justify-single-word %boolean; #IMPLIED>
+<!ATTLIST style:properties style:break-inside (auto|avoid) #IMPLIED>
+<!ATTLIST style:properties fo:widows %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties fo:orphans %nonNegativeInteger; #IMPLIED>
+
+<!ATTLIST style:properties fo:hyphenate %boolean; #IMPLIED>
+<!ATTLIST style:properties fo:hyphenate-keep (none|page) #IMPLIED>
+<!ATTLIST style:properties fo:hyphenation-remain-char-count %positiveInteger;
+ #IMPLIED>
+<!ATTLIST style:properties fo:hyphenation-push-char-count %positiveInteger;
+ #IMPLIED>
+<!ATTLIST style:properties fo:hyphenation-ladder-count
+ %noLimitOrPositiveInteger; #IMPLIED>
+<!ATTLIST style:properties style:page-number %positiveInteger; #IMPLIED>
+
+<!ELEMENT style:tab-stops (style:tab-stop)*>
+<!ELEMENT style:tab-stop EMPTY>
+<!ATTLIST style:tab-stop style:position %nonNegativeLength; #REQUIRED>
+<!ATTLIST style:tab-stop style:type (left|center|right|char|default) "left">
+<!ATTLIST style:tab-stop style:char %character; #IMPLIED>
+<!ATTLIST style:tab-stop style:leader-char %character; " ">
+
+<!ELEMENT style:drop-cap EMPTY>
+<!ENTITY % wordOrPositiveInteger "CDATA">
+<!ATTLIST style:drop-cap style:length %wordOrPositiveInteger; "1">
+<!ATTLIST style:drop-cap style:lines %positiveInteger; "1">
+<!ATTLIST style:drop-cap style:distance %length; "0cm">
+<!ATTLIST style:drop-cap style:style-name %styleName; #IMPLIED>
+
+<!ATTLIST style:properties style:register-true %boolean; #IMPLIED>
+<!ATTLIST style:properties style:register-truth-ref-style-name %styleName; #IMPLIED>
+<!ATTLIST style:properties fo:margin-left %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:margin-right %positiveLengthOrPercentage;
+ #IMPLIED>
+<!ATTLIST style:properties fo:text-indent %lengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties style:auto-text-indent %boolean; #IMPLIED>
+<!ATTLIST style:properties fo:margin-top %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:margin-bottom %positiveLengthOrPercentage; #IMPLIED>
+<!ATTLIST style:properties fo:break-before (auto|column|page) #IMPLIED>
+<!ATTLIST style:properties fo:break-after (auto|column|page) #IMPLIED>
+<!ATTLIST style:properties fo:background-color %transparentOrColor; #IMPLIED>
+
+<!ELEMENT style:background-image (office:binary-data?)>
+<!ATTLIST style:background-image xlink:type (simple) #IMPLIED>
+<!ATTLIST style:background-image xlink:href %uriReference; #IMPLIED>
+<!ATTLIST style:background-image xlink:show (embed) #IMPLIED>
+<!ATTLIST style:background-image xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST style:background-image style:repeat (no-repeat|repeat|stretch)
+ "repeat">
+<!ATTLIST style:background-image style:position CDATA "center">
+<!ATTLIST style:background-image style:filter-name %string; #IMPLIED>
+
+<!ELEMENT style:symbol-image (office:binary-data?)>
+<!ATTLIST style:symbol-image xlink:type (simple) #IMPLIED>
+<!ATTLIST style:symbol-image xlink:href %uriReference; #IMPLIED>
+<!ATTLIST style:symbol-image xlink:show (embed) #IMPLIED>
+<!ATTLIST style:symbol-image xlink:actuate (onLoad) #IMPLIED>
+
+<!ATTLIST style:properties fo:border CDATA #IMPLIED>
+<!ATTLIST style:properties fo:border-top CDATA #IMPLIED>
+<!ATTLIST style:properties fo:border-bottom CDATA #IMPLIED>
+<!ATTLIST style:properties fo:border-left CDATA #IMPLIED>
+<!ATTLIST style:properties fo:border-right CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width-top CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width-bottom CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width-left CDATA #IMPLIED>
+<!ATTLIST style:properties style:border-line-width-right CDATA #IMPLIED>
+<!ATTLIST style:properties fo:padding %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties fo:padding-top %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties fo:padding-bottom %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties fo:padding-left %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties fo:padding-right %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties style:shadow CDATA #IMPLIED>
+<!ATTLIST style:properties fo:keep-with-next %boolean; #IMPLIED>
+
+<!ATTLIST style:properties text:number-lines %boolean; "false">
+<!ATTLIST style:properties text:line-number %nonNegativeInteger; #IMPLIED>
+
+<!ATTLIST style:properties style:decimal-places %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:properties style:tab-stop-distance %nonNegativeLength; #IMPLIED>
+
+<!-- table properties -->
+<!ATTLIST style:properties style:width %positiveLength; #IMPLIED>
+<!ATTLIST style:properties style:rel-width %percentage; #IMPLIED>
+<!ATTLIST style:properties style:may-break-between-rows %boolean; #IMPLIED>
+<!ATTLIST style:properties table:page-style-name %styleName; #IMPLIED>
+<!ATTLIST style:properties table:display %boolean; #IMPLIED>
+
+<!-- table column properties -->
+<!ATTLIST style:properties style:column-width %positiveLength; #IMPLIED>
+<!ENTITY % relWidth "CDATA">
+<!ATTLIST style:properties style:rel-column-width %relWidth; #IMPLIED>
+<!ATTLIST style:properties style:use-optimal-column-width %boolean; #IMPLIED>
+
+<!-- table row properties -->
+<!ATTLIST style:properties style:row-height %positiveLength; #IMPLIED>
+<!ATTLIST style:properties style:min-row-height %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties style:use-optimal-row-height %boolean; #IMPLIED>
+
+<!-- table cell properties -->
+<!ATTLIST style:properties
+ table:align (left | center | right | margins) #IMPLIED
+ table:border-model (collapsing | separating) #IMPLIED
+ fo:vertical-align (top | middle | bottom | automatic) #IMPLIED
+ fo:direction (ltr | ttb) #IMPLIED
+ style:rotation-angle %nonNegativeInteger; #IMPLIED
+ style:rotation-align (none | bottom | top | center) #IMPLIED
+ style:cell-protect CDATA #IMPLIED
+ fo:wrap-option (no-wrap | wrap) #IMPLIED
+>
+<!ELEMENT style:columns (style:column-sep?,style:column*)>
+<!ATTLIST style:columns fo:column-count %nonNegativeInteger; #IMPLIED>
+<!ATTLIST style:columns fo:column-gap %positiveLength; #IMPLIED>
+
+<!ELEMENT style:column EMPTY>
+<!ATTLIST style:column style:rel-width CDATA #IMPLIED>
+<!ATTLIST style:column fo:margin-left %positiveLength; #IMPLIED>
+<!ATTLIST style:column fo:margin-right %positiveLength; #IMPLIED>
+
+<!ELEMENT style:column-sep EMPTY>
+<!ATTLIST style:column-sep style:style (none|solid|dotted|dashed|dot-dashed)
+ "solid">
+<!ATTLIST style:column-sep style:width %length; #REQUIRED>
+<!ATTLIST style:column-sep style:height %percentage; "100%">
+<!ATTLIST style:column-sep style:vertical-align (top|middle|bottom) "top">
+<!ATTLIST style:column-sep style:color %color; "#000000">
+
+<!-- page master properties -->
+<!ELEMENT style:page-master (style:properties?, style:header-style?, style:footer-style?)>
+<!ATTLIST style:page-master style:name %styleName; #REQUIRED>
+<!ATTLIST style:page-master style:page-usage (all|left|right|mirrored) "all">
+
+<!ELEMENT style:header-style (style:properties?)>
+<!ELEMENT style:footer-style (style:properties?)>
+
+<!ATTLIST style:properties fo:page-width %length; #IMPLIED>
+<!ATTLIST style:properties fo:page-height %length; #IMPLIED>
+<!ATTLIST style:properties style:paper-tray-number %positiveNumberOrDefault; #IMPLIED>
+<!ATTLIST style:properties style:print-orientation (portrait|landscape) #IMPLIED>
+<!ATTLIST style:properties style:print CDATA #IMPLIED>
+<!ATTLIST style:properties style:print-page-order (ttb|ltr) #IMPLIED>
+<!ATTLIST style:properties style:first-page-number %positiveInteger; #IMPLIED>
+<!ATTLIST style:properties style:scale-to %percentage; #IMPLIED>
+<!ATTLIST style:properties style:scale-to-pages %positiveInteger; #IMPLIED>
+<!ATTLIST style:properties style:table-centering (horizontal | vertical | both | none) #IMPLIED>
+
+<!ATTLIST style:properties style:footnote-max-height %lengthOrNoLimit; #IMPLIED>
+<!ATTLIST style:properties style:vertical-align (top|bottom|middle|basline|auto) #IMPLIED>
+
+<!ELEMENT style:footnote-sep EMPTY>
+<!ATTLIST style:footnote-sep style:width %length; #IMPLIED>
+<!ATTLIST style:footnote-sep style:rel-width %percentage; #IMPLIED>
+<!ATTLIST style:footnote-sep style:color %color; #IMPLIED>
+<!ATTLIST style:footnote-sep style:adjustment (left|center|right) "left">
+<!ATTLIST style:footnote-sep style:distance-before-sep %length; #IMPLIED>
+<!ATTLIST style:footnote-sep style:distance-after-sep %length; #IMPLIED>
+
+<!-- master page -->
+<!ELEMENT style:master-page ( (style:header, style:header-left?)?, (style:footer, style:footer-left?)?,
+ office:forms?,style:style*, (%shapes;)*, presentation:notes? )>
+<!ATTLIST style:master-page style:name %styleName; #REQUIRED>
+<!ATTLIST style:master-page style:page-master-name %styleName; #REQUIRED>
+<!ATTLIST style:master-page style:next-style-name %styleName; #IMPLIED>
+<!ATTLIST style:master-page draw:style-name %styleName; #IMPLIED>
+
+<!-- handout master -->
+<!ELEMENT style:handout-master (%shapes;)*>
+<!ATTLIST style:handout-master presentation:presentation-page-layout-name %styleName; #IMPLIED>
+
+<!ENTITY % hd-ft-content "( text:p | (style:region-left?, style:region-center?, style:region-right?) )">
+<!ELEMENT style:header %hd-ft-content;>
+<!ELEMENT style:footer %hd-ft-content;>
+<!ELEMENT style:header-left %hd-ft-content;>
+<!ATTLIST style:header-left style:display %boolean; "true">
+<!ELEMENT style:footer-left %hd-ft-content;>
+<!ATTLIST style:footer-left style:display %boolean; "true">
+
+<!ENTITY % region-content "(text:p*)">
+<!ELEMENT style:region-left %region-content;>
+<!ELEMENT style:region-center %region-content;>
+<!ELEMENT style:region-right %region-content;>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/table.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/table.mod
new file mode 100644
index 000000000000..f0371a6023ae
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/table.mod
@@ -0,0 +1,497 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: table.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ELEMENT table:calculation-settings (table:null-date?, table:iteration?)>
+<!ATTLIST table:calculation-settings
+ table:case-sensitive %boolean; "true"
+ table:precision-as-shown %boolean; "false"
+ table:search-criteria-must-apply-to-whole-cell %boolean; "true"
+ table:automatic-find-labels %boolean; "true"
+ table:use-regular-expressions %boolean; "true"
+ table:null-year %positiveInteger; "1930"
+>
+<!ELEMENT table:null-date EMPTY>
+<!ATTLIST table:null-date
+ table:value-type %valueType; #FIXED "date"
+ table:date-value %date; "1899-12-30"
+>
+<!ELEMENT table:iteration EMPTY>
+<!ATTLIST table:iteration
+ table:status (enable | disable) "disable"
+ table:steps %positiveInteger; "100"
+ table:maximum-difference %float; "0.001"
+>
+
+<!ELEMENT table:tracked-changes (table:cell-content-change | table:insertion | table:deletion | table:movement | table:rejection)*>
+<!ATTLIST table:tracked-changes table:track-changes %boolean; "true"
+ table:protected %boolean; "false"
+ table:protection-key CDATA #IMPLIED
+>
+
+<!ELEMENT table:dependences (table:dependence)+>
+<!ELEMENT table:dependence EMPTY>
+<!ATTLIST table:dependence
+ table:id CDATA #REQUIRED
+>
+<!ELEMENT table:deletions (table:cell-content-deletion | table:change-deletion)+>
+<!ELEMENT table:cell-content-deletion (table:cell-address?, table:change-track-table-cell?)>
+<!ATTLIST table:cell-content-deletion
+ table:id CDATA #IMPLIED
+>
+<!ELEMENT table:change-deletion EMPTY>
+<!ATTLIST table:change-deletion
+ table:id CDATA #IMPLIED
+>
+<!ELEMENT table:insertion (office:change-info, table:dependences?, table:deletions?)>
+<!ATTLIST table:insertion
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+ table:type (row | column | table) #REQUIRED
+ table:position %integer; #REQUIRED
+ table:count %positiveInteger; "1"
+ table:table %integer; #IMPLIED
+>
+<!ELEMENT table:deletion (office:change-info, table:dependences?, table:deletions?, table:cut-offs?)>
+<!ATTLIST table:deletion
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+ table:type (row | column | table) #REQUIRED
+ table:position %integer; #REQUIRED
+ table:count %positiveInteger; "1"
+ table:table %integer; #IMPLIED
+ table:multi-deletion-spanned %integer; #IMPLIED
+>
+<!ELEMENT table:cut-offs (table:movement-cut-off+ | (table:insertion-cut-off, table:movement-cut-off*))>
+<!ELEMENT table:insertion-cut-off EMPTY>
+<!ATTLIST table:insertion-cut-off
+ table:id CDATA #REQUIRED
+ table:position %integer; #REQUIRED
+>
+<!ELEMENT table:movement-cut-off EMPTY>
+<!ATTLIST table:movement-cut-off
+ table:id CDATA #REQUIRED
+ table:start-position %integer; #IMPLIED
+ table:end-position %integer; #IMPLIED
+ table:position %integer; #IMPLIED
+>
+<!ELEMENT table:movement (table:source-range-address, table:target-range-address, office:change-info, table:dependences?, table:deletions?)>
+<!ATTLIST table:movement
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+>
+<!ELEMENT table:target-range-address EMPTY>
+<!ATTLIST table:target-range-address
+ table:column %integer; #IMPLIED
+ table:row %integer; #IMPLIED
+ table:table %integer; #IMPLIED
+ table:start-column %integer; #IMPLIED
+ table:start-row %integer; #IMPLIED
+ table:start-table %integer; #IMPLIED
+ table:end-column %integer; #IMPLIED
+ table:end-row %integer; #IMPLIED
+ table:end-table %integer; #IMPLIED
+>
+<!ELEMENT table:source-range-address EMPTY>
+<!ATTLIST table:source-range-address
+ table:column %integer; #IMPLIED
+ table:row %integer; #IMPLIED
+ table:table %integer; #IMPLIED
+ table:start-column %integer; #IMPLIED
+ table:start-row %integer; #IMPLIED
+ table:start-table %integer; #IMPLIED
+ table:end-column %integer; #IMPLIED
+ table:end-row %integer; #IMPLIED
+ table:end-table %integer; #IMPLIED
+>
+<!ELEMENT table:change-track-table-cell (text:p*)>
+<!ATTLIST table:change-track-table-cell
+ table:cell-address %cell-address; #IMPLIED
+ table:matrix-covered (true | false) "false"
+ table:formula %string; #IMPLIED
+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED
+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED
+ table:value-type %valueType; "string"
+ table:value %float; #IMPLIED
+ table:date-value %date; #IMPLIED
+ table:time-value %timeInstance; #IMPLIED
+ table:string-value %string; #IMPLIED
+>
+<!ELEMENT table:cell-content-change (table:cell-address, office:change-info, table:dependences?, table:deletions?, table:previous)>
+<!ATTLIST table:cell-content-change
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+>
+<!ELEMENT table:cell-address EMPTY>
+<!ATTLIST table:cell-address
+ table:column %integer; #IMPLIED
+ table:row %integer; #IMPLIED
+ table:table %integer; #IMPLIED
+>
+<!ELEMENT table:previous (table:change-track-table-cell)>
+<!ATTLIST table:previous
+ table:id CDATA #IMPLIED
+>
+<!ELEMENT table:rejection (office:change-info, table:dependences?, table:deletions?)>
+<!ATTLIST table:rejection
+ table:id CDATA #REQUIRED
+ table:acceptance-state (accepted | rejected | pending) "pending"
+ table:rejecting-change-id %positiveInteger; #IMPLIED
+>
+
+<!ENTITY % table-columns "table:table-columns | ( table:table-column | table:table-column-group )+">
+<!ENTITY % table-header-columns "table:table-header-columns">
+<!ENTITY % table-rows "table:table-rows | ( table:table-row | table:table-row-group )+">
+<!ENTITY % table-header-rows "table:table-header-rows">
+<!ENTITY % table-column-groups "((%table-columns;),(%table-header-columns;,(%table-columns;)?)?) | (%table-header-columns;,(%table-columns;)?)">
+<!ENTITY % table-row-groups "((%table-rows;),(%table-header-rows;,(%table-rows;)?)?) | (%table-header-rows;,(%table-rows;)?)">
+<!ELEMENT table:table (table:table-source?, table:scenario?, office:forms?, table:shapes?, (%table-column-groups;), (%table-row-groups;))>
+<!ATTLIST table:table
+ table:name %string; #IMPLIED
+ table:style-name %styleName; #IMPLIED
+ table:protected %boolean; "false"
+ table:protection-key CDATA #IMPLIED
+ table:print-ranges %cell-range-address-list; #IMPLIED
+>
+<!ELEMENT table:table-source EMPTY>
+<!ATTLIST table:table-source
+ table:mode (copy-all | copy-results-only) "copy-all"
+ xlink:type (simple) #FIXED "simple"
+ xlink:actuate (onRequest) "onRequest"
+ xlink:href %uriReference; #REQUIRED
+ table:filter-name CDATA #IMPLIED
+ table:table-name CDATA #IMPLIED
+ table:filter-options CDATA #IMPLIED
+ table:refresh-delay %timeDuration; #IMPLIED
+>
+<!ELEMENT table:scenario EMPTY>
+<!ATTLIST table:scenario
+ table:display-border %boolean; "true"
+ table:border-color %color; #IMPLIED
+ table:copy-back %boolean; "true"
+ table:copy-styles %boolean; "true"
+ table:copy-formulas %boolean; "true"
+ table:is-active %boolean; #REQUIRED
+ table:scenario-ranges %cell-range-address-list; #REQUIRED
+ table:comment CDATA #IMPLIED
+>
+<!ELEMENT table:shapes %shapes;>
+<!ELEMENT table:table-column-group (table:table-header-columns | table:table-column | table:table-column-group)+>
+<!ATTLIST table:table-column-group
+ table:display %boolean; "true"
+>
+<!ELEMENT table:table-header-columns (table:table-column | table:table-column-group)+>
+<!ELEMENT table:table-columns (table:table-column | table:table-column-group)+>
+<!ELEMENT table:table-column EMPTY>
+<!ATTLIST table:table-column
+ table:number-columns-repeated %positiveInteger; "1"
+ table:style-name %styleName; #IMPLIED
+ table:visibility (visible | collapse | filter) "visible"
+ table:default-cell-style-name %styleName; #IMPLIED
+>
+<!ELEMENT table:table-row-group (table:table-header-rows | table:table-row | table:table-row-group)+>
+<!ATTLIST table:table-row-group
+ table:display %boolean; "true"
+>
+<!ELEMENT table:table-header-rows (table:table-row | table:table-row-group)+>
+<!ELEMENT table:table-rows (table:table-row | table:table-row-group)+>
+<!ENTITY % table-cells "(table:table-cell|table:covered-table-cell)+">
+<!ELEMENT table:table-row %table-cells;>
+<!ATTLIST table:table-row
+ table:number-rows-repeated %positiveInteger; "1"
+ table:style-name %styleName; #IMPLIED
+ table:visibility (visible | collapse | filter) "visible"
+ table:default-cell-style-name %styleName; #IMPLIED
+>
+
+<!ENTITY % text-wo-table "(text:h|text:p|text:ordered-list|text:unordered-list|%shapes;)*">
+<!ENTITY % cell-content "(table:cell-range-source?,office:annotation?,table:detective?,(table:sub-table|%text-wo-table;))">
+<!ELEMENT table:table-cell %cell-content;>
+<!ELEMENT table:covered-table-cell %cell-content;>
+<!ATTLIST table:table-cell
+ table:number-columns-repeated %positiveInteger; "1"
+ table:number-rows-spanned %positiveInteger; "1"
+ table:number-columns-spanned %positiveInteger; "1"
+ table:style-name %styleName; #IMPLIED
+ table:validation-name CDATA #IMPLIED
+ table:formula %string; #IMPLIED
+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED
+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED
+ table:value-type %valueType; "string"
+ table:value %float; #IMPLIED
+ table:date-value %date; #IMPLIED
+ table:time-value %timeInstance; #IMPLIED
+ table:boolean-value %boolean; #IMPLIED
+ table:string-value %string; #IMPLIED
+ table:currency %string; #IMPLIED
+>
+<!ATTLIST table:covered-table-cell
+ table:number-columns-repeated %positiveInteger; "1"
+ table:style-name %styleName; #IMPLIED
+ table:validation-name CDATA #IMPLIED
+ table:formula %string; #IMPLIED
+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED
+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED
+ table:value-type %valueType; "string"
+ table:value %float; #IMPLIED
+ table:date-value %date; #IMPLIED
+ table:time-value %timeInstance; #IMPLIED
+ table:boolean-value %boolean; #IMPLIED
+ table:string-value %string; #IMPLIED
+ table:currency %string; #IMPLIED
+>
+<!-- cell protection in writer: cell attribute; calc uses format -->
+<!ATTLIST table:table-cell table:protected %boolean; "false">
+
+<!ELEMENT table:cell-range-source EMPTY>
+<!ATTLIST table:cell-range-source
+ table:name %string; #REQUIRED
+ xlink:type (simple) #FIXED "simple"
+ xlink:actuate (onRequest) #FIXED "onRequest"
+ xlink:href %uriReference; #REQUIRED
+ table:filter-name %string; #REQUIRED
+ table:filter-options %string; #IMPLIED
+ table:last-column-spanned %positiveInteger; #REQUIRED
+ table:last-row-spanned %positiveInteger; #REQUIRED
+ table:refresh-delay %timeDuration; #IMPLIED
+>
+
+<!ELEMENT table:detective (table:highlighted-range*, table:operation*)>
+<!ELEMENT table:highlighted-range EMPTY>
+<!ATTLIST table:highlighted-range
+ table:cell-range-address %cell-range-address; #IMPLIED
+ table:direction (from-another-table | to-another-table | from-same-table | to-same-table) #REQUIRED
+ table:contains-error %boolean; "false"
+>
+<!ELEMENT table:operation EMPTY>
+<!ATTLIST table:operation
+ table:name (trace-dependents | remove-dependents | trace-precedents | remove-precedents | trace-errors) #REQUIRED
+ table:index %nonNegativeInteger; #REQUIRED
+>
+
+<!ELEMENT table:content-validations (table:content-validation)+>
+<!ELEMENT table:content-validation (table:help-message?, (table:error-message | (table:error-macro, office:events?))?)>
+<!ATTLIST table:content-validation
+ table:name CDATA #REQUIRED
+ table:condition CDATA #IMPLIED
+ table:base-cell-address %cell-address; #IMPLIED
+ table:allow-empty-cell %boolean; #IMPLIED
+>
+<!ELEMENT table:help-message (text:p*)>
+<!ATTLIST table:help-message
+ table:title CDATA #IMPLIED
+ table:display %boolean; #IMPLIED
+>
+<!ELEMENT table:error-message (text:p*)>
+<!ATTLIST table:error-message
+ table:title CDATA #IMPLIED
+ table:message-type (stop | warning | information) #IMPLIED
+ table:display %boolean; #IMPLIED
+>
+<!ELEMENT table:error-macro EMPTY>
+<!ATTLIST table:error-macro
+ table:name CDATA #IMPLIED
+ table:execute %boolean; #IMPLIED
+>
+
+<!ELEMENT table:sub-table ((%table-column-groups;) , (%table-row-groups;))>
+
+<!ELEMENT table:label-ranges (table:label-range)*>
+<!ELEMENT table:label-range EMPTY>
+<!ATTLIST table:label-range
+ table:label-cell-range-address %cell-range-address; #REQUIRED
+ table:data-cell-range-address %cell-range-address; #REQUIRED
+ table:orientation (column | row) #REQUIRED
+>
+
+<!ELEMENT table:named-expressions (table:named-range | table:named-expression)*>
+<!ELEMENT table:named-range EMPTY>
+<!ATTLIST table:named-range
+ table:name CDATA #REQUIRED
+ table:cell-range-address %cell-range-address; #REQUIRED
+ table:base-cell-address %cell-address; #IMPLIED
+ table:range-usable-as CDATA "none"
+>
+<!ELEMENT table:named-expression EMPTY>
+<!ATTLIST table:named-expression
+ table:name CDATA #REQUIRED
+ table:expression CDATA #REQUIRED
+ table:base-cell-address %cell-address; #IMPLIED
+>
+
+<!ELEMENT table:filter (table:filter-condition | table:filter-and | table:filter-or)>
+<!ATTLIST table:filter
+ table:target-range-address %cell-range-address; #IMPLIED
+ table:condition-source-range-address %cell-range-address; #IMPLIED
+ table:condition-source (self | cell-range) "self"
+ table:display-duplicates %boolean; "true"
+>
+<!ELEMENT table:filter-and (table:filter-or | table:filter-condition)+>
+<!ELEMENT table:filter-or (table:filter-and | table:filter-condition)+>
+<!ELEMENT table:filter-condition EMPTY>
+<!ATTLIST table:filter-condition
+ table:field-number %nonNegativeInteger; #REQUIRED
+ table:case-sensitive %boolean; "false"
+ table:data-type (text | number) "text"
+ table:value CDATA #REQUIRED
+ table:operator CDATA #REQUIRED
+>
+
+<!ELEMENT table:database-ranges (table:database-range)*>
+<!ELEMENT table:database-range ((table:database-source-sql | table:database-source-table | table:database-source-query)?, table:filter?, table:sort?, table:subtotal-rules?)>
+<!ATTLIST table:database-range
+ table:name CDATA #IMPLIED
+ table:is-selection %boolean; "false"
+ table:on-update-keep-styles %boolean; "false"
+ table:on-update-keep-size %boolean; "true"
+ table:has-persistant-data %boolean; "true"
+ table:orientation (row | column) "row"
+ table:contains-header %boolean; "true"
+ table:display-filter-buttons %boolean; "false"
+ table:target-range-address %cell-range-address; #REQUIRED
+ table:refresh-delay %timeDuration; #IMPLIED
+>
+<!ELEMENT table:database-source-sql EMPTY>
+<!ATTLIST table:database-source-sql
+ table:database-name CDATA #REQUIRED
+ table:sql-statement CDATA #REQUIRED
+ table:parse-sql-statements %boolean; "false"
+>
+<!ELEMENT table:database-source-table EMPTY>
+<!ATTLIST table:database-source-table
+ table:database-name CDATA #REQUIRED
+ table:table-name CDATA #REQUIRED
+>
+<!ELEMENT table:database-source-query EMPTY>
+<!ATTLIST table:database-source-query
+ table:database-name CDATA #REQUIRED
+ table:query-name CDATA #REQUIRED
+>
+
+<!ELEMENT table:sort (table:sort-by)+>
+<!ATTLIST table:sort
+ table:bind-styles-to-content %boolean; "true"
+ table:target-range-address %cell-range-address; #IMPLIED
+ table:case-sensitive %boolean; "false"
+ table:language CDATA #IMPLIED
+ table:country CDATA #IMPLIED
+ table:algorithm CDATA #IMPLIED
+>
+<!ELEMENT table:sort-by EMPTY>
+<!ATTLIST table:sort-by
+ table:field-number %nonNegativeInteger; #REQUIRED
+ table:data-type (text | number | automatic | qname-but-not-ncname) "automatic"
+ table:order (ascending | descending) "ascending"
+>
+
+<!ELEMENT table:subtotal-rules (table:sort-groups? | table:subtotal-rule*)?>
+<!ATTLIST table:subtotal-rules
+ table:bind-styles-to-content %boolean; "true"
+ table:case-sensitive %boolean; "false"
+ table:page-breaks-on-group-change %boolean; "false"
+>
+<!ELEMENT table:sort-groups EMPTY>
+<!ATTLIST table:sort-groups
+ table:data-type (text | number | automatic | qname-but-not-ncname) "automatic"
+ table:order (ascending | descending) "ascending"
+>
+<!ELEMENT table:subtotal-rule (table:subtotal-field)*>
+<!ATTLIST table:subtotal-rule
+ table:group-by-field-number %nonNegativeInteger; #REQUIRED
+>
+<!ELEMENT table:subtotal-field EMPTY>
+<!ATTLIST table:subtotal-field
+ table:field-number %nonNegativeInteger; #REQUIRED
+ table:function CDATA #REQUIRED
+>
+
+<!ELEMENT table:data-pilot-tables (table:data-pilot-table)*>
+<!ELEMENT table:data-pilot-table ((table:database-source-sql | table:database-source-table | table:database-source-query | table:source-service | table:source-cell-range)?, table:data-pilot-field+)>
+<!ATTLIST table:data-pilot-table
+ table:name CDATA #REQUIRED
+ table:application-data CDATA #IMPLIED
+ table:grand-total (none | row | column | both) "both"
+ table:ignore-empty-rows %boolean; "false"
+ table:identify-categories %boolean; "false"
+ table:target-range-address %cell-range-address; #REQUIRED
+ table:buttons %cell-range-address-list; #REQUIRED
+>
+<!ELEMENT table:source-service EMPTY>
+<!ATTLIST table:source-service
+ table:name CDATA #REQUIRED
+ table:source-name CDATA #REQUIRED
+ table:object-name CDATA #REQUIRED
+ table:username CDATA #IMPLIED
+ table:password CDATA #IMPLIED
+>
+<!ELEMENT table:source-cell-range (table:filter)?>
+<!ATTLIST table:source-cell-range
+ table:cell-range-address %cell-range-address; #REQUIRED
+>
+<!ELEMENT table:data-pilot-field (table:data-pilot-level)?>
+<!ATTLIST table:data-pilot-field
+ table:source-field-name CDATA #REQUIRED
+ table:is-data-layout-field %boolean; "false"
+ table:function CDATA #REQUIRED
+ table:orientation (row | column | data | page | hidden) #REQUIRED
+ table:used-hierarchy %positiveInteger; "1"
+>
+<!ELEMENT table:data-pilot-level (table:data-pilot-subtotals?, table:data-pilot-members?)>
+<!ATTLIST table:data-pilot-level
+ table:display-empty %boolean; #IMPLIED
+>
+<!ELEMENT table:data-pilot-subtotals (table:data-pilot-subtotal)*>
+<!ELEMENT table:data-pilot-subtotal EMPTY>
+<!ATTLIST table:data-pilot-subtotal
+ table:function CDATA #REQUIRED
+>
+<!ELEMENT table:data-pilot-members (table:data-pilot-member)*>
+<!ELEMENT table:data-pilot-member EMPTY>
+<!ATTLIST table:data-pilot-member
+ table:name CDATA #REQUIRED
+ table:display %boolean; #IMPLIED
+ table:display-details %boolean; #IMPLIED
+>
+
+<!ELEMENT table:consolidation EMPTY>
+<!ATTLIST table:consolidation
+ table:function CDATA #REQUIRED
+ table:source-cell-range-addresses %cell-range-address-list; #REQUIRED
+ table:target-cell-address %cell-address; #REQUIRED
+ table:use-label (none | column | row | both) "none"
+ table:link-to-source-data %boolean; "false"
+>
+
+<!ELEMENT table:dde-links (table:dde-link)+>
+<!ELEMENT table:dde-link (office:dde-source, table:table)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/text.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/text.mod
new file mode 100644
index 000000000000..fd90aff575cd
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/text.mod
@@ -0,0 +1,1103 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: text.mod,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+
+<!ENTITY % fields "text:date |
+ text:time |
+ text:page-number |
+ text:page-continuation |
+ text:sender-firstname |
+ text:sender-lastname |
+ text:sender-initials |
+ text:sender-title |
+ text:sender-position |
+ text:sender-email |
+ text:sender-phone-private |
+ text:sender-fax |
+ text:sender-company |
+ text:sender-phone-work |
+ text:sender-street |
+ text:sender-city |
+ text:sender-postal-code |
+ text:sender-country |
+ text:sender-state-or-province |
+ text:author-name |
+ text:author-initials |
+ text:placeholder |
+ text:variable-set |
+ text:variable-get |
+ text:variable-input |
+ text:user-field-get |
+ text:user-field-input |
+ text:sequence |
+ text:expression |
+ text:text-input |
+ text:database-display |
+ text:database-next |
+ text:database-row-select |
+ text:database-row-number |
+ text:database-name |
+ text:initial-creator |
+ text:creation-date |
+ text:creation-time |
+ text:description |
+ text:user-defined |
+ text:print-time |
+ text:print-date |
+ text:printed-by |
+ text:title |
+ text:subject |
+ text:keywords |
+ text:editing-cycles |
+ text:editing-duration |
+ text:modification-time |
+ text:modification-date |
+ text:creator |
+ text:conditional-text |
+ text:hidden-text |
+ text:hidden-paragraph |
+ text:chapter |
+ text:file-name |
+ text:template-name |
+ text:set-page-variable |
+ text:get-page-variable |
+ text:execute-macro |
+ text:dde-connection |
+ text:reference-ref |
+ text:sequence-ref |
+ text:bookmark-ref |
+ text:footnote-ref |
+ text:endnote-ref |
+ text:sheet-name |
+ text:bibliography-mark |
+ text:page-count |
+ text:paragraph-count |
+ text:word-count |
+ text:character-count |
+ text:table-count |
+ text:image-count |
+ text:object-count |
+ office:annotation |
+ text:script |
+ text:measure" >
+
+<!ENTITY % inline-text "(#PCDATA|
+ text:span|text:tab-stop|text:s|text:line-break|
+ text:footnote|text:endnote|text:a|
+ text:bookmark|text:bookmark-start|text:bookmark-end|
+ text:reference-mark|text:reference-mark-start|
+ text:reference-mark-end|%fields;|%shape;|
+ text:toc-mark-start | text:toc-mark-end |
+ text:toc-mark | text:user-index-mark-start |
+ text:user-index-mark-end | text:user-index-mark |
+ text:alphabetical-index-mark-start |
+ text:alphabetical-index-mark-end |
+ text:alphabetical-index-mark |
+ %change-marks; | draw:a | text:ruby)*">
+
+<!ELEMENT text:p %inline-text;>
+<!ELEMENT text:h %inline-text;>
+
+<!ATTLIST text:p text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:p text:cond-style-name %styleName; #IMPLIED>
+
+<!ATTLIST text:h text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:h text:cond-style-name %styleName; #IMPLIED>
+<!ATTLIST text:h text:level %positiveInteger; "1">
+
+<!ELEMENT text:span %inline-text;>
+<!ATTLIST text:span text:style-name %styleName; #REQUIRED>
+
+<!ELEMENT text:a %inline-text;>
+<!ATTLIST text:a xlink:href %uriReference; #REQUIRED>
+<!ATTLIST text:a xlink:type (simple) #FIXED "simple">
+<!ATTLIST text:a xlink:actuate (onRequest) "onRequest">
+<!ATTLIST text:a xlink:show (new|replace) "replace">
+<!ATTLIST text:a office:name %string; #IMPLIED>
+<!ATTLIST text:a office:target-frame-name %string; #IMPLIED>
+<!ATTLIST text:a text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:a text:visited-style-name %styleName; #IMPLIED>
+
+
+<!ELEMENT text:s EMPTY>
+<!ATTLIST text:s text:c %positiveInteger; "1">
+
+<!ELEMENT text:tab-stop EMPTY>
+
+<!ELEMENT text:line-break EMPTY>
+
+
+<!ENTITY % list-items "((text:list-header,text:list-item*)|text:list-item+)">
+<!ELEMENT text:ordered-list %list-items;>
+<!ELEMENT text:unordered-list %list-items;>
+
+
+<!ATTLIST text:ordered-list text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:unordered-list text:style-name %styleName; #IMPLIED>
+
+<!ATTLIST text:ordered-list text:continue-numbering %boolean; "false">
+
+<!ELEMENT text:list-header (text:p)+>
+<!ELEMENT text:list-item (text:p|text:ordered-list|text:unordered-list)+>
+
+<!ATTLIST text:list-item text:restart-numbering %boolean; "false">
+<!ATTLIST text:list-item text:start-value %positiveInteger; #IMPLIED>
+
+<!ELEMENT text:list-style (text:list-level-style-number|
+ text:list-level-style-bullet|
+ text:list-level-style-image)+>
+
+<!ATTLIST text:list-style style:name %styleName; #IMPLIED>
+
+<!ATTLIST text:list-style text:consecutive-numbering %boolean; "false">
+
+
+<!ELEMENT text:list-level-style-number (style:properties?)>
+
+<!ATTLIST text:list-level-style-number text:level %positiveInteger;
+ #REQUIRED>
+<!ATTLIST text:list-level-style-number text:style-name %styleName; #IMPLIED>
+
+<!ATTLIST text:list-level-style-number style:num-format %string; #REQUIRED>
+<!ATTLIST text:list-level-style-number style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:list-level-style-number style:num-suffix %string; #IMPLIED>
+<!ATTLIST text:list-level-style-number style:num-letter-sync %boolean;
+ "false">
+<!ATTLIST text:list-level-style-number text:display-levels %positiveInteger;
+ "1">
+<!ATTLIST text:list-level-style-number text:start-value %positiveInteger;
+ "1">
+<!ELEMENT text:list-level-style-bullet (style:properties?)>
+
+<!ATTLIST text:list-level-style-bullet text:level %positiveInteger; #REQUIRED>
+<!ATTLIST text:list-level-style-bullet text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:list-level-style-bullet text:bullet-char %character; #REQUIRED>
+<!ATTLIST text:list-level-style-bullet style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:list-level-style-bullet style:num-suffix %string; #IMPLIED>
+
+<!ELEMENT text:list-level-style-image (style:properties?,office:binary-data?)>
+
+<!ATTLIST text:list-level-style-image text:level %positiveInteger; #REQUIRED>
+<!ATTLIST text:list-level-style-image xlink:type (simple) #IMPLIED>
+<!ATTLIST text:list-level-style-image xlink:href %uriReference; #IMPLIED>
+<!ATTLIST text:list-level-style-image xlink:actuate (onLoad) #IMPLIED>
+<!ATTLIST text:list-level-style-image xlink:show (embed) #IMPLIED>
+
+
+<!-- list properties -->
+<!ATTLIST style:properties text:space-before %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties text:min-label-width %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties text:min-label-distance %nonNegativeLength; #IMPLIED>
+<!ATTLIST style:properties text:enable-numbering %boolean; #IMPLIED>
+<!ATTLIST style:properties style:list-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:outline-style (text:outline-level-style)+>
+
+<!ELEMENT text:outline-level-style (style:properties?)>
+
+<!ATTLIST text:outline-level-style text:level %positiveInteger;
+ #REQUIRED>
+<!ATTLIST text:outline-level-style text:style-name %styleName; #IMPLIED>
+
+<!ATTLIST text:outline-level-style style:num-format %string; #REQUIRED>
+<!ATTLIST text:outline-level-style style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:outline-level-style style:num-suffix %string; #IMPLIED>
+<!ATTLIST text:outline-level-style style:num-letter-sync %boolean;
+ "false">
+<!ATTLIST text:outline-level-style text:display-levels %positiveInteger;
+ "1">
+<!ATTLIST text:outline-level-style text:start-value %positiveInteger;
+ "1">
+
+<!ENTITY % field-declarations "text:variable-decls?,
+ text:user-field-decls?,
+ text:sequence-decls?">
+
+<!ENTITY % variableName "CDATA">
+
+<!ENTITY % formula "CDATA">
+
+<!ENTITY % valueAttr "text:value-type %valueType; #REQUIRED">
+
+<!ENTITY % valueAndTypeAttr "%valueAttr;
+ text:value %float; #IMPLIED
+ text:date-value %date; #IMPLIED
+ text:time-value %timeInstance; #IMPLIED
+ text:boolean-value %boolean; #IMPLIED
+ text:string-value %string; #IMPLIED
+ text:currency CDATA #IMPLIED" >
+
+<!ENTITY % numFormat 'style:num-format CDATA #IMPLIED
+ style:num-letter-sync %boolean; "false"'>
+
+
+<!ELEMENT text:date (#PCDATA)>
+<!ATTLIST text:date text:date-value %date; #IMPLIED>
+<!ATTLIST text:date text:date-adjust %dateDuration; #IMPLIED>
+<!ATTLIST text:date text:fixed %boolean; "false">
+<!ATTLIST text:date style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:time (#PCDATA)>
+<!ATTLIST text:time text:time-value %timeInstance; #IMPLIED>
+<!ATTLIST text:time text:time-adjust %timeDuration; #IMPLIED>
+<!ATTLIST text:time text:fixed %boolean; "false">
+<!ATTLIST text:time style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:page-number (#PCDATA)>
+<!ATTLIST text:page-number text:page-adjust %positiveInteger; #IMPLIED>
+<!ATTLIST text:page-number text:select-page (previous|current|next) "current">
+<!ATTLIST text:page-number %numFormat;>
+
+<!ELEMENT text:page-continuation (#PCDATA)>
+<!ATTLIST text:page-continuation text:select-page (previous|next) #REQUIRED>
+<!ATTLIST text:page-continuation text:string-value %string; #IMPLIED>
+
+<!ELEMENT text:sender-firstname (#PCDATA)>
+<!ATTLIST text:sender-firstname text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-lastname (#PCDATA)>
+<!ATTLIST text:sender-lastname text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-initials (#PCDATA)>
+<!ATTLIST text:sender-initials text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-title (#PCDATA)>
+<!ATTLIST text:sender-title text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-position (#PCDATA)>
+<!ATTLIST text:sender-position text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-email (#PCDATA)>
+<!ATTLIST text:sender-email text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-phone-private (#PCDATA)>
+<!ATTLIST text:sender-phone-private text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-fax (#PCDATA)>
+<!ATTLIST text:sender-fax text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-company (#PCDATA)>
+<!ATTLIST text:sender-company text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-phone-work (#PCDATA)>
+<!ATTLIST text:sender-phone-work text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-street (#PCDATA)>
+<!ATTLIST text:sender-street text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-city (#PCDATA)>
+<!ATTLIST text:sender-city text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-postal-code (#PCDATA)>
+<!ATTLIST text:sender-postal-code text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-country (#PCDATA)>
+<!ATTLIST text:sender-country text:fixed %boolean; "true">
+
+<!ELEMENT text:sender-state-or-province (#PCDATA)>
+<!ATTLIST text:sender-state-or-province text:fixed %boolean; "true">
+
+<!ELEMENT text:author-name (#PCDATA)>
+<!ATTLIST text:author-name text:fixed %boolean; "true">
+
+<!ELEMENT text:author-initials (#PCDATA)>
+<!ATTLIST text:author-initials text:fixed %boolean; "true">
+
+<!ELEMENT text:placeholder (#PCDATA)>
+<!ATTLIST text:placeholder text:placeholder-type (text|table|text-box|image|object) #REQUIRED>
+<!ATTLIST text:placeholder text:description %string; #IMPLIED>
+
+<!ELEMENT text:variable-decls (text:variable-decl)*>
+
+<!ELEMENT text:variable-decl EMPTY>
+<!ATTLIST text:variable-decl text:name %variableName; #REQUIRED>
+<!ATTLIST text:variable-decl %valueAndTypeAttr;>
+
+<!ELEMENT text:variable-set (#PCDATA)>
+<!ATTLIST text:variable-set text:name %variableName; #REQUIRED>
+<!ATTLIST text:variable-set text:formula %formula; #IMPLIED>
+<!ATTLIST text:variable-set %valueAndTypeAttr;>
+<!ATTLIST text:variable-set text:display (value|none) "value">
+<!ATTLIST text:variable-set style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:variable-get (#PCDATA)>
+<!ATTLIST text:variable-get text:name %variableName; #REQUIRED>
+<!ATTLIST text:variable-get text:display (value|formula) "value">
+<!ATTLIST text:variable-get style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:variable-input (#PCDATA)>
+<!ATTLIST text:variable-input text:name %variableName; #REQUIRED>
+<!ATTLIST text:variable-input text:description %string; #IMPLIED>
+<!ATTLIST text:variable-input %valueAndTypeAttr;>
+<!ATTLIST text:variable-input text:display (value|none) "value">
+<!ATTLIST text:variable-input style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:user-field-decls (text:user-field-decl)*>
+
+<!ELEMENT text:user-field-decl EMPTY>
+<!ATTLIST text:user-field-decl text:name %variableName; #REQUIRED>
+<!ATTLIST text:user-field-decl text:formula %formula; #IMPLIED>
+<!ATTLIST text:user-field-decl %valueAndTypeAttr;>
+
+<!ELEMENT text:user-field-get (#PCDATA)>
+<!ATTLIST text:user-field-get text:name %variableName; #REQUIRED>
+<!ATTLIST text:user-field-get text:display (value|formula|none) "value">
+<!ATTLIST text:user-field-get style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:user-field-input (#PCDATA)>
+<!ATTLIST text:user-field-input text:name %variableName; #REQUIRED>
+<!ATTLIST text:user-field-input text:description %string; #IMPLIED>
+<!ATTLIST text:user-field-input style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:sequence-decls (text:sequence-decl)*>
+
+<!ELEMENT text:sequence-decl EMPTY>
+<!ATTLIST text:sequence-decl text:name %variableName; #REQUIRED>
+<!ATTLIST text:sequence-decl text:display-outline-level %positiveInteger; "0">
+<!ATTLIST text:sequence-decl text:separation-character %character; ".">
+
+<!ELEMENT text:sequence (#PCDATA)>
+<!ATTLIST text:sequence text:name %variableName; #REQUIRED>
+<!ATTLIST text:sequence text:formula %formula; #IMPLIED>
+<!ATTLIST text:sequence %numFormat;>
+<!ATTLIST text:sequence text:ref-name ID #IMPLIED>
+
+<!ELEMENT text:expression (#PCDATA)>
+<!ATTLIST text:expression text:formula %formula; #IMPLIED>
+<!ATTLIST text:expression text:display (value|formula ) "value">
+<!ATTLIST text:expression %valueAndTypeAttr;>
+<!ATTLIST text:expression style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:text-input (#PCDATA)>
+<!ATTLIST text:text-input text:description %string; #IMPLIED>
+
+<!ENTITY % database-table "text:database-name CDATA #REQUIRED
+ text:table-name CDATA #REQUIRED">
+
+<!ELEMENT text:database-display (#PCDATA)>
+<!ATTLIST text:database-display %database-table;>
+<!ATTLIST text:database-display text:column-name %string; #REQUIRED>
+<!ATTLIST text:database-display style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:database-next (#PCDATA)>
+<!ATTLIST text:database-next %database-table;>
+<!ATTLIST text:database-next text:condition %formula; #IMPLIED>
+
+<!ELEMENT text:database-row-select (#PCDATA)>
+<!ATTLIST text:database-row-select %database-table;>
+<!ATTLIST text:database-row-select text:condition %formula; #IMPLIED>
+<!ATTLIST text:database-row-select text:row-number %integer; #REQUIRED>
+
+<!ELEMENT text:database-row-number (#PCDATA)>
+<!ATTLIST text:database-row-number %database-table;>
+<!ATTLIST text:database-row-number %numFormat;>
+<!ATTLIST text:database-row-number text:value %integer; #IMPLIED>
+
+<!ELEMENT text:database-name (#PCDATA)>
+<!ATTLIST text:database-name %database-table;>
+
+<!ELEMENT text:initial-creator (#PCDATA)>
+<!ATTLIST text:initial-creator text:fixed %boolean; "false">
+
+<!ELEMENT text:creation-date (#PCDATA)>
+<!ATTLIST text:creation-date text:fixed %boolean; "false">
+<!ATTLIST text:creation-date text:date-value %date; #IMPLIED>
+<!ATTLIST text:creation-date style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:creation-time (#PCDATA)>
+<!ATTLIST text:creation-time text:fixed %boolean; "false">
+<!ATTLIST text:creation-time text:time-value %timeInstance; #IMPLIED>
+<!ATTLIST text:creation-time style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:description (#PCDATA)>
+<!ATTLIST text:description text:fixed %boolean; "false">
+
+<!ELEMENT text:user-defined (#PCDATA)>
+<!ATTLIST text:user-defined text:fixed %boolean; "false">
+<!ATTLIST text:user-defined text:name %string; #REQUIRED>
+
+<!ELEMENT text:print-time (#PCDATA)>
+<!ATTLIST text:print-time text:fixed %boolean; "false">
+<!ATTLIST text:print-time text:time-value %timeInstance; #IMPLIED>
+<!ATTLIST text:print-time style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:print-date (#PCDATA)>
+<!ATTLIST text:print-date text:fixed %boolean; "false">
+<!ATTLIST text:print-date text:date-value %date; #IMPLIED>
+<!ATTLIST text:print-date style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:printed-by (#PCDATA)>
+<!ATTLIST text:printed-by text:fixed %boolean; "false">
+
+<!ELEMENT text:title (#PCDATA)>
+<!ATTLIST text:title text:fixed %boolean; "false">
+
+<!ELEMENT text:subject (#PCDATA)>
+<!ATTLIST text:subject text:fixed %boolean; "false">
+
+<!ELEMENT text:keywords (#PCDATA)>
+<!ATTLIST text:keywords text:fixed %boolean; "false">
+
+<!ELEMENT text:editing-cycles (#PCDATA)>
+<!ATTLIST text:editing-cycles text:fixed %boolean; "false">
+
+<!ELEMENT text:editing-duration (#PCDATA)>
+<!ATTLIST text:editing-duration text:fixed %boolean; "false">
+<!ATTLIST text:editing-duration text:duration %timeDuration; #IMPLIED>
+<!ATTLIST text:editing-duration style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:modification-time (#PCDATA)>
+<!ATTLIST text:modification-time text:fixed %boolean; "false">
+<!ATTLIST text:modification-time text:time-value %timeInstance; #IMPLIED>
+<!ATTLIST text:modification-time style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:modification-date (#PCDATA)>
+<!ATTLIST text:modification-date text:fixed %boolean; "false">
+<!ATTLIST text:modification-date text:date-value %date; #IMPLIED>
+<!ATTLIST text:modification-date style:data-style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:creator (#PCDATA)>
+<!ATTLIST text:creator text:fixed %boolean; "false">
+
+<!ELEMENT text:conditional-text (#PCDATA)>
+<!ATTLIST text:conditional-text text:condition %formula; #REQUIRED>
+<!ATTLIST text:conditional-text text:string-value-if-false %string; #REQUIRED>
+<!ATTLIST text:conditional-text text:string-value-if-true %string; #REQUIRED>
+<!ATTLIST text:conditional-text text:current-value %boolean; "false">
+
+<!ELEMENT text:hidden-text (#PCDATA)>
+<!ATTLIST text:hidden-text text:condition %formula; #REQUIRED>
+<!ATTLIST text:hidden-text text:string-value %string; #REQUIRED>
+<!ATTLIST text:hidden-text text:is-hidden %boolean; "false">
+
+<!ELEMENT text:hidden-paragraph EMPTY>
+<!ATTLIST text:hidden-paragraph text:condition %formula; #REQUIRED>
+<!ATTLIST text:hidden-paragraph text:is-hidden %boolean; "false">
+
+<!ELEMENT text:chapter (#PCDATA)>
+<!ATTLIST text:chapter text:display (name|number|number-and-name|
+ plain-number-and-name|plain-number)
+ "number-and-name">
+<!ATTLIST text:chapter text:outline-level %integer; "1">
+
+<!ELEMENT text:file-name (#PCDATA)>
+<!ATTLIST text:file-name text:display (full|path|name|name-and-extension)
+ "full">
+<!ATTLIST text:file-name text:fixed %boolean; "false">
+
+<!ELEMENT text:template-name (#PCDATA)>
+<!ATTLIST text:template-name text:display (full|path|name|name-and-extension|
+ area|title) "full">
+
+<!ELEMENT text:set-page-variable EMPTY>
+<!ATTLIST text:set-page-variable text:active %boolean; "true">
+<!ATTLIST text:set-page-variable text:page-adjust %integer; "0">
+
+<!ELEMENT text:get-page-variable (#PCDATA)>
+<!ATTLIST text:get-page-variable %numFormat;>
+
+<!ELEMENT text:execute-macro (#PCDATA|office:events)* >
+<!ATTLIST text:execute-macro text:description %string; #IMPLIED>
+
+
+<!ELEMENT text:dde-connection-decls (text:dde-connection-decl)*>
+
+<!ELEMENT text:dde-connection-decl EMPTY>
+<!ATTLIST text:dde-connection-decl text:name %string; #REQUIRED>
+<!ATTLIST text:dde-connection-decl text:dde-application %string; #REQUIRED>
+<!ATTLIST text:dde-connection-decl text:dde-topic %string; #REQUIRED>
+<!ATTLIST text:dde-connection-decl text:dde-item %string; #REQUIRED>
+<!ATTLIST text:dde-connection-decl text:automatic-update %boolean; "false">
+
+<!ELEMENT text:dde-connection (#PCDATA)>
+<!ATTLIST text:dde-connection text:connection-name %string; #REQUIRED>
+
+<!ELEMENT text:reference-ref (#PCDATA)>
+<!ATTLIST text:reference-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:reference-ref text:reference-format (page|chapter|text|direction) #IMPLIED>
+
+<!ELEMENT text:sequence-ref (#PCDATA)>
+<!ATTLIST text:sequence-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:sequence-ref text:reference-format (page|chapter|text|direction|category-and-value|caption|value) #IMPLIED>
+
+<!ELEMENT text:bookmark-ref (#PCDATA)>
+<!ATTLIST text:bookmark-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:bookmark-ref text:reference-format (page|chapter|text|direction) #IMPLIED>
+
+<!ELEMENT text:footnote-ref (#PCDATA)>
+<!ATTLIST text:footnote-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:footnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED>
+
+<!ELEMENT text:endnote-ref (#PCDATA)>
+<!ATTLIST text:endnote-ref text:ref-name %string; #REQUIRED>
+<!ATTLIST text:endnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED>
+
+<!ELEMENT text:sheet-name (#PCDATA)>
+
+<!ELEMENT text:page-count (#PCDATA)>
+<!ATTLIST text:page-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:page-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:paragraph-count (#PCDATA)>
+<!ATTLIST text:paragraph-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:paragraph-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:word-count (#PCDATA)>
+<!ATTLIST text:word-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:word-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:character-count (#PCDATA)>
+<!ATTLIST text:character-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:character-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:table-count (#PCDATA)>
+<!ATTLIST text:table-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:table-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:image-count (#PCDATA)>
+<!ATTLIST text:image-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:image-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:object-count (#PCDATA)>
+<!ATTLIST text:object-count style:num-format %string; #IMPLIED>
+<!ATTLIST text:object-count style:num-letter-sync %boolean; "false">
+
+<!ELEMENT text:bibliography-mark (#PCDATA)>
+<!ATTLIST text:bibliography-mark text:bibiliographic-type
+ ( article | book | booklet | conference | custom1 | custom2 | custom3 |
+ custom4 | custom5 | email | inbook | incollection | inproceedings |
+ journal | manual | mastersthesis | misc | phdthesis | proceedings |
+ techreport | unpublished | www ) #REQUIRED >
+<!ATTLIST text:bibliography-mark text:identifier CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:address CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:annote CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:author CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:booktitle CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:chapter CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:edition CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:editor CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:howpublished CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:institution CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:journal CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:month CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:note CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:number CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:organizations CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:pages CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:publisher CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:school CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:series CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:title CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:report-type CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:volume CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:year CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:url CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom1 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom2 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom3 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom4 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:custom5 CDATA #IMPLIED>
+<!ATTLIST text:bibliography-mark text:isbn CDATA #IMPLIED>
+
+
+<!ELEMENT text:bookmark EMPTY>
+<!ATTLIST text:bookmark text:name CDATA #REQUIRED>
+
+<!ELEMENT text:bookmark-start EMPTY>
+<!ATTLIST text:bookmark-start text:name CDATA #REQUIRED>
+
+<!ELEMENT text:bookmark-end EMPTY>
+<!ATTLIST text:bookmark-end text:name CDATA #REQUIRED>
+
+<!ELEMENT text:reference-mark EMPTY>
+<!ATTLIST text:reference-mark text:name CDATA #REQUIRED>
+
+<!ELEMENT text:reference-mark-start EMPTY>
+<!ATTLIST text:reference-mark-start text:name CDATA #REQUIRED>
+
+<!ELEMENT text:reference-mark-end EMPTY>
+<!ATTLIST text:reference-mark-end text:name CDATA #REQUIRED>
+
+<!ELEMENT text:footnotes-configuration (text:footnote-continuation-notice-forward?,text:footnote-continuation-notice-backward?)>
+<!ATTLIST text:footnotes-configuration style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:footnotes-configuration style:num-suffix %string; #IMPLIED>
+<!ATTLIST text:footnotes-configuration style:num-format %string; #IMPLIED>
+<!ATTLIST text:footnotes-configuration style:num-letter-sync %string; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:citation-body-style-name %styleName; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:citation-style-name %styleName; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:default-style-name %styleName; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:master-page-name %styleName; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:start-value %integer; #IMPLIED>
+<!ATTLIST text:footnotes-configuration text:footnotes-position (document|page) "page">
+<!ATTLIST text:footnotes-configuration text:start-numbering-at (document|chapter|page) "document">
+
+<!ELEMENT text:footnote-continuation-notice-forward (#PCDATA)>
+<!ELEMENT text:footnote-continuation-notice-backward (#PCDATA)>
+
+<!ELEMENT text:endnotes-configuration EMPTY>
+<!ATTLIST text:endnotes-configuration style:num-prefix %string; #IMPLIED>
+<!ATTLIST text:endnotes-configuration style:num-suffix %string; #IMPLIED>
+<!ATTLIST text:endnotes-configuration style:num-format %string; #IMPLIED>
+<!ATTLIST text:endnotes-configuration style:num-letter-sync %string; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:start-value %integer; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:citation-style-name %styleName; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:citation-body-style-name %styleName; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:default-style-name %styleName; #IMPLIED>
+<!ATTLIST text:endnotes-configuration text:master-page-name %styleName; #IMPLIED>
+
+<!-- Validity constraint: text:footnote and text:endnote elements may not
+ contain other text:footnote or text:endnote elements, even though the DTD
+ allows this (via the %text; in the foot-/endnote-body).
+ Unfortunatetly, this constraint cannot be easily specified in the DTD.
+-->
+<!ELEMENT text:footnote (text:footnote-citation, text:footnote-body)>
+<!ATTLIST text:footnote text:id ID #IMPLIED>
+
+<!ELEMENT text:footnote-citation (#PCDATA)>
+<!ATTLIST text:footnote-citation text:label %string; #IMPLIED>
+
+<!ELEMENT text:footnote-body (text:h|text:p|
+ text:ordered-list|text:unordered-list)*>
+
+<!ELEMENT text:endnote (text:endnote-citation, text:endnote-body)>
+<!ATTLIST text:endnote text:id ID #IMPLIED>
+
+<!ELEMENT text:endnote-citation (#PCDATA)>
+<!ATTLIST text:endnote-citation text:label %string; #IMPLIED>
+
+<!ELEMENT text:endnote-body (text:h|text:p|
+ text:ordered-list|text:unordered-list)*>
+
+<!ENTITY % sectionText "(text:h|text:p|text:ordered-list|
+ text:unordered-list|table:table|chart:chart|draw:page|
+ draw:a|draw:text-box|draw:image|text:section|
+ text:table-of-content|text:illustration-index|
+ text:table-index|text:object-index|text:user-index|
+ text:alphabetical-index|text:bibliography|
+ text:index-title|%change-marks;)*">
+
+<!ELEMENT text:section ((text:section-source|office:dde-source)?,
+ %sectionText;) >
+
+<!ATTLIST text:section text:name CDATA #REQUIRED>
+<!ATTLIST text:section text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:section text:display (true|none|condition) "true">
+<!ATTLIST text:section text:condition %formula; #IMPLIED>
+<!ATTLIST text:section text:protected %boolean; "false">
+<!ATTLIST text:section text:protection-key CDATA #IMPLIED>
+
+<!ELEMENT text:section-source EMPTY>
+<!ATTLIST text:section-source xlink:href %string; #IMPLIED>
+<!ATTLIST text:section-source xlink:type (simple) #FIXED "simple">
+<!ATTLIST text:section-source xlink:show (embed) #FIXED "embed">
+<!ATTLIST text:section-source text:section-name %string; #IMPLIED>
+<!ATTLIST text:section-source text:filter-name %string; #IMPLIED>
+
+<!ELEMENT text:table-of-content (text:table-of-content-source,
+ text:index-body) >
+<!ATTLIST text:table-of-content text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:table-of-content text:protected %boolean; "false">
+
+<!ELEMENT text:table-of-content-source (text:index-title-template? ,
+ text:table-of-content-entry-template*,
+ text:index-source-styles* ) >
+<!ATTLIST text:table-of-content-source text:outline-level %integer; #IMPLIED>
+<!ATTLIST text:table-of-content-source text:use-index-marks %boolean; "true">
+<!ATTLIST text:table-of-content-source text:use-index-source-styles
+ %boolean; "false">
+<!ATTLIST text:table-of-content-source text:index-scope (document|chapter)
+ "document">
+<!ATTLIST text:table-of-content-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:table-of-content-source fo:language %string; #IMPLIED>
+<!ATTLIST text:table-of-content-source fo:country %string; #IMPLIED>
+<!ATTLIST text:table-of-content-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:table-of-content-entry-template (text:index-entry-chapter-number |
+ text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop |
+ text:index-entry-link-start |
+ text:index-entry-link-end)* >
+<!ATTLIST text:table-of-content-entry-template text:outline-level
+ %integer; #REQUIRED>
+<!ATTLIST text:table-of-content-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:illustration-index
+ (text:illustration-index-source, text:index-body)>
+<!ATTLIST text:illustration-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:illustration-index text:protected %boolean; "false">
+
+<!ELEMENT text:illustration-index-source (text:index-title-template?,
+ text:illustration-index-entry-template?) >
+<!ATTLIST text:illustration-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:illustration-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:illustration-index-source text:use-caption %boolean; "true">
+<!ATTLIST text:illustration-index-source text:caption-sequence-name
+ %string; #IMPLIED>
+<!ATTLIST text:illustration-index-source text:caption-sequence-format
+ (text|category-and-value|caption) "text">
+<!ATTLIST text:illustration-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:illustration-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:illustration-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:illustration-index-entry-template
+ ( text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:illustration-index-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:table-index (text:table-index-source, text:index-body)>
+<!ATTLIST text:table-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:table-index text:protected %boolean; "false">
+
+<!ELEMENT text:table-index-source (text:index-title-template?,
+ text:table-index-entry-template?) >
+<!ATTLIST text:table-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:table-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:table-index-source text:use-caption %boolean; "true">
+<!ATTLIST text:table-index-source text:caption-sequence-name
+ %string; #IMPLIED>
+<!ATTLIST text:table-index-source text:caption-sequence-format
+ (text|category-and-value|caption) "text">
+<!ATTLIST text:table-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:table-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:table-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:table-index-entry-template ( text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:table-index-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:object-index ( text:object-index-source, text:index-body ) >
+<!ATTLIST text:object-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:object-index text:protected %boolean; "false">
+
+<!ELEMENT text:object-index-source ( text:index-title-template?,
+ text:object-index-entry-template? ) >
+<!ATTLIST text:object-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:object-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:object-index-source text:use-spreadsheet-objects
+ %boolean; "false">
+<!ATTLIST text:object-index-source text:use-draw-objects %boolean; "false">
+<!ATTLIST text:object-index-source text:use-chart-objects %boolean; "false">
+<!ATTLIST text:object-index-source text:use-other-objects %boolean; "false">
+<!ATTLIST text:object-index-source text:use-math-objects %boolean; "false">
+<!ATTLIST text:object-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:object-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:object-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:object-index-entry-template ( text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:object-index-entry-template text:style-name
+ %styleName; #REQUIRED >
+
+<!ELEMENT text:user-index (text:user-index-source, text:index-body) >
+<!ATTLIST text:user-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:user-index text:protected %boolean; "false">
+
+<!ELEMENT text:user-index-source ( text:index-title-template?,
+ text:user-index-entry-template*,
+ text:index-source-styles* ) >
+<!ATTLIST text:user-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:user-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:user-index-source text:use-index-marks %boolean; "false">
+<!ATTLIST text:user-index-source text:use-graphics %boolean; "false">
+<!ATTLIST text:user-index-source text:use-tables %boolean; "false">
+<!ATTLIST text:user-index-source text:use-floating-frames %boolean; "false">
+<!ATTLIST text:user-index-source text:use-objects %boolean; "false">
+<!ATTLIST text:user-index-source text:use-index-source-styles
+ %boolean; "false">
+<!ATTLIST text:user-index-source text:copy-outline-level %boolean; "false">
+<!ATTLIST text:user-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:user-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:user-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:user-index-entry-template ( text:index-entry-chapter |
+ text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:user-index-entry-template text:outline-level %integer; #REQUIRED>
+<!ATTLIST text:user-index-entry-template text:style-name %styleName; #REQUIRED>
+
+<!ELEMENT text:alphabetical-index (text:alphabetical-index-source,
+ text:index-body)>
+<!ATTLIST text:alphabetical-index text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:alphabetical-index text:protected %boolean; "false">
+
+<!ELEMENT text:alphabetical-index-source ( text:index-title-template?,
+ text:alphabetical-index-entry-template* ) >
+<!ATTLIST text:alphabetical-index-source text:index-scope
+ (document|chapter) "document">
+<!ATTLIST text:alphabetical-index-source text:relative-tab-stop-position
+ %boolean; "true">
+<!ATTLIST text:alphabetical-index-source text:ignore-case %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:main-entry-style-name
+ %styleName; #IMPLIED>
+<!ATTLIST text:alphabetical-index-source text:alphabetical-separators
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:combine-entries
+ %boolean; "true">
+<!ATTLIST text:alphabetical-index-source text:combine-entries-with-dash
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:combine-entries-with-pp
+ %boolean; "true">
+<!ATTLIST text:alphabetical-index-source text:use-keys-as-entries
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:capitalize-entries
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source text:comma-separated
+ %boolean; "false">
+<!ATTLIST text:alphabetical-index-source fo:language %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-source fo:country %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-source text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:alphabetical-index-entry-template ( text:index-entry-chapter |
+ text:index-entry-page-number |
+ text:index-entry-text |
+ text:index-entry-span |
+ text:index-entry-tab-stop )* >
+<!ATTLIST text:alphabetical-index-entry-template text:outline-level
+ (1|2|3|separator) #REQUIRED>
+<!ATTLIST text:alphabetical-index-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:alphabetical-index-auto-mark-file EMPTY>
+<!ATTLIST text:alphabetical-index-auto-mark-file xlink:href CDATA #IMPLIED>
+<!ATTLIST text:alphabetical-index-auto-mark-file xlink:type (simple) #FIXED "simple">
+
+<!ELEMENT text:bibliography (text:bibliography-source, text:index-body) >
+<!ATTLIST text:bibliography text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:bibliography text:protected %boolean; "false">
+
+<!ELEMENT text:bibliography-source ( text:index-title-template?,
+ text:bibliography-entry-template* ) >
+
+<!ELEMENT text:bibliography-entry-template ( text:index-entry-span |
+ text:index-entry-tab-stop |
+ text:index-entry-bibliography )* >
+<!ATTLIST text:bibliography-entry-template text:bibliography-type
+ ( article | book | booklet | conference | custom1 | custom2 |
+ custom3 | custom4 | custom5 | email | inbook | incollection |
+ inproceedings | journal | manual | mastersthesis | misc |
+ phdthesis | proceedings | techreport | unpublished | www )
+ #REQUIRED >
+<!ATTLIST text:bibliography-entry-template text:style-name
+ %styleName; #REQUIRED>
+
+<!ELEMENT text:index-body %sectionText; >
+
+<!--
+Validity constraint: text:index-title elements may appear only in
+indices, and there may be only one text:index-title element.
+-->
+<!ELEMENT text:index-title %sectionText; >
+<!ATTLIST text:index-title text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:index-title text:name %string; #IMPLIED>
+
+<!ELEMENT text:index-title-template (#PCDATA)>
+<!ATTLIST text:index-title-template text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-chapter-number EMPTY>
+<!ATTLIST text:index-entry-chapter-number text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-chapter EMPTY>
+<!ATTLIST text:index-entry-chapter text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:index-entry-chapter text:display (name|number|number-and-name)
+ "number-and-name" >
+
+<!ELEMENT text:index-entry-text EMPTY>
+<!ATTLIST text:index-entry-text text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-page-number EMPTY>
+<!ATTLIST text:index-entry-page-number text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-span (#PCDATA)>
+<!ATTLIST text:index-entry-span text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-bibliography EMPTY>
+<!ATTLIST text:index-entry-bibliography text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:index-entry-bibliography text:bibliography-data-field
+ ( address | annote | author | bibiliographic_type |
+ booktitle | chapter | custom1 | custom2 |
+ custom3 | custom4 | custom5 | edition | editor |
+ howpublished | identifier | institution | isbn |
+ journal | month | note | number | organizations |
+ pages | publisher | report_type | school |
+ series | title | url | volume | year ) #REQUIRED>
+
+
+<!ELEMENT text:index-entry-tab-stop EMPTY>
+<!ATTLIST text:index-entry-tab-stop text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:index-entry-tab-stop style:leader-char %character; " ">
+<!ATTLIST text:index-entry-tab-stop style:type (left|right) "left">
+<!ATTLIST text:index-entry-tab-stop style:position %length; #IMPLIED>
+
+<!ELEMENT text:index-entry-link-start EMPTY>
+<!ATTLIST text:index-entry-link-start text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-entry-link-end EMPTY>
+<!ATTLIST text:index-entry-link-end text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:index-source-styles (text:index-source-style)*>
+<!ATTLIST text:index-source-styles text:outline-level %integer; #REQUIRED>
+
+<!ELEMENT text:index-source-style EMPTY>
+<!ATTLIST text:index-source-style text:style-name %styleName; #REQUIRED>
+
+<!ELEMENT text:toc-mark-start EMPTY>
+<!ATTLIST text:toc-mark-start text:id %string; #REQUIRED>
+<!ATTLIST text:toc-mark-start text:outline-level %integer; #IMPLIED>
+
+<!ELEMENT text:toc-mark-end EMPTY>
+<!ATTLIST text:toc-mark-end text:id %string; #REQUIRED>
+
+<!ELEMENT text:toc-mark EMPTY>
+<!ATTLIST text:toc-mark text:string-value %string; #REQUIRED>
+<!ATTLIST text:toc-mark text:outline-level %integer; #IMPLIED>
+
+<!ELEMENT text:user-index-mark-start EMPTY>
+<!ATTLIST text:user-index-mark-start text:id %string; #REQUIRED>
+<!ATTLIST text:user-index-mark-start text:outline-level %integer; #IMPLIED>
+<!ATTLIST text:user-index-mark-start text:index-name %string; #IMPLIED>
+
+<!ELEMENT text:user-index-mark-end EMPTY>
+<!ATTLIST text:user-index-mark-end text:id %string; #REQUIRED>
+
+<!ELEMENT text:user-index-mark EMPTY>
+<!ATTLIST text:user-index-mark text:string-value %string; #REQUIRED>
+<!ATTLIST text:user-index-mark text:outline-level %integer; #IMPLIED>
+<!ATTLIST text:user-index-mark text:index-name %string; #IMPLIED>
+
+<!ELEMENT text:alphabetical-index-mark-start EMPTY>
+<!ATTLIST text:alphabetical-index-mark-start text:id %string; #REQUIRED>
+<!ATTLIST text:alphabetical-index-mark-start text:key1 %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-mark-start text:key2 %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-mark-start text:main-etry %boolean; "false">
+
+<!ELEMENT text:alphabetical-index-mark-end EMPTY>
+<!ATTLIST text:alphabetical-index-mark-end text:id %string; #REQUIRED>
+
+<!ELEMENT text:alphabetical-index-mark EMPTY>
+<!ATTLIST text:alphabetical-index-mark text:string-value %string; #REQUIRED>
+<!ATTLIST text:alphabetical-index-mark text:key1 %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-mark text:key2 %string; #IMPLIED>
+<!ATTLIST text:alphabetical-index-mark text:main-etry %boolean; "false">
+
+<!ELEMENT text:bibliography-configuration (text:sort-key)*>
+<!ATTLIST text:bibliography-configuration text:prefix %string; #IMPLIED>
+<!ATTLIST text:bibliography-configuration text:suffix %string; #IMPLIED>
+<!ATTLIST text:bibliography-configuration text:sort-by-position %boolean; "true">
+<!ATTLIST text:bibliography-configuration text:numbered-entries %boolean; "false">
+<!ATTLIST text:bibliography-configuration fo:language %string; #IMPLIED>
+<!ATTLIST text:bibliography-configuration fo:country %string; #IMPLIED>
+<!ATTLIST text:bibliography-configuration text:sort-algorithm %string; #IMPLIED>
+
+<!ELEMENT text:sort-key EMPTY>
+<!ATTLIST text:sort-key text:key ( address | annote | author |
+ bibiliographic_type | booktitle | chapter | custom1 | custom2 |
+ custom3 | custom4 | custom5 | edition | editor | howpublished |
+ identifier | institution | isbn | journal | month | note | number |
+ organizations | pages | publisher | report_type | school | series |
+ title | url | volume | year ) #REQUIRED>
+<!ATTLIST text:sort-key text:sort-ascending %boolean; "true">
+
+<!ELEMENT text:linenumbering-configuration (text:linenumbering-separator?)>
+<!ATTLIST text:linenumbering-configuration text:style-name %styleName; #IMPLIED>
+<!ATTLIST text:linenumbering-configuration text:number-lines %boolean; "true">
+<!ATTLIST text:linenumbering-configuration text:count-empty-lines %boolean; "true">
+<!ATTLIST text:linenumbering-configuration text:count-in-floating-frames %boolean; "false">
+<!ATTLIST text:linenumbering-configuration text:restart-numbering %boolean; "false">
+<!ATTLIST text:linenumbering-configuration text:offset %nonNegativeLength; #IMPLIED>
+<!ATTLIST text:linenumbering-configuration style:num-format (1|a|A|i|I) "1">
+<!ATTLIST text:linenumbering-configuration style:num-letter-sync %boolean; "false">
+<!ATTLIST text:linenumbering-configuration text:number-position (left|rigth|inner|outer) "left">
+<!ATTLIST text:linenumbering-configuration text:increment %nonNegativeInteger; #IMPLIED>
+
+<!ELEMENT text:linenumbering-separator (#PCDATA)>
+<!ATTLIST text:linenumbering-separator text:increment %nonNegativeInteger; #IMPLIED>
+
+<!ELEMENT text:script (#PCDATA)>
+<!ATTLIST text:script script:language CDATA #REQUIRED>
+<!ATTLIST text:script xlink:href CDATA #IMPLIED>
+<!ATTLIST text:script xlink:type (simple) #FIXED "simple">
+
+<!ELEMENT text:measure (#PCDATA)>
+<!ATTLIST text:measure text:kind (value|unit|gap) #REQUIRED>
+
+<!ELEMENT text:ruby (text:ruby-base, text:ruby-text)>
+<!ATTLIST text:ruby text:style-name %styleName; #IMPLIED>
+
+<!ELEMENT text:ruby-base %inline-text;>
+
+<!ELEMENT text:ruby-text (#PCDATA)>
+<!ATTLIST text:ruby-text text:style-name %styleName; #IMPLIED>
+
+<!-- elements for change tracking -->
+
+<!ELEMENT text:change EMPTY>
+<!ATTLIST text:change text:change-id CDATA #REQUIRED>
+
+<!ELEMENT text:change-start EMPTY>
+<!ATTLIST text:change-start text:change-id CDATA #REQUIRED>
+
+<!ELEMENT text:change-end EMPTY>
+<!ATTLIST text:change-end text:change-id CDATA #REQUIRED>
+
+<!ELEMENT text:tracked-changes (text:changed-region)*>
+<!ATTLIST text:tracked-changes text:track-changes %boolean; "true">
+<!ATTLIST text:tracked-changes text:protection-key CDATA #IMPLIED>
+
+<!ELEMENT text:changed-region (text:insertion |
+ (text:deletion, text:insertion?) |
+ text:format-change) >
+<!ATTLIST text:changed-region text:id ID #REQUIRED>
+
+<!ELEMENT text:insertion (office:change-info, %sectionText;)>
+<!ELEMENT text:deletion (office:change-info, %sectionText;)>
+<!ELEMENT text:format-change (office:change-info)>
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/pdbcomparison.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/pdbcomparison.java
new file mode 100644
index 000000000000..b5afcf3ae9fa
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/pdbcomparison.java
@@ -0,0 +1,545 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: pdbcomparison.java,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+import java.io.*;
+import java.util.*;
+
+public class pdbcomparison
+{
+
+ private String LOGTAG ="LOGFILE";
+ private String OUTTAG ="OUTFILE";
+ private String LISTTAG ="LISTFILE";
+ private String PDBTAG1 ="PDBNAME1";
+ private String PDBTAG2 ="PDBNAME2";
+
+ private String OUTFILE="pdbcomparison.out";
+ private String LOGFILE="pdbcomparison.log";
+
+ private String pdbarr1[];
+ private String pdbarr2[];
+
+
+ /**
+ * Default Constructor
+ *
+ * @param
+ * @return
+ *
+ */
+ public void pdbcomparison()
+ {
+ }
+
+ /**
+ * Prints the command line arguments for this class
+ *
+ * @param
+ *
+ * @return void
+ *
+ */
+ public void usage()
+ {
+ String str = new String();
+ str += "********************************************************\n";
+ str += " java pdbcomparison.java <propFile> \n";
+ str += " where propFile is name of Property File...\n";
+ str += "********************************************************\n";
+
+ System.out.println(str);
+
+ }
+
+ /**
+ * This method, read the Property file and validates the
+ * entries in that file, and accordingly sets the log file
+ * output file and updates the array pdbarr1 and pdbarr2 with
+ * list of pdb's to be compared.
+ *
+ * @param propFile Property filename which list the log/outputfile/list/pdb
+ * names
+ * @return
+ *
+ */
+ public void parsePropertyFile(String propFile)
+ {
+ Properties defaultProps = new Properties();
+
+ try {
+ FileInputStream in = new FileInputStream(propFile);
+ defaultProps.load(in);
+ in.close();
+ } catch (IOException e) {
+ System.out.println("Could not open Property File " + propFile);
+ return;
+ }
+
+
+ String logFile = defaultProps.getProperty(this.LOGTAG);
+ String outFile = defaultProps.getProperty(this.OUTTAG);
+ String listFile = defaultProps.getProperty(this.LISTTAG);
+ String pdbname1 = defaultProps.getProperty(this.PDBTAG1);
+ String pdbname2 = defaultProps.getProperty(this.PDBTAG2);
+
+ // validate all command line arguments
+ if ((listFile == null) && ((pdbname1 == null) || (pdbname2 == null)))
+ {
+ System.out.println("Missing listFile or missing pdb filenames in Property file " + propFile);
+ return;
+ }
+
+ if (logFile == null || logFile.length() == 0)
+ logFile = this.LOGFILE;
+
+ if (outFile == null || outFile.length() == 0)
+ outFile = this.LOGFILE;
+
+
+ // validate log and output files
+ if (! validateAndCreateFile(logFile)) return;
+ if (! validateAndCreateFile(outFile)) return;
+ LOGFILE = logFile;
+ OUTFILE = outFile;
+
+ System.out.println("Output is written to log file... " + LOGFILE);
+ if (listFile != null)
+ {
+ if (! checkFile(listFile)) return;
+ populatePDBArray(listFile);
+ } else {
+ if (! checkFile(pdbname1)) return;
+ if (! checkFile(pdbname2)) return;
+ populatePDBArray(pdbname1, pdbname2);
+ }
+ }
+
+ /**
+ * This method validates if the file passed exists.
+ * If it does , then it is moved to <filename>.bak and then creates a newFile.
+ * Also validates permissions to create.
+ *
+ * @param filename name of file to be created
+ * @return true, if file could be created
+ * false, if could not.
+ *
+ */
+ private boolean validateAndCreateFile (String filename)
+ {
+ if (filename == null) return false;
+
+ File f = null;
+ try {
+ f = new File(filename);
+ } catch (NullPointerException e) {
+ System.out.println("Could not create a File object for file " + filename);
+ return false;
+ }
+
+ if (f.exists())
+ {
+ String newFile = filename + ".bak";
+ File newF=null;
+ try {
+ newF = new File(newFile);
+ } catch (Exception ex) {
+ System.out.println("Could not get File Object instance for " + newFile);
+ return false;
+ }
+
+ if (newF.exists())
+ {
+ try {
+ newF.delete();
+ } catch ( SecurityException se) {
+ System.out.println("Could not get delete " + newFile);
+ return false;
+ }
+ }
+
+ try {
+ if (! f.renameTo(newF))
+ {
+ System.out.println("Could not rename " + filename + " to " + newFile );
+ return false;
+ }
+ } catch (SecurityException s) {
+ System.out.println("SecurityException: " + s.toString());
+ return false;
+ } catch (NullPointerException n) {
+ System.out.println("NullPointerException: " + n.toString());
+ return false;
+ }
+ } else {
+ try {
+ if (! f.createNewFile())
+ {
+ System.out.println("Could not create " + filename + " Check permissions..");
+ return false;
+ }
+ } catch (IOException e) {
+ System.out.println("IOException: " + e.toString());
+ return false;
+ } catch (SecurityException s) {
+ System.out.println("SecuriityException: " + s.toString() );
+ return false;
+ }
+
+ }
+
+ return true;
+
+ }
+
+ /**
+ * This method validates if the file exists and is readable
+ *
+ * @param filename name of file to be created
+ * @return true, if file exists and is readable
+ * false, if not.
+ *
+ */
+ private boolean checkFile(String filename)
+ {
+ if (filename == null) return false;
+
+ File f = null;
+ try {
+ f = new File(filename);
+ } catch (NullPointerException e) {
+ System.out.println("Could not create a File object for file " + filename);
+ return false;
+ }
+
+ if (! f.exists())
+ {
+ System.out.println("File " + filename + " does not exist... ");
+ return false;
+ }
+
+ if (! f.canRead())
+ {
+ System.out.println("Cannot read file " + filename);
+ return false;
+ }
+
+ return true;
+
+ }
+
+ /**
+ * This method populates the pdb arrays with the names of the pdbs to
+ * compare. Ths listFile lists a series of entries, wherein each
+ * line indicates the PDB names to be compared.
+ * <pdbname1>=<pdbname2>
+ *
+ * @param listFile name of the listfile
+ * @return
+ *
+ */
+ private void populatePDBArray(String listFile)
+ {
+ // open ListFile and populate the PDB list to be compared
+ if (listFile != null)
+ {
+ Properties listProps = new Properties();
+ try {
+ FileInputStream in = new FileInputStream(listFile);
+ listProps.load(in);
+ in.close();
+ } catch (IOException ex) {
+ System.out.println("Could not open List File " + listFile);
+ return;
+ }
+
+ pdbarr1 = new String[listProps.size()];
+ pdbarr2 = new String[listProps.size()];
+ Enumeration e = listProps.keys();
+ int j=0;
+ while (e.hasMoreElements())
+ {
+ pdbarr1[j] = (String)e.nextElement();
+ pdbarr2[j] = listProps.getProperty(pdbarr1[j]);
+ j++;
+ }
+
+ }
+ }
+
+ /**
+ * This method populates the pdb arrays with the names of the pdbs to
+ * compare.
+ *
+ * @param pdbname1 Name of 2nd PDB file to be compared
+ * @param pdbname2 Name of 2nd PDB file to be compared
+ * @return
+ *
+ */
+ private void populatePDBArray(String pdbname1, String pdbname2)
+ {
+ if (pdbname1 == null) return;
+ if (pdbname2 == null) return;
+
+ if ((pdbname1 != null) && (pdbname2 != null))
+ {
+ pdbarr1 = new String[1];
+ pdbarr2 = new String[1];
+
+ pdbarr1[0] = pdbname1;
+ pdbarr2[0] = pdbname2;
+ }
+ }
+
+ /**
+ * This method populates the pdb arrays with the names of the pdbs to
+ * compare.
+ *
+ * @param arrayno Array number which corresponds to the pdb array
+ * containing list of pdbs
+ * If 1 then send pdbarr1, if 2 send pdbarr2 else null
+ *
+ * @return PDB string array containing list of PDB's
+ *
+ */
+ private String[] getPDBArray(int arrayno)
+ {
+ if (arrayno == 1) return pdbarr1;
+ if (arrayno == 2) return pdbarr2;
+
+ return null;
+ }
+
+ /**
+ * This method comares 2 PDB's and returns true if comparison is equal.
+ * It uses the PDB Decoder class to decode to a PDB structure and then
+ * does record comparison
+ *
+ * @param pdbname1 Name of one PDB file to be compared
+ * @param pdbname2 Name of other PDB file to be compared
+ *
+ * @return returns true if both PDB's are equal else returns false
+ *
+ */
+ private boolean comparePDB(String pdbname1, String pdbname2)
+ {
+ PalmDB pdb1=null, pdb2=null;
+ PDBDecoder decoder = new PDBDecoder();
+ try {
+ pdb1 = decoder.parse(pdbname1);
+ } catch (Exception e) {
+ System.out.println("Could not parse PDB " + pdbname1);
+ return false;
+ }
+
+ try {
+ pdb2 = decoder.parse(pdbname2);
+ } catch (Exception e) {
+ System.out.println("Could not parse PDB " + pdbname2);
+ return false;
+ }
+
+ if (pdb1.equals(pdb2)) {
+ writeToLog("PDB " + pdbname1 + " and PDB " + pdbname2 + " are equal");
+
+ return true;
+ } else {
+ writeToLog("PDB " + pdbname1 + " and PDB " + pdbname2 + " are not equal");
+ return false;
+ }
+ }
+
+
+
+ /**
+ * Write message to LOGFILE
+ *
+ * @param msg Message to be written to log file
+ * @return
+ *
+ */
+ private void writeToLog(String msg)
+ {
+ if (msg == null) return;
+
+ // Get Output Stream from Log file
+ RandomAccessFile raf=null;
+ try {
+ raf = new RandomAccessFile(LOGFILE, "rw");
+ } catch (Exception e) {
+ System.out.println ("Could not open file " + LOGFILE);
+ return;
+ }
+
+ try {
+ long len = raf.length();
+ raf.seek(len);
+ raf.write(msg.getBytes());
+ raf.write("\n".getBytes());
+ } catch (IOException e) {
+ System.out.println("ERROR: Could not write to File " + LOGFILE);
+ return;
+ }
+ }
+
+ /**
+ * Write status of comparison to OUTFILE
+ *
+ * @param status Indicates whether comparsion of PDB's PASSED or FAILED
+ * @param pdbname1 file name of pdb which was compared.
+ * @param pdbname2 file name of pdb which was compared.
+ *
+ * @return
+ *
+ */
+ private void writeToOutputFile(String status, String pdbname1, String pdbname2)
+ {
+ if (status == null) return;
+ if (pdbname1 == null) return;
+ if (pdbname2 == null) return;
+
+ String msg = pdbname1 + "=" + pdbname2 + ":" + status;
+
+ // Get Output Stream from Log file
+ RandomAccessFile raf=null;
+ try {
+ raf = new RandomAccessFile(OUTFILE, "rw");
+ } catch (Exception e) {
+ System.out.println ("Could not open file " + OUTFILE);
+ return;
+ }
+
+ try {
+ long len = raf.length();
+ raf.seek(len);
+
+ raf.write(msg.getBytes());
+ raf.write("\n".getBytes());
+ } catch (IOException e) {
+ System.out.println("ERROR: Could not write to File " + OUTFILE);
+ return;
+ }
+
+ try {
+ raf.close();
+ } catch (Exception e) {
+ System.out.println("ERROR: Could not close File " + OUTFILE);
+ return;
+ }
+
+ }
+
+
+
+ /**
+ * Main starting block of execution
+ *
+ * @param command line args captured in an array of Strings
+ * @return
+ *
+ */
+ public static void main(String args[])
+ {
+
+ Date startTime = new Date();
+ pdbcomparison pdbcmp = new pdbcomparison();
+ int nargs = args.length;
+ int status=0;
+
+ if (nargs != 1)
+ {
+ System.out.println("Incorrect no. of arguments passed...");
+ pdbcmp.usage();
+ System.exit(-1);
+
+ }
+
+ String propFile = args[0];
+
+ File f=null;
+ try {
+ f = new File(propFile);
+ } catch (Exception e) {
+ System.out.println("Exception: Could not open file " + propFile);
+ System.exit(-1);
+ }
+
+ if (! f.canRead()) {
+ System.out.println("Exception: " + propFile + " is not a file ");
+ System.exit(-1);
+ }
+
+ if (! f.canRead()) {
+ System.out.println("Exception: Cannot open file for reading. Please check permissions ");
+ System.exit(-1);
+ }
+
+ // parse Property file
+ pdbcmp.parsePropertyFile(propFile);
+
+ String pdbarr1[] = pdbcmp.getPDBArray(1);
+ String pdbarr2[] = pdbcmp.getPDBArray(2);
+ if ( (pdbarr1 == null) ||
+ (pdbarr2 == null) ||
+ (pdbarr1.length == 0) ||
+ (pdbarr1.length == 0))
+ {
+ System.out.println("pdbArray is empty. No PDBS to compare... \n");
+ System.exit(-1);
+ }
+
+
+ pdbcmp.writeToLog("************** Start *****************");
+ pdbcmp.writeToLog("PDB Comparison: start time " + startTime);
+ for (int i=0; i<pdbarr1.length; i++)
+ {
+ Date pdb_startTime = new Date();
+ pdbcmp.writeToLog("\n");
+ pdbcmp.writeToLog("start time " + pdb_startTime);
+ boolean val = pdbcmp.comparePDB(pdbarr1[i], pdbarr2[i]);
+ Date pdb_endTime = new Date();
+ pdbcmp.writeToLog("end time " + pdb_endTime);
+
+ if (val) {
+ pdbcmp.writeToOutputFile("PASSED", pdbarr1[i], pdbarr2[i]);
+ status=0;
+ } else {
+ pdbcmp.writeToOutputFile("FAILED", pdbarr1[i], pdbarr2[i]);
+ status=-1;
+ }
+ }
+
+ Date endTime = new Date();
+ pdbcmp.writeToLog("PDB Comparison: end time " + endTime);
+ pdbcmp.writeToLog("************** End *****************n");
+ pdbcmp.writeToLog("\n");
+
+ System.exit(status);
+ }
+}
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Doc_descriptions.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Doc_descriptions.sxc
new file mode 100644
index 000000000000..ba6817d889ac
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Doc_descriptions.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Spreadsheet_descriptions.csv b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Spreadsheet_descriptions.csv
new file mode 100644
index 000000000000..c798a553e78f
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Spreadsheet_descriptions.csv
@@ -0,0 +1,39 @@
+File|Test Name|Description
+c_addition.sxc||
+c_alignment.sxc||
+c_backwardrange.sxc||
+c_boolean.sxc||
+c_cellcurrencyalue.sxc||
+c_cellfloatvalue.sxc||
+c_cellpercentvalue.sxc||
+c_cellstringvalue.sxc||
+c_cellvalue.sxc||
+c_changetracking.sxc||
+c_character.sxc||
+c_chart.sxc||
+c_check.sxc||
+c_columnswidth.sxc||
+c_cyclic.sxc||
+c_dividebyzero.sxc||
+c_dividefloating.sxc||
+c_emptysheet.sxc||
+c_filter.sxc||
+c_forwardrange.sxc||
+c_hiddenrow.sxc||
+c_insertimage.sxc||
+c_invalidcellref.sxc||
+c_largerange.sxc||
+c_listrange.sxc||
+c_mathematical.sxc||
+c_null.sxc||
+c_protection.sxc||
+c_renamedsheets.sxc||
+c_rowheight.sxc||
+c_rowstyles.sxc||
+c_sheetreference.sxc||
+c_simpleformula.sxc||
+c_smallrange.sxc||
+c_styles.sxc||
+c_sumbackward.sxc||
+c_sumforward.sxc||
+c_threeemptysheet.sxc||
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Spreadsheet_descriptions.sxc b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Spreadsheet_descriptions.sxc
new file mode 100644
index 000000000000..7e9d37d3fa50
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/docs/Spreadsheet_descriptions.sxc
Binary files differ
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/lib/converterlib.pm b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/lib/converterlib.pm
new file mode 100755
index 000000000000..a504dca86bb9
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/lib/converterlib.pm
@@ -0,0 +1,1176 @@
+#!/usr/bin/perl
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: converterlib.pm,v $
+#
+# $Revision: 1.3 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+####################################################################
+# File Name: converterlib.pm
+# Version : 1.0
+# Project : XMerge
+# Author : Brian Cameron
+# Date : 5th Sept. 2001
+#
+# This script enters text at position x,y on screen.
+#
+# Parameter
+# x-coordinate
+# y-coordinate
+# Text to enter
+#
+##########################################################################
+
+use EmRPC; # EmRPC::OpenConnection, CloseConnection
+use EmFunctions;
+use EmUtils;
+
+# Set global_debug flag
+#
+$global_debug = $ENV{'ZENDEBUG'};
+#$em_script_home = "/export/home/test/qadir/bin";
+$em_script_home = $ENV{'EM_SCRIPT_HOME'};
+#$qa_script_home = "/export/home/test/qadir/qa-new/bin";
+ $qa_script_home = $ENV{'QA_SCRIPT_HOME'};
+#
+# CONVERT FUNCTIONS
+#
+
+# convert_to_pdb
+# directory - directory containing the xml-orig and pdb-orig
+# subdirectories.
+# file - file to convert
+# extension - extension of file to convert (sxw or sxc)
+# convert_to - what PDB format to convert into.
+#
+# Returns 0 if success, -1 otherwise.
+#
+# Converts file from XML to PDB
+#
+sub convert_to_pdb
+{
+ my $directory = $_[0];
+ my $file = $_[1];
+ my $extension = $_[2];
+ my $convert_to = $_[3];
+ my $pdb_directory = $_[4];
+ my $rc = 0;
+ my $xmlfile = "$directory/$file.$extension";
+ my $pdbdir = "$pdb_directory";
+
+ &enter_func("convert_to_pdb");
+
+ if (! -f "$xmlfile")
+ {
+ print "\nERROR, file $xmlfile does not exist\n";
+ $rc = -1;
+ }
+ if (! -d "$pdbdir")
+ {
+ print "\nERROR, directory $directory/pdb-orig does not exist\n";
+ $rc = -1;
+ }
+
+ if ($rc != -1)
+ {
+ if ("$convert_to" eq "application/x-minicalc")
+ {
+ # Move all files over.
+ #
+ my $i = 1;
+
+ while (-f "$pdbdir/$file-Sheet$i.pdb")
+ {
+ my $pdbfile = "$pdbdir/$file-Sheet$i.pdb";
+
+ print "\n";
+
+ if (-f "$pdbfile.old")
+ {
+ print "Removing $pdbfile.old\n";
+ `/bin/rm -f $pdbfile.old`;
+ }
+
+ print "Moving $pdbfile file to $pdbfile.old\n";
+ `mv "$pdbfile" "$pdbfile.old"`;
+
+ $i++;
+ }
+ }
+ else
+ {
+ if (-f "$pdbdir/$file.pdb")
+ {
+ print "\n";
+
+ if (-f "$pdbdir/$file.pdb.old")
+ {
+ print "Removing $pdbdir/$file.pdb.old\n";
+ `/bin/rm -f $pdbdir/$file.pdb.old`;
+ }
+
+ print "Moving $pdbdir/$file.pdb file to $pdbdir/$file.pdb.old\n";
+ `mv "$pdbdir/$file.pdb" "$pdbdir/$file.pdb.old"`
+ }
+ }
+
+ &start_rd($extension, $convert_to, $xmlfile, "");
+
+ if ("$convert_to" eq "application/x-minicalc")
+ {
+ # Must handle minicalc separately since it can
+ # convert to multiple files with this file name
+ # convention.
+ #
+ print "Moving $file-Sheet*.pdb files to $pdbdir\n";
+ `mv $file-Sheet*.pdb $pdbdir`;
+ `chmod 666 $pdbdir/$file-*.pdb`;
+ }
+ else
+ {
+ print "Moving $file.pdb file to $pdbdir\n";
+ `mv $file.pdb $pdbdir`;
+ `chmod 666 $pdbdir/$file.pdb`;
+ }
+ }
+
+ &leave_func("convert_to_pdb");
+
+ return $rc;
+}
+
+# convert_to_xml
+# xmldir - directory to contain the xml output.
+# xmlorigdir - directory to contain the xml input (used for merge)
+# pdbfile - file to convert
+# convert_from - what PDB format to convert from.
+# extension - extension of file to convert (sxw or sxc)
+# output - output filename to create
+# merge_opt - 1 if convert and merge, 0 if convert only
+#
+# Returns 0 if success, -1 otherwise.
+#
+# Converts file from PDB to XML
+#
+sub convert_to_xml
+{
+ my $xmldir = $_[0];
+ my $xmlorigdir = $_[1];
+ my $pdbfile = $_[2];
+ my $convert_from = $_[3];
+ my $extension = $_[4];
+ my $output = $_[5];
+ my $merge_opt = $_[6];
+ my $rc = 0;
+
+ &enter_func("convert_to_xml");
+
+ my @args = split(/ /,$pdbfile);
+
+ for ($i=0;$i <= $#args; $i++)
+ {
+ if (! -f "@args[$i]")
+ {
+ print "\nERROR, file $pdbfile does not exist\n";
+ $rc = -1;
+ }
+ }
+
+ if (! -f "$xmlorigdir/$output.$extension")
+ {
+ print "\nERROR, file $xmlorigdir/$output.$extension does not exist\n";
+ $rc = -1;
+ }
+ if (! -d "$xmldir")
+ {
+ print "\nERROR, directory $xmlorigdir does not exist\n";
+ $rc = -1;
+ }
+ if (! -d "$xmlorigdir")
+ {
+ print "\nERROR, directory $xmldir does not exist\n";
+ $rc = -1;
+ }
+
+ if ($rc != -1)
+ {
+ if ($merge_opt == 1)
+ {
+ print "Copying <$xmlorigdir/$output.$extension> to <$xmldir>\n";
+ `cp $xmlorigdir/$output.$extension $xmldir/`;
+
+ my $check_stamp = (stat("$xmldir/$output.$extension"))[9];
+
+ &start_rd($convert_from, $extension, $pdbfile,
+ "$xmldir/$output.$extension");
+
+
+ # No need to move the file to the $xmldir since the merge
+ # argument specifies the output file.
+
+ my $check_stamp_update = (stat("$xmldir/$output.$extension"))[9];
+ if ($check_stamp eq $check_stamp_update)
+ {
+ print "\nERROR, Problem while merging <$xmldir/$output.$extension>\n";
+ `mv $xmldir/$output.$extension $xmldir/$output.$extension.err`;
+ }
+ }
+ else
+ {
+ &start_rd($convert_from, $extension, $pdbfile, "");
+
+ print "Moving $output.$extension to $xmldir\n";
+ `mv $output.$extension $xmldir`;
+ `chmod 666 $xmldir/$output.$extension`;
+ }
+ }
+
+ &leave_func("convert_to_xml");
+
+ return $rc;
+}
+
+# start_rd
+# from - format to convert from
+# to - format to convert to
+# file - file to convert
+# merge - merge filename ("" indicates convert-only with no merge)
+#
+# converts file from/to the specified formats.
+#
+sub start_rd
+{
+ my $from = $_[0];
+ my $to = $_[1];
+ my $file = $_[2];
+ my $merge = $_[3];
+
+ print "\nConverting from $from to $to.\n";
+ if ($global_debug)
+ {
+ &print_debug ("rd command is:\n");
+ }
+
+ if ($merge eq "")
+ {
+ &print_debug (" $em_script_home/rd -from $from -to $to $file\n");
+ print "\nConverting from $from to $to with no merge.\n";
+ `$em_script_home/rd -from $from -to $to $file`;
+ }
+ else
+ {
+ &print_debug (" $em_script_home/rd -from $from -to $to -merge $merge $file\n");
+ print "\nConverting from $from to $to with merge.\n";
+ `$em_script_home/rd -from $from -to $to -merge $merge $file`;
+ }
+
+ print "Done converting.\n\n";
+}
+
+#
+# POSE INTERACTION FUNCTIONS
+#
+
+# open_connection
+# display_debug - debug will be displayed if not 0
+#
+# Opens the connection to pose.
+#
+sub open_connection
+{
+ my $display_debug = $_[0];
+ my $rc;
+
+ EmRPC::OpenConnection(6415, "localhost");
+
+ if ($display_debug && $global_debug)
+ {
+ print "\nPose Connection Opened\n";
+ }
+}
+
+# close_connection
+# display_debug - debug will be displayed if not 0
+#
+# Closes the connection to pose.
+#
+sub close_connection
+{
+ my $display_debug = $_[0];
+
+ EmRPC::CloseConnection();
+
+ if ($display_debug && $global_debug)
+ {
+ print "\nPose Connection Closed\n";
+ }
+}
+
+# start_pose
+# pose_exe - name of pose executable.
+# apps_load - The PRC files to load into pose, can be a comma
+# separated list.
+# run_prog - Program to run at startup.
+# timeout - Timeout value to use when starting pose.
+#
+# Starts the Palm OS Emulator, loads PRC files, and starts
+# a program.
+#
+sub start_pose
+{
+ my $pose_exe = $_[0];
+ my $sessionfile = $ENV{'EM_SESSION_FILE'};
+ my $romfile = $ENV{'EM_ROM_FILE'};
+ my $apps_load = $_[1];
+ my $run_prog = $_[2];
+ my $timeout = $_[3];
+ my $stay_in_loop = 1;
+ my $address;
+ my $title;
+ my $form;
+ my $label_id;
+ my $num_objects;
+ my $i;
+ my $ii;
+ my $rc = 1;
+
+ my $pose_cmd = "$pose_exe ";
+ $pose_cmd .= " -psf $sessionfile ";
+ $pose_cmd .= "-load_apps $apps_load ";
+ $pose_cmd .= "-run_app $run_prog";
+
+# It is more effective to use the -psf argument to
+# set these values.
+#
+# $pose_cmd .= -rom $romfile ";
+# $pose_cmd .= "-ram_size 8192 ";
+# $pose_cmd .= "-device PalmVx ";
+
+ &enter_func("start_pose");
+
+ if ($global_debug)
+ {
+ &print_debug("\n");
+ &print_debug("pose command is:\n");
+ &print_debug(" $pose_cmd\n");
+ }
+
+ print "\nLaunching pose...\n";
+ system ("$pose_cmd &");
+
+ # Give time for pose to get started...
+ #
+ for ($i=0; $i < $timeout; $i++)
+ {
+ $tmp = $i + 1;
+ print "$tmp\n";
+
+ # Do not use pose_sleep here
+ #
+ sleep(1);
+ }
+
+ # Verify pose started successfully, and fail otherwise...
+ #
+ $rc = &verify_pose(5);
+ if ($rc != 0)
+ {
+ $stay_in_loop = 0;
+ }
+ else
+ {
+ # Sleep before opening the connection again, after testing in
+ # the verify_pose function.
+ #
+ pose_sleep(2);
+ &open_connection(1);
+ print "\nChecking if the appropriate window is on screen...\n";
+ }
+
+ # Stop looping when the specified window has started.
+ #
+ for ($i=0; $i < $timeout && $stay_in_loop == 1; $i++)
+ {
+ $form = FrmGetActiveForm();
+ $num_objects = FrmGetNumberOfObjects($form);
+
+ for $ii (0..$num_objects - 1)
+ {
+ my ($object_type) = FrmGetObjectType($form, $ii);
+
+ if ("$run_prog" eq "Quickword")
+ {
+ if ($object_type == frmTitleObj)
+ {
+ ($address, $title) = FrmGetTitle($form,);
+
+ # Display count and title.
+ #
+ $tmp = $i + 1;
+ print "$tmp - title is $title\n";
+
+ if ("$title" eq "Quickword")
+ {
+ $stay_in_loop = 0;
+ $rc = 0;
+ last;
+ }
+ }
+ }
+ elsif ("$run_prog" eq "MiniCalc")
+ {
+ if ($object_type == frmLabelObj)
+ {
+ $label_id = FrmGetObjectId ($form, $ii);
+ ($address, $label) = FrmGetLabel($form, $label_id);
+
+ # Display count and label.
+ #
+ $tmp = $i + 1;
+ print "$tmp - label is $label\n";
+ if ("$label" =~ "Solutions In Hand")
+ {
+ $stay_in_loop = 0;
+ $rc = 0;
+ last;
+ }
+ }
+ }
+ }
+
+ # Do not use pose_sleep here
+ #
+ sleep(1);
+ }
+
+ # Do not use pose_sleep here
+ #
+ sleep(1);
+
+ &leave_func("start_pose");
+ return($rc);
+}
+
+# kill_pose
+#
+# Kills all pose processes
+#
+sub kill_pose
+{
+ if ($global_debug)
+ {
+ print "Stopping pose process...\n";
+ }
+
+ `pkill pose`;
+}
+
+# verify_pose
+# timeout - timeout to wait for pose
+#
+# Tries to do a connect/close to Pose to see if
+# it is working okay.
+#
+sub verify_pose
+{
+ my $timeout = $_[0];
+ my $rc = 0;
+
+ $rc = system("$em_script_home/verify_sane.pl $timeout");
+ return $rc;
+}
+
+# db_export
+# dbname - Name of database to export
+#
+# Exports a palmdb file to /tmp
+#
+sub db_export
+{
+ my $dbname = $_[0];
+
+ &enter_func("db_export");
+ print "\nExporting PDB file <$dbname> from pose\n";
+ &pose_tap_pen(22, 20, 2);
+ &pose_tap_pen (15, 85, 2);
+ &enter_string($dbname, 1);
+ &pose_tap_pen (15, 126, 1);
+ &enter_string("/tmp/", 1);
+ &pose_tap_button("OK", 4);
+ &tap_applications(3);
+ print "Export of PDB file <$dbname> completed.\n";
+ &leave_func("db_export");
+}
+
+#
+# QUICKWORD SPECIFIC
+#
+
+# start_quickword
+#
+# Assuming pose was launched with the -run_app flag to launch
+# QuickWord on startup, this starts up QuickWord with the first
+# file in the list and turns off write-protect.
+#
+sub start_quickword
+{
+ &enter_func("start_quickword");
+
+ # This will open the first file in the list.
+ # Assuming this will always be the case.
+ #
+ &pose_tap_pen(20, 18, 1);
+ &quickword_press_write_protect();
+
+ &leave_func("start_quickword");
+}
+
+# quickword_press_write_protect
+#
+# Useful function for pressing the write protect button
+# to allow changes to be made.
+#
+sub quickword_press_write_protect
+{
+ &enter_func("quickword_press_write_protect");
+
+ my ($form) = FrmGetActiveForm();
+ my ($num_objects) = FrmGetNumberOfObjects($form);
+
+ for $ii (0..$num_objects - 1)
+ {
+ my ($object_type) = FrmGetObjectType($form, $ii);
+
+ # The write protect button is the only frmGadgetObj
+ # on the QuickWord screen.
+ #
+ if ($object_type == frmGadgetObj)
+ {
+ my (%bounds) = FrmGetObjectBounds($form, $ii);
+
+ if ($global_debug)
+ {
+ &print_debug(" Found QuickWord WriteProtect button\n");
+ &print_debug(" left = $bounds{left}\n");
+ &print_debug(" right = $bounds{right}\n");
+ &print_debug(" top = $bounds{top}\n");
+ &print_debug(" bottom = $bounds{bottom}\n");
+ }
+
+ # For some reason, the tapping of the write-protect button
+ # doesn't work unless you tap somewhere else first.
+ #
+ &pose_sleep(1);
+ &pose_tap_pen($bounds{left} + 2, $bounds{top} + 2, 1);
+ last;
+ }
+ }
+
+ &leave_func("quickword_press_write_protect");
+}
+
+# quickword_find_replace
+# from_string - string to replace
+# to_string - string to replace with
+#
+# Uses QuickWord's find/replace utility to replace
+# one string with another.
+#
+sub quickword_find_replace
+{
+ my $from_string = $_[0];
+ my $to_string = $_[1];
+
+ &enter_func("quickword_find_replace");
+
+ # Move cursor to beginning...
+ #
+ &quickword_tap_at_top(1);
+
+ # Move to "Find" field:
+ # Triple-click to highlight all the text in the field,
+ # so it is removed when the string is entered...
+ #
+ &pose_tap_button("Find", 2);
+ &pose_tap_pen(50, 100, 0);
+ &pose_tap_pen(50, 100, 0);
+ &pose_tap_pen(50, 100, 1);
+
+ # sleep for 2 seconds to avoid double click after moving
+ # to replace field
+ #
+ &enter_string("$from_string", 2);
+
+ # Move to "Replace" field:
+ # Triple-click to highlight all the text in the field,
+ # so it is removed when the string is entered...
+ #
+ &pose_tap_pen(50, 120, 0);
+ &pose_tap_pen(50, 120, 0);
+ &pose_tap_pen(50, 120, 1);
+ &enter_string("$to_string", 1);
+
+ # Do find, then replace...
+ #
+ &pose_tap_button("Find", 1);
+ &pose_tap_button("Replace", 1);
+ &pose_tap_button("Cancel", 1);
+
+ &leave_func("quickword_find_replace");
+}
+
+# quickword_tap_at_top
+# secs - seconds to sleep after the tap
+#
+# Tap's at the top of the QuickWord document.
+#
+sub quickword_tap_at_top
+{
+ my $secs = $_[0];
+
+ &enter_func("quickword_tap_at_top");
+
+ # Sleep for a second to avoid any double-clicks
+ # from happening.
+ #
+ &pose_sleep(1);
+
+ &pose_tap_pen(0, 15, $secs);
+ &leave_func("quickword_tap_at_top");
+}
+
+# Saves file and returns to the Application list.
+#
+sub close_quickword
+{
+ &enter_func("close_quickword");
+
+ &pose_tap_button("Done", 2);
+ &tap_applications(2);
+
+ &leave_func("close_quickword");
+}
+
+#
+# MINICALC SPECIFIC
+#
+
+# start_minicalc
+#
+# Assuming pose was launched with the -run_app flag to launch
+# Minicalc on startup, this starts up Minicalc with the first
+# file in the list.
+#
+sub start_minicalc
+{
+ &enter_func("start_minicalc");
+ &pose_tap_button("OK", 1);
+
+ # For now just tap on the first spreadsheet. Add support
+ # for multiple sheets later.
+ #
+ &pose_tap_pen(10, 40, 5);
+
+ &leave_func("start_minicalc");
+}
+
+# close_minicalc
+#
+# Returns to the Application list (no need to save).
+#
+sub close_minicalc
+{
+ &enter_func("close_minicalc");
+ &tap_applications(3);
+ &leave_func("close_minicalc");
+}
+
+# minicalc_enter_cell
+# row - row to enter value, starting with 1
+# col - column to enter value, starting with 1
+# val - value to enter
+#
+# Only valid for minicalc.
+#
+# This only works if the val passed in has a '\n' at the
+# end.
+#
+sub minicalc_enter_cell
+{
+ my $row = $_[0];
+ my $col = $_[1];
+ my $val = $_[2];
+ my $i;
+ my $j;
+
+ &enter_func("minicalc_enter_cell");
+
+ if ($global_debug)
+ {
+ &print_debug (" tapping to cell row=<$row> col=<$col>\n");
+ }
+
+ # Tap pen on home button to start with row=1, col=A
+ # at top left.
+ #
+ pose_tap_pen(1, 1, 3);
+
+ # Now the cell should be in the top-left corner,
+ # so click there. However we must first click
+ # in another cell or pose doesn't acknowledge the
+ # click.
+ #
+ # pose_tap_pen(120, 95, 1);
+ # pose_tap_pen(21, 9, 1);
+
+ # Click the down button once for each row.
+ # Must pause 3 seconds each time, otherwise MiniCalc
+ # will not keep up.
+ #
+ for ($i=0; $i < $row; $i++)
+ {
+ if ($global_debug)
+ {
+ &print_debug (" Typing carrage return to go down\n");
+ }
+ enter_string("\n", 1);
+ }
+
+ # Click the right button once for each col.
+ # Must pause 3 seconds each time, otherwise MiniCalc
+ # will not keep up.
+ #
+ for ($i=0; $i < $col; $i++)
+ {
+ if ($global_debug)
+ {
+ &print_debug (" Typing tab to go right\n");
+ }
+
+ enter_string("\t", 1);
+ }
+
+ # enter string
+ #
+ &enter_string($val, 1);
+
+ &leave_func("minicalc_enter_cell");
+}
+
+#
+# GENERIC UTILIIES (pose)
+#
+
+# tap_applications
+# secs - seconds to sleep after the tap
+#
+# taps pen on the Applications button.
+#
+sub tap_applications
+{
+ my $secs = $_[0];
+
+ &enter_func("tap_applications");
+
+ &pose_tap_pen(15, 170, 1);
+ &pose_tap_pen(155, 10, 1);
+ &pose_tap_pen(155, 10, $secs);
+
+ &leave_func("tap_applications");
+}
+
+# enter_string_at_location
+# x - x-location to enter string
+# y - y-location to enter string
+# in_string - string to enter
+# application - appliation (QUICKWORD or MINICALC)
+#
+# Enters a string at the specified x,y position.
+#
+sub enter_string_at_location
+{
+ my $x_val = $_[0];
+ my $y_val = $_[1];
+ my $in_string = $_[2];
+ my $application = $_[3];
+ my $x;
+ my $y;
+
+ &enter_func("enter_string_at_location");
+
+ $x = $x_val;
+ $y = $y_val;
+
+ if ($application eq "QUICKWORD")
+ {
+ # Allow users to specify TOP/BOTTOM/LEFT/RIGHT
+ # for QuickWord.
+ #
+ if ($y_val eq "TOP")
+ {
+ if ($global_debug)
+ {
+ &print_debug(" Converting TOP to 15\n");
+ }
+
+ $y = 15;
+ }
+ if ($y_val eq "BOTTOM")
+ {
+ if ($global_debug)
+ {
+ &print_debug(" Converting BOTTOM to 144\n");
+ }
+
+ $y = 144;
+ }
+ if ($x_val eq "LEFT")
+ {
+ if ($global_debug)
+ {
+ &print_debug(" Converting LEFT to 0\n");
+ }
+
+ $x = 0;
+ }
+ if ($x_val eq "RIGHT")
+ {
+ if ($global_debug)
+ {
+ &print_debug(" Converting RIGHT to 152\n");
+ }
+
+ $x = 152;
+ }
+ }
+
+ # Just to make sure the offset isn't outside the
+ # proper area.
+ #
+ if ($x >= 100)
+ {
+ $offset = -2;
+ }
+ else
+ {
+ $offset = 2;
+ }
+
+ &off_tap_pen($x, $y, $offset);
+ &enter_string($in_string, 1);
+
+ &leave_func("enter_string_at_location");
+}
+
+# off_tap_pen
+# x - x-location to tap
+# y - y-location to tap
+# offset - x-offset to use for first tap.
+#
+# For some reason, pose does not register a single
+# pen tap if the last single pen tap was also
+# at the same x,y coordinate (even if the last tap
+# was a while ago). So this function does two
+# slightly different pen taps to ensure then pen
+# tap happens.
+#
+sub off_tap_pen
+{
+ my $x = $_[0];
+ my $y = $_[1];
+ my $offset = $_[2];
+
+ &enter_func("off_tap_pen");
+
+ # sleep for 2 seconds to avoid double-click.
+ #
+ &pose_tap_pen_hard($x + $offset, $y, 2);
+ &pose_tap_pen_hard($x, $y, 1);
+
+ &leave_func("off_tap_pen");
+}
+
+# enter_string
+# in_string - string to enter
+# secs - seconds to sleep after entering the string
+#
+# Enters a string
+#
+sub enter_string
+{
+ my $in_string = $_[0];
+ my $secs = $_[1];
+ my $j;
+
+ &enter_func("enter_string");
+
+ if ($global_debug)
+ {
+ # Display in_string so \n and \t values
+ # show up as normal ASCII.
+ #
+ if ($in_string eq "\n")
+ {
+ &print_debug(" Entering string : <\\n>\n");
+ }
+ elsif ($in_string eq "\t")
+ {
+ &print_debug(" Entering string : <\\t>\n");
+ }
+ else
+ {
+ &print_debug(" Entering string : <$in_string>\n");
+ }
+ }
+
+ # Replace "\n" with real carrage returns.
+ #
+ my $string_val = $in_string;
+ $string_val =~ s#\\n#\n#g;
+
+ # Replace "\t" with a real tab.
+ #
+ $string_val =~ s#\\t#\t#g;
+
+ # Convert string to ASCII numeric values
+ #
+ my @array = unpack("C*", $string_val);
+
+ # Enter string one key at a time.
+ #
+ for ($j=0; $j <= $#array; $j++)
+ {
+ $queue_size = EnterKey($array[$j], 0, 0);
+ }
+
+ if ($secs > 0)
+ {
+ pose_sleep($secs);
+ }
+
+ &leave_func("enter_string");
+}
+
+#
+# GENERIC UTILIIES (non pose)
+#
+
+# get_date_string
+#
+# Returns a timestampe string in yyyymmddHHMM format, where:
+# yyyy = year
+# mm = month
+# dd = day
+# HH = hour
+# MM = minute
+#
+# This sort of datestamp is used to create the output directory
+# names, so it used in various places.
+#
+sub get_date_string
+{
+ my $cur_secs = time;
+ my @lu = localtime $cur_secs;
+ my $lu_secs = $lu[1];
+ my $lu_hours = $lu[2];
+ my $lu_day = $lu[3];
+ my $lu_mon = $lu[4] + 1;
+ my $lu_year = $lu[5] + 1900;
+ my $lu_str = $lu_year;
+
+ if ($lu_mon < 10)
+ {
+ $lu_str .= "0";
+ }
+ $lu_str .= $lu_mon;
+
+ if ($lu_day < 10)
+ {
+ $lu_str .= "0";
+ }
+ $lu_str .= $lu_day;
+
+ if ($lu_hours < 10)
+ {
+ $lu_str .= "0";
+ }
+ $lu_str .= $lu_hours;
+
+ if ($lu_secs < 10)
+ {
+ $lu_str .= "0";
+ }
+ $lu_str .= $lu_secs;
+
+ return $lu_str;
+}
+
+#
+# DEBUG FUNCTIONS - Wrapper functions
+#
+
+# pose_tap_pen
+# x - x-position of pen tap
+# y - y-position of pen tap
+# secs - seconds to sleep after the tap
+#
+# Taps pen at specified position and displays debug info
+#
+sub pose_tap_pen
+{
+ my $x = $_[0];
+ my $y = $_[1];
+ my $secs = $_[2];
+
+ if ($global_debug)
+ {
+ &print_debug(" Tapping pen at : $x,$y\n");
+ }
+
+ TapPen($x, $y);
+
+ if ($secs > 0)
+ {
+ pose_sleep($secs);
+ }
+}
+
+# pose_tap_pen_hard
+# x - x-position of pen tap
+# y - y-position of pen tap
+# secs - seconds to sleep after the tap
+#
+# Taps pen at specified position and displays debug info
+# This function works more effectively in situations where
+# pose_tap_pen is flakey. This function is not good for
+# double/triple click situations since it is slow.
+#
+sub pose_tap_pen_hard
+{
+ my $x = $_[0];
+ my $y = $_[1];
+ my $secs = $_[2];
+
+ if ($global_debug)
+ {
+ &print_debug(" Tapping pen hard at : $x,$y\n");
+ }
+
+ `$qa_script_home/tappen.pl $x $y`;
+
+ if ($secs > 0)
+ {
+ pose_sleep($secs);
+ }
+}
+
+# pose_tap_button
+# button - button to press
+# secs - seconds to sleep after the button press
+#
+# Presses specified button and displays debug info
+#
+sub pose_tap_button
+{
+ my $button = $_[0];
+ my $secs = $_[1];
+
+ if ($global_debug)
+ {
+ &print_debug(" Tapping button : $button\n");
+ }
+
+ TapButton($button);
+
+ if ($secs > 0)
+ {
+ pose_sleep($secs);
+ }
+}
+
+# pose_sleep
+# secs - seconds to sleep
+#
+# Sleeps the specified amount of time and displays debug info
+#
+sub pose_sleep
+{
+ my $secs = $_[0];
+
+ if ($global_debug)
+ {
+ &print_debug(" Sleeping : $secs seconds\n");
+ }
+
+ sleep($secs);
+}
+
+# enter_func
+# func - function name
+#
+# Displays debug info about entering specified function.
+#
+sub enter_func
+{
+ my $func = $_[0];
+
+ if ($global_debug)
+ {
+ &print_debug("Function enter : $func\n");
+ }
+}
+
+# leave_func
+# func - function name
+#
+# Displays debug info about leaving specified function.
+#
+sub leave_func
+{
+ my $func = $_[0];
+
+ if ($global_debug)
+ {
+ &print_debug("Function exit : $func\n");
+ }
+}
+
+# print_debug
+# string - string to print
+#
+# Displays debug message with a # at the beginning of the line.
+#
+sub print_debug
+{
+ my $string = $_[0];
+
+ print "# $string";
+}
+
+1;
+
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/palm-session/session b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/palm-session/session
new file mode 100644
index 000000000000..900c4981cc0c
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/palm-session/session
@@ -0,0 +1,8 @@
+DStrÇ£¾š{07¯lÙ;¢;¯l=8¯¬­È+ÛfDœñݼr‹#.É+G’WŽz8¯Œc`å6E<’Wn»8¯|Á­Oå•ÛŸžWn·>¯Üᣑ¬ã'ç•/šWîëüƒs÷ïß—»ß17w¿óÎÜ=ç¹û´ûs÷ûî‰x:wŸº{îüô;"îÌ=ÎŽønîým[îùð¹¹çïψ¸?÷|äšÜýòs÷¤›"çžíÑ‘Wï0;âò¼zä§óêQ£óêí‰ñ yõèk#äÕ[‘W¿ð®jX½cÊ«_tMÄ=yõ„ÏD,Ϋ_|XDÔ³ó¤ˆCòê]åÕ/‰:_uLønÄS¹{—Žˆër÷®÷åîÝÆä•SžÌ+_ú‹¼r÷Ïä•{>‘W¾,Ö{RkD¸LZšW¾<ÖïÈ7ùŒÈ®ûœ±.¯Üw—ˆEy嫯Ê+_»{Ä11Ž¯kÏ«—IJ,‰åZó_ãÝyõé÷åÕŒå;-Öåc±|Kß“W¿Û¼úoÇäÕgÄ:0–ïƒD¾é_Ï«—õçÕg]±2¯>'ò}W^}þ~yõߎ|WæÕç.Ï«Ï›•W(æó÷³#ΈºÏ¿9¯þÀyõ‘öá7Gz¤ïiOE¹ù‘viÄ7c™.É«Oåß»(ÒbÚ…£"®ÍÝ;Ä6Ýa}î~ᕹ{üG#b{m5þ‰Ü½ãŒˆ˜¾ãN¹;ì»_ü¾¼º3êï¼!¯îíÏ«¿ÛìGQï:"fåÕß?&â܈/çÕ7wä5m±>7¯‹ü±N·Äòݲ ¯¾5åÕ?h‹þž±ì?8/¯þak^}{äûÅ”¼ú—»æÕwñÕ¼úÇs#îΫû–×÷ƒŸ‡Å¯¢®ûc>ä¼úÁ½òêßÆúývD^ýh¬ÓãQþ–X¶'bú®‹<çÕOžózr}^ýŸÓbÚ²ˆå1|W^½îM1Ÿ°úɉUýk>~n^sI{^óŠœ×ìÇöÞWE¼&bAÄíŽi±œ_Šy}þ¾¼úò¾¼úŠö¼úª¥yõŠ‹"=œ¯80Ưϫ¿õ_ù¾²&¦×lmÄMyÍøè¿ðyMû˜¼f‡ûb¸-w¿ Ž­íFGL‰8!â“ýyÍ7#ß7¯‰ˆ|ß¾$¯ùÎWóšÎˆ®)yÍÊX¦ïŒÈkºwÏk¾wD^ssL_}XDôo¾3¯¹e‡H_–×Ü´oÄü¼fM¤¯y2¯é]±"¦ÅôÞ‡òšµëóšžî˜Çyyͪû£Ü1Qî–Oç5ß¿!òõFù»büÖ˜ç®Q wG™ïoõEÝ=“">ãq¬õƾ²öŒÜý½cs÷MGDÜi=1Üóù˜ûQϺèG»ÒmBïù‘ç–Er÷÷cßûþ#¹ûæ›s÷í³s÷Wäî[ŠØ!wÿ Æ°gDoî¾mLDÌç¶þÜýÓ¥¹ûÞ £¿2úí¹ûgQÏ}³".ËÝ¿úzî~à®Üýà“QöÁ˜ß-1»b?¿;œïþfîþX–ÿˆ´ŸLÊÝÏÌÝ¿¹$æwTî¾?êúñ^yåÉц¾÷ƒÑ¾M^¹lq^uÝWóª¯E|}nÄSyÕõÇF[ðá¼ò Ñ^mÊ~—敯ÿz^¹ÿ yå´sÏÛžÎ=_œ{þbÛÜsÌÔÜóöèÿÕò¾<¦}=÷Ì{NŒ6ôƒŸÎ=³¿š{>Й{Î</ò7b]î9áìÜsòÌH‹rgÎÊ=ïz*÷|â£÷æžONŠx_Äc¹çŒ:ŽˆØ5ÚäØ7NýáüÛòš×î•×Lýe¹{¯X×W,ˆØ;w¿2¶Í+[s÷ÞWFÿôÜ=ùúÜýª]cÚõyÍ¡Kóš×ÇþwÀéyÍþ;÷œó?û„ÜsnÜ×~è°ÜsÁ‚hëGÅpIõ9ûž¼æ½Ûå5Kâzãq]òÎ箿ž™»f‡å9SóÊ úòÊŒóÎ?öç•—^㟚qQD´ÍŸž™W^íïeqûç8ýsGÄyågâ¼ô™Ë"¢Ýþl”½l×¼òÃ7å•Ÿ¼?wÍk‘“—æ®S¾œWž¹<¯<+ç•'Fÿëyõ·ÞÑq^ÄŠˆ‡rÏ_ÆùiÖ‡sÏ[¦çž£bø¨"V䞣WäUÛÞœW;$¯Úæ31×açĵÈýïÉ«VMÏ«þí¦¼æÞÉyÕÜòª.Ï]÷žŸWóî>=¯¾òâ¼æGoÎkîzW^óã;óÚm®ÏkÇœ×nû®¼6›×n× ÿqiÄʈ÷åÞßǵȺ«òê¶ýâØç¿Î¼zÛ‡âZêþÜûë¸~‰k²Þ_¿+÷ÞûùÇÅù*Öï-oŽež×¼»¼rqì—KÃhÙµyåiÑN®‹ë­Yq=ø¢8¦o~sîÞ9Ú¤í;ùrî|ô˜¼jû¸n{ǹëmoŽ}:Žé¾uyÍ_GÝí»äî—ìÇôµyÍ­kb¢]ýÈQ¹sÕ®±ß…íÕýÑ,Ï]omx"¯¹?Úü§¦åU<‘»n‰}ýM±MœWûÓKçÇuJlû#ã:äôÎhÛöΫ—GÛ»Ý]yÕŸÌ«>þ_<6Ž¯óãœyœçŽÍ«ï‹cû¡¯æî×ıþšûóÊ£â8{ÛNqL½-ö·Å6>vTÄaŸÌ+ŽcêkªXóÛh{×<ðp^ó`XÌyW^ù®ØŸæ½#¯<aLDìïÞ+¯|ψˆåÑ~ź¬ŠvíÑ{ã|ç¦1q÷h\ß­Šk¾Çb9~眧>\ º¿çÒ?Ä9í¿NŒëŠ{Â$Îÿvk^“å5-">˜W]ûÄò7åUŸ‹}âsçU_øf^uåùyÕÏ‹èÏ«®ú`^ÓûÏÝ—DÜ»×ߦq|wÄõãnÊ«î¸0¯º§;üÊ«Ÿ~ºšoußQî="zf÷Å5åcyÍ“qõpÛ)Öá‚ѹûG·EÛûêOc¿¼÷Œ¼êgÍ«úÆçU¿qc^õ˱qýº8wwOîú›¸æþ›xRZêûl´Ÿ½5÷|æ‘è·Eìñš¼rúÞ¹kÞü¼æ·GåUÿqsîyßî¹ëËÑŒ;&â©Ü½ÍuqŽŠmÞé[Źm|\‡—úÞ=6÷,üfî9å¹;Ú±îïD;ÿŽhCþzJî~W´#§ï•;/‹ëä8Ž;Wïín¤ßÕíl´?LÎÝqvÄws÷ãÑÞ>~^Ä͹û‰Ò†G{ýÀŠj>ÃMži¸û‰C¢Ü ¹ûwã#fDÄ9áwwEÛ~nĹûÉXžu÷åîßOÏÝÝoÊÝ«ŸŒsÉ¥yÍ'¦G¬Œˆsã'÷Ž8#â±¼ú¥ÑþuÅðFÛV‹}ðµ—æî}?˜»¾*w]÷*ÿžóš¥ïÊ=F[}ðìˆhƒßñ©h?ÕŸ{>mÊeÓrÏ?ÇqtÙ×sÏ_±(÷wql×ãrÏ'&äžÎ=—¬§Ðwæ5ã.ÉkÎ:,¯Ù-å5»_”×ìíë±qyYÌ{b,û«>™×|,öó|&Žï¶8^ßçï8¾Žc²µ5¯Ù)öË¢ Ú)Ú¼ŸÄuÒħóêö‡#fǺÄþ~ÃòÜýí/G¬‹ítYDì±M:ß“»¿mëëÎ+ÿ&î_¾}ã3ß¹ÿoNi¯?­L[¤Þ2ߎ”â)狦FÌŠ8#"ž1Lˆ§™&§41žÿ¿ä¨èÏŒXñΔv»7ž›ÃçÇðÓ1<&â¢xDO&w»®ñL}^ã¹óÑ1‹“"æD¼7â¯#N8-âgEü]ĉø‡ˆOD|*âŸ#>qEÄ—"þ%â_#¾ñˆoGtE¬ŽXñýˆDÜñ㈟Fü<âWFü&âшßEü>âñô·%b‹ˆ-#¶ŽØ&bûˆ#^ñ’ˆÝ"^ñŠˆWE¼:âuoˆ8 â‡FñÖˆ£#Þñ×s"æEœqJÄ{#N8-âgEü]ĉø‡ˆOD|*âŸ#>qEÄ—"þ%â_#¾ñˆoGtE¬ŽXñýˆDÜñ㈟Fü<âWFü&âшßEü>âñÀº%b‹ˆ-#¶ŽØ&bûˆ#^ñ’ˆÝ"^ñŠˆWE¼:âuoˆ8 â‡FñÖˆ£#Þñ×s"æEœqJÄ{#N8-âgEü]ĉø‡ˆOD|*âŸ#>qEÄ—"þ%â_#¾ñˆoGtE¬ŽXñýˆDÜñ㈟Fü<âWFü&âшßEü>âq(´Dl±eÄÖÛDl±cÄ‹c‰éi|N-ñ7šè"g9JêÉi¯H¿´ŒÕŸó·§ÜyNü]äEñÄ¢ôÓNñ8¦âì–Z®ÉçF«}Qœ}nX—»¿!w <”Wþm\EŒ½2¯ú§¹{븒~ÛvyuËÍyõ?ÅÃ+§å5—>‘{F̈8&"®^G¬Ì=#£g”Ñï,ùÉ=ÛŸŸ{^g½×çž7\ó+Ëü‹X–©e™ËÑë[>Ê2ÇñkQÖ,Å2÷|îÀÈÑ^ï§Uñ8ökÛå(“{¾WÖ_ëÈ=_þ×ãªû†ÈÛuOîY9!÷ô^›{n_–{îˆþërÏ]3rÏcüîY¹ç§{åžû.Í=¿Ú.br7÷üæÉÜ[;&÷¶íœ{·xOÄ#¹wdkÄ؈x²4rJÄ'F|>÷ŽŠi£fFqFÄùWF\Ñq[îOžF?–{·Š:·zSD\ne·Šic¢ü˜IQ~ÌÅk"žÊ½[ïñ®ˆOF|7➈X¶±3rï¶QǶ7åÞ¼9âÖܻݷG<‘{·ß.÷î0¿ü•(â’ˆ/GÜ™{Çï1=âôˆ¨kÇx:¶Óå¹÷EQÇ‹nνŽˆ´ËöâGrïÎ7FÄ<'N‰¸,÷¶Çz¾ä¨ˆoF¬Ï½»¼'"–y—¯G<–{_ºoÄÒÜ»kÌc×HÛu]îÝmjÄ¢ˆXŽÝʽ»Žˆ§s»ÇñîO”¿iEÜ–{÷üLî}Y¬×Ëbž“&D\’{÷™ë²ï/"â‰Ù«£Î×|7âΈH{mÔ¿ßÊÜûúŹ÷ ±|ÓcY¦_iÓoˆ23âªú€0: òÛïÀY¹÷ 0žùÎÜûÆÎÜ{H,áïȽoº7÷þe¬Ãá#rï¬X–£ŽË½o‹ùüÕu¹wvļÏGÄ:Ì‹uŸåOˆe<áéÜûî¨ç¤¨óü˜~Á“¹÷Ãνÿù?~Qî]Ëô/;äÞ½/÷^ãÿ¶kD,ßW÷Šˆyíˆ{roì³½_ïϽÿëúïŸÎ½×/ν߈º¾¹_DäÿÖv1ŸoÅôo…Û·®Ì½7ܘ{o<8"Öë;×äÞ®‡sïÊû〉ãªvn?§‘õ³azA9ŽÊqU»°:ÒZâo£fÇß[þ©£­åÓ©m›bzu´•ŒÑ•:.‹Ò3Kj9cÆäOÇǤ8æ®ýãÿ,y#÷‡#ç÷êÃ>ÿWZÒèø“ì`×’bÛ~26òqMsÓ!ñ_J[Æ)ÆRËk¢½][©lÓÆeÆÿÛ]Ê«Rg^Õ÷f­qÏZ»/¯jëÿ_ÙnfBàÿ^8«Œøbuž‰³Ê3ãj­úæÍn77¾3¢1wd©=ò~/ÆoÍk_ÏÅ®¿/¯ýF[ÄÁGÄô±ñ•¦;â„ÓÖò…›¹Ë·œê]ù&Óóëâ'ÀrUÖ¿EÕÚ e‰ãž0ÎjƒKühwˆ~zm½_îÓ}QÇNyí·~‘×~'¾#öÈóXêÎÛóÚ•æµÝ3óÚÕq¿ö3yíwc­nzG^ûý‘ïûñðæí"âI`<¡_{óÝym<]_{ËwóÚø ÈÚ[¯Ék°_ÄUyímñ´ÛN8?ââˆÏG\qCÄšˆ'òÚ†Ô·Ø5"ÊýðˆwDÌx8¯½ý›‘÷öxy{,ï;E‘×ÞÒwÆ2ÜõT^ûã]"ÌkîîÌkò¦XÇþXÇ8[ï:ÚZŽñúA|Öâû>›~jx±jø€ùó7IÛ4aBHO˜]¿
+ÿñ²æ v¿*¶ÃòˆËÓÕ<wŠ}b§´åÈ4¾¡UU4·%¾·TûܨMkÝLÊo;.‰ÔŽ¸ò©wµÏo›F>•–ǵ¯<±S=±Œ•î³ñ_ý›qõï¶}´öÀç« )åµ—Uÿ^b|•*v¬=¯*'Ò=oS>(K»çúrÿò²íÊ—É^¶oùœtgÜ°¥——«²F·ç½Sö›òšöE§Äxí?:SÚ7Ö}—ræ®wµ‡Óy1´SŠ‚{ÜØW­v­ý&9Ë<º—í[ï}Ö‰ámËxg¹ÜN/û`äŽU˜´{™öœºÃ"Wcƒ7òoš’s¨ç«Ïíø9­ÎŸK¦ÚocI¶§FíŒM_}¯Z´—·ÇrLDÙîÏ­Û§ì[yí•Õö®Š<—””^Zò–çIÑ=ëpsˆ~Ù­Ë.ÑÖèhôËPÒ«íýr(”ñÜèÇ“Šj|»F?žZ”ñúQq ¦ ký%¹tUýµ9ŸŽ‡AñÝÂx‚WV´tJK#ýìH<ÒK+çšåL±G\åîžÚÆ^i;DT]ä£åÁŸÎ;~éI TIåËŽ¥[ßÈ’NY8÷”EsÌO[ä[OŽ3Oéfžôî“–žtú¼Åéø»£üê©CŸsczU¦%ßšÛëé/\|Êœ¥K†2•¡ý;ÇOX|ÊÒf™ÞÛêÉ1oÁ¼ÅsæG»´™KÌH{÷‚Åó›evê®—yó¼¥ï_¸øär…?¸Õ”F bzUfD¾ýér?Ý[Þó©¦tf_sh°¿ðý 7çsÏåõä#O\¸xéA§n¼Fƒe–œxüàúüf¯zrGíoî¯Ýâ¬zïà6‹­é7Gz<©ÚýüÈÛlvÙfŠmv^j;¦ìñÕ¾Uj‰¼Ÿ¼µÜû½{sïMq×üòæq}KUoìXõ®õÞؾ—¥–~3To\wôþðÖø6pÜ—~jmô£Þ9‹"ïrïíÓ"Ê~4;ÆoÉw|dVÄì|ÇE÷Fôç;þaDĤˆioŠ8.bQDGÄ%+"nˆ¸3âá|ÇÅm{EÌŒxgIJˆ‹#®‰¸=ßñ‰{òÿøšˆ§óŸšqs¾ãÓí'FÜ”ï¸ìîˆ'óŸ‰:¾óýÂ…ùŽ+®Íw\y¿eW\˺s,ëiÍ5ÿïö;j³ïŒzŽ.åÏì(ŸvÃv×Á “û&/˜<yöÎiƆ'ãH³Ù´Î ƒåÊÀäöþ1©o£´Ù›Ië¼vLꟶAÙמui¤5vÀÆ”É-ãǤuq\ ë&×&ŒIw6,%æ[[?¦åž›7Lk;¦å¦n˜6bĘ–”Ýt¨›Ü6rLˇF %ÄÐä1µ±Ûl”¶lç‘Ÿ}|å¸ ò ô 6‡Zrsh¨ßúÀÐps¨µ·>4r]3%öö«êÃ;JkÖ7uÔÛÚößù O/;kU_}úäQ«ÚÚv¼pÇ)“;Ïk™ÝrÖycÆß4~òä¾ ››sv-Ý<¶J뿬Ys¤Ý²s•vý¥ÃÓvØñÂ({Ù`Ú¢Zúþ×'Ž‰´^ÚÜt“kéÇ__Ò>tYs¾ã·<ëÒ_Viç\ØL;~Uü7vêäÉg}¨™6rݧtÃÈþe§užÓßœñÿx¿|§}ãîøŽSâ¯E›K»¡uâ¯û×ïß8ÅV…æ\Úú‚—nsÞŽg 6_QöÒ‘µèÆw3Tïñã·¨ÕF´\ºêœ¡ŠŒßúœÚý‘Ö3”6»¤íÞò©sVOuN”ýlí”áiWEÚ§Î;±35»Ùãǯ*ó]3uxÚµÇ×ZÎÂä¡´þý×ýç‡:ÖOû`îkÕ'@€aôF_ù¾É¿,šÐOÅöhsÒÑ?ˆ´/zÈ}—§´d׋¢ìÅÌýp¤}åÐC䧻`f¤m¹g#­ýÜH›uÁÌèm¹Ç¡“ωúœpiP}ôÝ3gƤ»Q'ÄxÞLÚ3'•,4‡g¨ße7LÆWj}ñÒÛ¹4TѪUÛ¨ F7µÖŸã¦¯+#î]Uó6qçõÍ„°8»j‹'ŽžÖÚÕ9öQßÚUæ–Vµo˜vvuUºaZçäE›”íŠm¶q}¿8orIÛaø<~^n7šoÿŒiG [¾Ô¿¼ä›Ø1<mÝŒ¾H×3|}—Uë;ò×ý1¥ÙM׃µÿìk&DBÕ’nè<¶¾`ná•+ÿìƒ#;§–[Ý]Ï–µ%íÚûȆicv™³åõiÒ§öyýøfÖ–mwù‡Ñ9Mºbæå±·Ö»’¶e|ãü 3/¿a(m×uQÚæ%3/_>˜6fêœÿ•¶yñ>»^ÖLÓ'@€næãÙòl®})íçGÌŠË9±qgó‹¶êÙfWÚ³?šççw~™ß’÷/^Ô¸SŠïTÕ¿ý+¸™õj&=[žgœß¥½~×Ò¥ ò­ûuGmq>?ðÔ¥K.l>›³Ø ÿlyžq~O”ùÍ=éÝ'å[s{}~3cléI§Ï«_>l0›Á‘gËóLó1©Ìï„ŧ,Í·öÞVŸßÁ Ÿ2§\ý‘îÙò<ãüf—ù•+™Æ¿øž1oÁ¼ÅÏrúy¶<››_Ëì–4â†rÍqØœSãŠ'Ž½ú%ÞŸéÄÔrîÅçuÄõDóû Šë‰ï¤¶Ö¿(WCÕ5ËÔ´C…±CLyùÌr½×ÖòÊè—+}¢_‹þk£_þ¯×G?þ}Æ–ý£?"ú05.ÐÚZþ"ú£¢ÿ—Ñß2úo‰~Üùµù¶ŠþÛâ:rLôÿ*ú[Gÿo¢wW-ÇG\ôßýý“£¿MôFÛè/‰þ ¢ÿþèoý¿þöÑ?3ú;l°ªÿ£#áÇÿÈËö\øþ‹ó­÷\i±=ßòþØždß)“ž-Ïæ¶g5¿ee~KN<>ö×ß”'f1¿#‡.äŸq®Ï–g³ó‹wÇüòà·ÏŸ±î2!noZfÍ™Jû[Žlã)îöãÚsä×˵gu<ícß
+¸ÅÇo¹h\ôÞ9¥ðe>³_|üVéÀhºÓáG87’GD´´\tøQÕµáŽé¢ùgŽ›ŸÎÙux/ ¼2uÔÿ¶ÏÄwnÆΪ_L—ýó—3Ê؉1µ\×~¬ºÌ.SßµMµõ_ÄUÊ Ñª´ƒ¾{tÄ}ÚuÇ÷±awA/ˆ²UwÊœã¿;ʧï,¯'´””=ʾùÙêéÕ±­iÔNe}ƤæÏY|ÊæWhïtÑ»Î|S4ÚsæÙ{þM:k»g+k‹~LÔ;³Yï¼ÅK7_ïËÓE³Ïœ6;M«>Ï™ýL#¥ÒžŽºÎýƒgêjiÔgÊ_ªóšüä’ãckD×¹¹†c8ןÁpì+ñÐaËtô‚%sÞ7onu»Ùû§€,[5âñúæ«_<”áò/œUíÝ^³ê“FUc¥uûx5TÚ·sÊÖÀbèßÊýe5ô便¬†¾Uî3«¡V%¢åkYýËi±O¶îŸo½nB¾ãüËò­îšoÿ·CòÚ¾±¹wÕ/Ê·ÄòÚ߯þUôœoïïÏ?8½³ü;º¹÷‡·–³o9#–³T9s”»µrUZª%ˆ9±#¥öPxC¾ãš åÛ˹gù¥±”ºk™Þš¶¼ v¥Þ½_9'¿jò”ÉõnêÑ{O‰¼‘²ïPÊ>©­Öº÷¾ñY‹Û¹¶ZÛÞñT«¶ÅÞ¯Ï{Gk_¹w<ûŠR¯zu”šRʶî}R=åµC)Kª”ƒß8˜ò®ò´oñ¼9'Ÿ0gÉÒæF‰™'Å=ç⹑sÆÌ#GͳG9ÿÔxâVN];œ2/ž»Í›·ô¤ïÞ:&¶Í8êÈQ¥õ3Ũ87mvŠZ¶5þ­Æ½ãsJÚ7>§Æ“òÖøgÄçÌtp|¾)9g¥ãâó]ñšì­ÓÒtvlýóÒEÑØ\’âûXé3éóQë•iEœÃ¾œ¾g®ëc÷¯¥îðšÐšFO7¾Ÿ<ò´%KçRßaÊç_Ì9%îÙ‡º£—ž4?ššÁ´xâóGÊýÙmrÝßQ=•Ùé¼r­ß²ß Òè}lÇ´s¹+ô–É©<a(MXj)×Ê‘ÖGÛÂ%óêëX)-µY“ëOHâ¶=¦–ïP–oMÖÓÚ‡â©Zza5µœ êùFN{ˆomUM[‚–íª¡ò¬^ËV1T«ÒÆÄP½l<K#«´r×Rϧ³ÆPiõëiÛ-Šó[•/žã5Êî°äÔS.9åÝ‹ëë¶tÉ)eÝfMþo´—Qe_KÚjj}oj?üЙ‡¶¹ðÔqL4çV-iìï-Ñv=V¢L‰®~mKN9aqµ„cg‘òËæy°­å×q>,×kÿýÒ¢ý6ú¥={<úåzí?£_®×þ+ú#óÍÆ¿=ù£uùÖ}‹;›ø7ž¿17ßòãóò÷žúßkÃbÞÔš¶úð¢E‹þ¦Z¶ÆGã[Qï5ò€“N‰cø´ôº½Ò«^õÚÉ{¥½¢Kƒ÷“­çEM¿Jã6>ŸíÉÎ[O=éø“7sã¹Á<ÿoÙäHŒ…ß`à°hVÛD3ÔX—ƒOZ¼AÂA O‰ËÈ¡›á·môøíxZ:œáà9ßÅÕëÒ7¸Â}ã+ª§ÐƒEÏ0Ç:iéÐÌ"õÈ¥q✚Ò;NZÔ~йƒIÅ~¿tØÍúQ'-?81Êtê’¥ OisX½kŒOÙh|ŸÆ÷mŽ¿yá³O·È³æ¼{ƒõ;|á»â)W³tós[D3µõ{Ê¿ŒZ®žñùýP±æЉmûn,ÔœÔìo|=ÍßÄrWQiYKwf_JŸ]·ëSËȧSË âŸ¸ßj £6r cäg:G~(bUÄÏ#úÝ9rÝ‘#×ÐY{º­£6ÐÚÑ2ЕâßÙ3ù‡=ãßj¹3‹úÊ<¢ ©½Ë,âß@YqUÕ_µbEG ÔÚZ±¼ôGíWM¨¥±+VÄøVé£U†­:ö«ú“V=´¢dœÔã¥}ä+ý/×®~¨ô¯îxx¿Ò_Ñ7elÕ¿~r-ú£W|9µw–þÕËGE¿uÅŠ§¾¢[±â+ëK“=iÅŠ/”þè˜ÍãÓÊ„jùÊr··§QqÞ(7ñ·5»Û¦×»fJéN1b 1}úô¡Íé#®Øl†¡éñoel¦†aÓ7[Ccúô˜ýˆÈ0´eœµ¯¿¹Œõé±àQÁ”a¥#¥Z‰¡é¥‚ 2l8}úÀÆ6š>”a ^ÍÆÓ›bIª ›Lodh:l:½Ê0eĈX’¨aØôæ–«×P F T“›ÛopËUk&n8}°‚飛ҘÜ,ÛP†È]Ô>ÿ M–¡ØƤ¦ÏPJ—Éñ°¸¾˜õÏÆRO*+·,×8q,W.gÇ0ûS_\’þmzCÇÄŽêä]òÄñÇb9鱗³ß1Qþp²Ä+#a«Ç;Së@gŒDB)3zè8ˆ{Ö祃Ño]185–¹ž1ݶcŒÿcÊ`d/kS›ëÅbNѵſ½6îÒþ•¿«=ãßûꙇžX;¶üMpxÒÆÛiÿvˆëœzû·S•;ZÖu¤‘}iÜù3ÒøÍH³/mONNšÑŸ.}éøÔ¹WDoúå F¥‡óÜÔè¹é±óÛÒ{»§¦e—÷§×싦3‰’id¬UËú¨¹Ì'®,Ã}·j>uêÖ«;;£ù¹!Åçw:;ã DûOŽ­rNç˜Hk36uîß· «:G®u\›F-/Ÿ+Rç5£[Ç¥Îk–·¦i“¯N“Ïéœ|õ˜ÎŽÔÿòZû¸4©ó¦ö§ÒèUiÿ«RëµãJëxíS¥±}eÕ²¶®ˆ„j™vÚ®Ãw¦Ám×L,;ÜÀÀŽ;îØØö%½™U ¥V;ýŽ;V{Ô`r½dä+;J#µ¤•„’V¦TÉõ´zr5- ÄÑ[M¯JVK%õÔfÉR Z¸é·M¯WVUÑœÅPj”¬fQ
+–V¼d®—,ýR{=µY²¤TJ;4´Àƒ™KjŒTk[O;î8e¨âªú”"©
+õÌõÜ%­Þ25ª¨JV bݼJ®JçzVÐ%7H,ÉUK9<gUM•m¨tu,k#ÎLåWØ]è8³¬ïFmĤ8—óo‰å­öZÑ—†2ÃÚˆÛbO)Ým±Vnƒ¡²
+gsbÚ4mJcò”tÛ”zWÎÃÑFìÕš¶YWÚˆò¬$ïE7Eb<³œcÍ/8T7þ8±6íÙòl¦Ø~Ãk¤–Xß‘ˆö¡¿#MŒãwÿÚìtƘEiÑ«&§¾h~?ÈybÛñiÝù‡¤þ¿ŸúÏ]–ÿ»uiÑÈþ*¦Æ5Ñ„‰iÜðö¡ÌcDÕ>ìZ-t늯DÒŠÇã3£5^Ñ?º/þų´|jšÔ?ºu¿hš—·MѤv\ý•õ£jWO®¥—v¬èì\™:¯N“kÕçôŽ«ÇuîóPÇËã•[‘âs¿itgz¨´ µÒ|åéÒ2ÄEPÌ«Þ2ÄÂã¿MÛ†ÆÞ4Ø®—]l0í=ÍÖ~0q`à=ÑUÉ¥½¯r6Òª#¸œJb3-æ_ìT)õ²eߊÃ+öàHž/ÒKæ¥Ë<êùš™#µj‡Ê.U¥U™©1EKzUsI­·UBu(ÇG#±9ZåÞLj9ìyëó*uV‡bY‹j&¥h#­Z‹á©eÞÕº ËÜ8ëW Í:‹YQ«Ž–FñH¨R‹[³+¹©ƒÛ¨J‹Ô趎£|X;0q]µÿº™£V\uñ¨³¯šÃ<qnl^+Äesg‰qqÐOžœ:oºéüÎUqšês~5ÿ¶pgUïØ Î)óš]uÎoŽÌ+c±ñÜPÕf)Œñß”ø¯ôÿÈ2XõëÓ6,WÕYÑ4¶F|-·5m7¦´ó–-Z’oþ« Q8ÚŠ7.[4oAóQQUãFÑV<[žçÐVĹ¿\Œ{<ÚŠ®h+vìKgÄ;M‹+³.K}ï[–˜:5=pÏÔôÄúñé‰eãÓS“ïJ§ï39} þm¾7ìÓ—v¾¥3ÝصĦmÅòXöI+ʯAW|elGi+jË£­¨­º*ÚŠZçCqÔë(]“ö_¿_G|N‹ÏŽqcãóñþ±W·ôGëѾg­cEï¸ô…ŽI½ãFM“®KËã*âºÑ㢭¸fùS1›kÆ•¶âåO=綢¹ÏUýÆÎYj¼±/—är@6’Kj•³~6’#µ™/ÝpC•y¨­ˆ5 ØH-™78Ênˆ®™Ú<˜"çPr½õ=ª¤Ö\¥^Ѩ¶Ô[Õ1˜Z嬒c~õã?27«­2¦VÉU ±p%5æWj®7]qEI-«6”i‘XZ¼Áä’¯jDÊ1ÝLm¦UÍäF¾J¸á[Ö¯Þ(UìUjT‡H™ÁðmÑ”o¤ÕÛŠ‘q'^o+F—ÕÿMOŒûŠ©ñЮOëÒäø/ºF¾h/ª|µÎZç¸õû¯ß?ë¬Å?N=Ð9.þäÚÈ7jƒ6â†êmU£_ß:·58K?–+–º(K_Ú~cz3_éׯvUŽýò$)ß²ÝüHŒc?žÌ”¡gîâض<ÏáØö‘ñ­Íê:aeû#ã:ad\'´Fãvãã>böøÔuá¨Ô7y|êë\–úã_n-× Ë&ö§©ñ,æÅѤ>ïë„1ÕuÂôr^Y®RÜGôÇÚŽíèL±UâbZŠÏZgÜAÄ6©ÅgŠë„xÓ¸Nè˜ÔY{¨\'Lg!­ÿöP¹N¸±\þŸ_'4®ÿûfÙÿâR0–nãë„H‹»±rAÐØçùÒ?ýSœ†ŽýR6º)ÿôO‘Z5õúêÉŸ¨×‘⺹ž0øY¹C©'ï_ŸRŽÑfêÉÓ›¹«#·j'ª| ;–+‚2— Ùú±e›ù"­ÑN .EÉWV¾qìW3j¦5ŽýªæÁ´jÝêÇþ°´Ác Q_©³aVš„jUZI,’ÑÕÇ«Ïj¼ž:˜^¥UGÐÆ× ë:FuœØqâÇFuŒ*1°™ë„qБRÄžõ(Ã~4;›\' ޔƣÈJ$ZÊA±ØÀÃÇF6ÆNŽ®ä6mpì§]1¬«fÔ¶gk?¡j+âo­ù¦õgGri+b¬}Öœ¹U¦Í}”¶âYò<‡¶b}ìì}iÜo—§‰ÿØž¦ÿÅìtZë¢4·µ?ݺïºÔ·z]úåŽëRÿ{Ö¥G/^–Öíqû²êZâŒı÷;ïÿ¬mÅòXIW?{úŠïì÷o©õêþ›W¥Ñß3ö¦ôòþÎÚØôÊ1ñÓ§k:k7í­Á´1u\]ë¼ö©Ž¸êÛg¿øì_5¶cŵ­7•Ïiñ9)ŽýR|®z(¾:M¶âêÚC1›Ï÷ž¢¹ÏUýjϬŸžâ³±×–Ä+ùô]©´rY8}à´Ò†Ä¾\ÏW](–ÔF[QÊViP²VÇÓ°´’ZêŽ{ŠæEæŽWLIWTY«£·:þKZ3ë`jIÛqJÉZoƒÇɵVËܼOH7Fæ’5j‰Ù5®¢Î¸Ùo,ó°ÔRÁPjuäV‹s*‹Q-ïðÔH«a°ÍŒ\Í´Á¶¢ºâ©çÞV ]ü·ÚŠ­â¼?ìžâ¨40û¬åg͸±ãïÒ·ÒGâµ\,ÏôãÛYÕ=Åز\q™›¾õÍ=SGëùíécë:RÇ.ñÅš§Ôñùˆ¨oRy_ÊvÍP=­·]±]«î¶]*¨ju—47aXÏÒÛ¢+ƒe¸ä(ƒõôl §ê44XOÉSnS¢+3‹‚ms[ÓN{—v¢|ÿ"¯ýÉõ‘íDùõCó›!e›t'Öæ–<Õ^7™XOØL;ñ Ÿ=Äãšx­ÌŒ4ò÷q¬ßßž&^:9Mkˆ×ui:aĘ´lü˜ôÞÎx9cn:­ëì´lDk:cј4mÑÔ4}Ѻ´s­?‹¶bd´µ¨+=s.óQm“]ë˱âêÎòǯ-­ÅCñ¹âÆ«ÆÄ‘ýPÇØ4úÆ«âè[=ÔQ[Õ±÷Uq!Ñ·wG­3õ½¼µ/¥É/¯ÅÓËÉ“VöÕ:ÇLꌩc&]»wJý£¯}}×1úš½ÓS­qɱ"¥«ÓS±a_>®\YŒ®žM6þìR-ÏøaÛºÈG»zég²¡Ô“ß^m¢Fz3ïÛO~ûÉÃÒ5Db9eÔ·i£êH}{¤FzãüYÍm0µ1¡´/¥Þ*ou6[˜F½%gã ­_ Ï[•ŠÍçSJ{ÒìÊ3òXÇÜës¨ÒË„fþæ†_? ηlµL.>e½bÍÕÔzËPtbB#Õ>”ý°@YÈFëROoÖÔHÝ ÕˆŠ†µ0ü¥ªfj•{0½šIY€²©KWÞô´Á}Gì^éô—}ÑdÄвô·ÕPŒ”|õ6e\YÂÒ•öŽˆ­¯†›i¯Œ´WK«ÊoWêón|^qÅàhÜU ŽTÃÕõCL–g0shî¦eð­o­ï‚ÍáfÙayJ‘Fm̉­iÂq¥Y2ïøÅyí¯¢E,mÌ‘óŽ?uñFõ.k6ØX»þÙòl¦Ùq£6æÌø›Å@i¢x2î?~Ÿ&ü<⬴ÿÓmû¯»·cÚKoéxÝÇI¯ÿÙÓU¼î³OÇß<ÖGžõ‘]”ë¯Ê—zRÔqý ¸<UŽ.(-/ýøÓkiæËÝÅŠiÑÞÕ«ªÉ+â˃%ÛÕÑl7¤k;ãÙÆ­|üáè_;æ•×þ6ÒWu>uÍÑ¿ùßV|¥Ñ/Ž^õ½ªâÖk÷®fÔú•§ê3ŒúËÍL5¿è ο¹<1¡$W˽ӦmQul ÛY«£¤l¿²7ºææ¬÷›©U¿žTŽ¬ J”iÕŽSMÙ D9læ—3Ù&%Jú’Ó7R¥/YR/3¬®FúéQ(j+SÊé­ªÿô8Þ8=>êSæGÝQ¤Gâé%S}JY–Ryu­ùËq[•©†«FÍÏ0¥Z¢f™ÓKmQýPWobÑN/+7”^š‡†AµÔ›N¾ êS‹r)³©uI«OÙ°TIœ2|R}B³LŒ5æßH2ÑmgÓ¸n‰¿Ãƽg|§+žülÝÏÖ­‹/)UÓêmUi¢ªŸÍ¹#¾{ãußy¨sEç¤ølœ1Kc‡íwa=4%K.MK.¸-¦6ºúØÑE©¤^P
+F?–:’«Z¢|u-÷<;_Tog–.Êwô¿&©jg–žº¨,Þ3uqÏó¶yóßè =äÞL;³ñßQª{žT=ߘ—Óþ+žþm:ãõýiý‹ÖmUO;ãEýéƒq³ÿľ4ñ³qô³Žhog}¦g£åh®ùÖ«žZ‡{Ú/ž®ˆo–ÄçòøŒfb¿ÏüyþàÔI%g”º:‚F{ÍL4¥«ê e^Ïéï(-ºÉ¾Y¥W©Ãvïú™±¤FâwËÎ]™)‘Z†¾ûÝê¯dõÃ¥¤–ÄH­’Ñ°Ô’<˜Ze-yKîFjýÞ¤ªáO•šž}nƒk1lškQ-pÃ!$Õ×W¨ÑúÔëˆÜÔºYóðm¤öJ½‘»Ê[©ÍìÍK”²¿o¹á5Ê@GGǃÿut¬ˆñr™]åvR”ÿnY¿i”ô›nªO/ùª²£‡Ú‚j×æ]Ju©X¥>¯¡XªèJ-Cÿ ¦5gR%´ÅW<Û?_µñûæüƒ-/Žäøí! — õB›û<±vî³åÙL;1~£ïdD;QëëKãÎêû—uiÚÈõiê+oH‹öß9-š>6õM‹˜>2ÅÕJ=Î_‰8clZ¶~lzÃÒþ}ÓÒÄx¾Zê9²3U_t)ó©ß÷ìV_øêRdôUñL;­ˆ¯³¥Ö«¢qê½<þÄÝ?ºcÌÀ-ý“"¡¶>>קõ11ªø\_¾eÝàç¤(1)•r“R ¯ŸÔ±">G~E{­t´ãúKó°g}.qØ¿?Š‹6,­ïÆmëjï‹ÏU]s¬Ù¯ËœS<çj&ÖóV©%ypBÉ\O­'7&lš\ŸÐÌ}r=wõY_aU—[ ú,šÙ¹Kž2ëÁä*}°äFé;©(0”¿ž·ú|.éQpøê ÍàÒ‡å/ËY¡Å̪äS•^ŸPÏ]O¯'WéÃ*i0Ô…Jzcù#wsË Ë]R›ÉÕ¼›ë9,µ±=«¬ƒyãffƒ¿Û¾4½¥ã¦ÎÎè˜qÙŒ›:Ï訾¼ZòÔÛš­K½£ÆÅ}P´#ËûûSG¼¤¨#îžÎ^>9-_Þ{gg×ÕU½ÃÚ˜Ûn;;«¥‰5©/nY§rÛ[©šV›«Y Õ×:¶aq,ùêH1T±D¡yÑ”FW¾ãµKoiOʯoó÷Oút$ÆuÇ3þ†·*]|ÇëÙòl¦=‰o2¸«ÇkL ?‘ÒÈUqÌÕ:Ò„–Îôª–¾Ô—=kvê‰{Ë®ñ·Ùx‰~_ÇÔôèAñŽ ãûí£Ò²YãÓí‹Ò´È¿óÈø»ìĸöˆû›ê;^e>´'ñG•¸øJ¹aÔ_žw}%íHñH·¶<æœjW¥þZùëlgmZz(]»|5£ãÚ­Òžåo´­ñ×ÙÖ¾(pumrë9W·öííŒkÃÎIûÄßlÊ“•éqTÞöÏT¦/¿ÎÆŸoâ™J|Í#šÌ‡"!îºâ›g›¶'eç¼û¬Ÿóª³ÛÀ@óëCgÂ8ÑŒHñ5Êj‡¬ò–;†HŠÿâB¡$—ÔH«’†’#µÊ÷¹zÞ껜‘·‘ïsiDüÅ"&•‹ò$®Êõ¹ñÇ›F‘#FÄÎôoÃk.Ÿ)9Ú«z£Žzå/1U1©ü(†£æ’Zã©ÉàÄúÓÕ’\N|#RUE¬JõÔ¶™w°ŠúóÙH®êhTRºRÕu4ë©Õ ËSš’—hE'V±™+«R«Ì“«K¹†dä®×\d}K%±uª´aÛ"Ê O+ØFmÄ@êè<§ãßÓ—uœß¼Ù¨(׬ñåÁÔ1®3},öíïHçÄ÷›::#â¿êf¹”ÖFÔ/®¸bJýûy±³}v9…•þÙ‘vöÙñÿÇËÔ?ûãñü$¦–úPŠxW/Q 5¯9ª6"ßšv=»úõç1í‡Ç×øO©ªn|tDÿçõ#º%®74eJ¤pÔî»o#ËÿD/ê®–£sæI‹ãå%í›ü“ ‘!–£\Fý)»–˜Ï¤he.8gZ¾ãú›¿Å‹ßÕülãßãŲ,mM»½¬ü¢s\Š7ª¿é\¸ùuœ.:ø̳98My{ôÞž¦üÕ™Sþ*ž ÖGÞvæÜ·•‘¹o&’þªd+#Í ç#ñ{Ï£ã=3bžsê¿"uâÂó6;ÖíÓE‡Ÿ9þðxóÊ™ãß?==3Þ†•þ‡RÎûŸªhÓzþ„UW~±ë, ¿â·u:òø“^qÂI›L‡§‹N8sçR:åÌã€Øtxþ™Óæ§çœ¹óœ8[ž¹ó‰)=Ópý׿ïiM»¿®ÌwlzÛœ“çµÇ}ÿf(ý†tÑñg.‹KýãÎ\v\JÕð9³ŸKRcIGÄœŽ}æßi½qÎâ¥'Î?iÁÉ釽ù•§.™·xØOʱµá¯¶¢Mª~ý‘qX´.Ž½~nÔa³þ›Î<«å¦3—·”&%Ê–ßµûQíñ“¤ùsã-©YÿŒxGÐü¹ñ±½ç,]º÷F?ÛpŽ½1«b74çõVÝÐ<Ê/ JÍï›×œ¶¤ý¸ÃSõñþöøåÔ~1|СG6SYv=úÈ7qèÌzå»îµ_UR3W,âÜ*߬Ž<òmo9¢äŒZßß>kÖ¬j>.g[GÕVÔ>ûìmE”Ž¶b}ÊÓªªk´¤m­ñ›¾x ]íŠF“ºÇ;ƒù5ƒéQ0÷Þ·I©£JK1½vÅ%e<¥=âßf(Óöˆk+â7Å_Þ=†ßYÒRѲïqrùuXüY½ýø}6lÝ£‚ÿ­–½/ÞÐõµh!讀¹ù7YŒª~Ù=ü—‘ÕUu,fýÍbå7¨yk[OñËÇÖÚŒ¿¼µü*{«è‡bë¸èÇ/#[_ý¶ÿ½Ÿ´ÇÒ„óž/:ôˆö¥ Ûç´Ï:蕇ÌY0÷ÄyóçƤêß‘Š?*öé?ñ™+ö›[Òž?*<Ñ|µµ\±*â{áòÂèÿ¨üέüÖ£|—»|G3¯ÝgZù¾VùFùkùHy>Yž=”û…Üó†sïâé·Ÿ[ÞÉ“ð›ùŽÞØ+ïžYÞ™S½Ç¦­e¨ûŸòíÿ¹"ß~À%ùöo¶æï>ïœyëò|óvûæ›þí°|ë gýÏÿ*õ¹ý²>–í ¹ó9¥±§îùt´[Ñœ»é3ï©_Ýk {Øox㸮wåMGѺ½?=Zo2Êbë‹fÄƉþÄè—=õ¥Ñ/{êÑ/{òË£¿ám}eôã7¼­ûD¿¼yàµÑw®´¾>ú[þŸïѱÖš^6÷™ÛÕXóxÖœ^ÚlµÓP·aÛW"ifÔuþ3×5ëÈC£º¡
+bhÓ:GW=sG/8iY³†÷·/|÷I 6lÇ«ÖùšíªÜ¦sŒ·•¼ìgdŽGo´Ð›ÖpHÔðô3×ð¶“Ì]øþ%íGpdsÑK£zÊÉ´%M:ãÈ?ú¶‹xŸã–)5Þïó»Fu[5«Ýä …­Õ¯ÇcŸjùûúo÷cß9èÿ|¿ùÓÔÐñ·W‘Þpûô?Míj%@€ @€ @€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€¿™L»×çØ´YÅ B —òámÅ˼û¼'·¶¾7ÖÚ¯¯ÕïÉ­­#p4Ö3ÑŠ×úoåFÜ‘žF`ÜßÁ¸Nóâi”d|®eÔX½Q O‘Þ#÷z6øE'-ŸV¼lm™·œ•¹¯ùZÞÚõW¥iêɯË8ÏÚ;«NFOŸ¬ÑëЛÿNo±×å#òßÙók[óøë<Î~  @€ @€ @€@€€UIAppShellÀ‚" ðr \ No newline at end of file
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/test_spec/convertor_test_spec.html b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/test_spec/convertor_test_spec.html
new file mode 100644
index 000000000000..5b77f3263654
--- /dev/null
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/test_spec/convertor_test_spec.html
@@ -0,0 +1,2274 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
+ <TITLE></TITLE>
+ <META NAME="GENERATOR" CONTENT="StarOffice 6.0 (Solaris Sparc)">
+ <META NAME="AUTHOR" CONTENT="dermot mccluskey">
+ <META NAME="CREATED" CONTENT="20011001;14124200">
+ <META NAME="CHANGED" CONTENT="20020103;15592900">
+ <STYLE>
+ <!--
+ P.text-body-indent { margin-left: 0.5cm }
+ -->
+ </STYLE>
+</HEAD>
+<BODY>
+<H1 ALIGN=CENTER>Xmerge Test Spec</H1>
+<H2>1.0 Intorduction</H2>
+<BLOCKQUOTE>This document outlines the tests to be performed on
+Xmerge, the XML-to-PDB converter for the SunONE Webtop.</BLOCKQUOTE>
+<H2>1.1 Authors</H2>
+<UL>
+ <LI><P STYLE="margin-bottom: 0cm">Dermot McCluskey
+ (dermot.mccluskey@sun.com)
+ </P>
+ <LI><P>Keelin Boyle (keelin.boyle@sun.com)
+ </P>
+</UL>
+<H2>1.2 Project/Product Identifier</H2>
+<BLOCKQUOTE>XMerge</BLOCKQUOTE>
+<H2>1.3 Reision History</H2>
+<P STYLE="margin-bottom: 0cm">&nbsp;
+</P>
+<TABLE COLS=4 WIDTH=100% BORDER=1 CELLPADDING=2 CELLSPACING=0>
+ <TR>
+ <TD>
+ <P><B>Date</B></P>
+ </TD>
+ <TD>
+ <P><B>Revision</B></P>
+ </TD>
+ <TD>
+ <P><B>Comments</B></P>
+ </TD>
+ <TD>
+ <P><B>Approval</B></P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <P>28-Sep-2001</P>
+ </TD>
+ <TD>
+ <P>0.3</P>
+ </TD>
+ <TD>
+ <P>Draft 3.</P>
+ </TD>
+ <TD></TD>
+ </TR>
+ <TR>
+ <TD></TD>
+ <TD></TD>
+ <TD></TD>
+ <TD></TD>
+ </TR>
+</TABLE>
+<H2>1.4 Document Customers</H2>
+<UL>
+ <LI><P STYLE="margin-bottom: 0cm">XMerge Development team
+ </P>
+ <LI><P STYLE="margin-bottom: 0cm">Ireland Desktop Test team
+ </P>
+ <LI><P>SunONE Webtop C-team
+ </P>
+</UL>
+<H2>1.5 References</H2>
+<H2>2.0 Requirements &amp; Dependencies</H2>
+<BLOCKQUOTE>Successful automation of the tests outlined in this
+specification is dependent on the stability and reliability of the
+POSE emulator and the EmRPC Perl module that allows test
+automation.&nbsp;&nbsp; There is a risk associated with this in that
+the emulator software may not accurately emulate every aspect of the
+PalmOS and so the automated tests may not discover bugs which occur
+in &quot;real world&quot; scenarios.&nbsp; Also, if the automation
+software we use proves not to be reliable enough to consistently
+return the same test results, then the effort spent creating the test
+automation scripts will not be worthwhile.
+</BLOCKQUOTE>
+<BLOCKQUOTE>Verification of test results will depend on the usability
+of the Java-based Comparator applications, developed by the US&nbsp;Webtop
+QA&nbsp;team, which will be used to compare the output XML and
+PDB&nbsp;files with the expected results.
+</BLOCKQUOTE>
+<BLOCKQUOTE>Many of the tests described in this specification are
+very time consuming and it would not be practical to execute them
+manually on a regular basis.</BLOCKQUOTE>
+<H2>2.1Required Tools &amp; Technologies</H2>
+<UL>
+ <LI><P STYLE="margin-bottom: 0cm">PalmOS Emulator (POSE)
+ </P>
+ <LI><P STYLE="margin-bottom: 0cm">EmRPC Perl module and Test Driver
+ harness
+ </P>
+ <LI><P STYLE="margin-bottom: 0cm">Comparator applications (XML and
+ PDB&nbsp;comparison utilities)
+ </P>
+ <LI><P STYLE="margin-bottom: 0cm">Palm V device ???
+ </P>
+ <LI><P>StarOffice 6.X.
+ </P>
+</UL>
+<H2>2.2 Test Framework Used</H2>
+<BLOCKQUOTE>These tests are to be automated using the POSE emulator
+and the Test Driver developed by the XMerge team, which interacts
+with the EmRPC module and allows test engineers to write test scripts
+to control the conversion of documents and the interaction with the
+POSE emulator.&nbsp; Using this software, it is possible to automate
+the process of loading documents into the appropriate Palm
+application, apply edits to the document within the Palm emulator and
+export the document.</BLOCKQUOTE>
+<H2>3.0 Scope of Work</H2>
+<H2>4.0 Test Strategy</H2>
+<H2>4.1Test Suite Location</H2>
+<H2>4.2 Strategy overview</H2>
+<H2>4.3 Test Cases and Assertions</H2>
+<H2>4.4 Testing Not Performed</H2>
+<UL>
+ <LI><P STYLE="margin-bottom: 0cm">Performance Testing
+ </P>
+ <LI><P>Internationalization (I18N) related testing.
+ </P>
+</UL>
+<H2>5.0 Test Cases</H2>
+<BLOCKQUOTE>The test cases are divided into seperate sections for
+each PDB format supported by XMerge, and further divided into
+Convert and Merge tests within each format.&nbsp; The Convert tests
+validate that XMerge can perform the round trip conversion from
+StarOffice XML-based file format to PalmOS PDB format and back to
+StarOffice XML format again, without any loss of content.&nbsp; The
+Merge tests validate that XMerge can merge edits made on the Palm
+device with the original StarOffice XML file, while retaining any
+information in the original document which could not to translated
+into PDB format, eg embedded tables.
+</BLOCKQUOTE>
+<BLOCKQUOTE>Each section is further divided into Content and Style
+tests.&nbsp; The Content tests deal with the ability of XMerge to
+retain all the meaningful content, eg text, after the conversion and
+merging process.&nbsp; The Style tests deal with the ability of
+XMerge to retain the stylistic details, eg bold face; justification;
+line breaks, from the same round-trip conversion.&nbsp; The
+Content-retaining functionality is considered of much higher priority
+than the Style-retaining functionality in version 1.1. <BR>&nbsp;</BLOCKQUOTE>
+<H2>5.1 AportisDoc Tests</H2>
+<H2>5.1.1 AportisDoc Convert Tests</H2>
+<H2>5.1.1.1 AportisDoc Convert Content Tests</H2>
+<TABLE WIDTH=100% BORDER=1 CELLPADDING=2 CELLSPACING=0>
+ <TR VALIGN=TOP>
+ <TD WIDTH=30%>
+ <P><BR>
+ </P>
+ </TD>
+ <TD>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD>
+ <P><BR>
+ </P>
+ </TD>
+ <TD>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+</TABLE>
+<H2>5.1.1.2 AportisDoc Convert Style Tests</H2>
+<P><BR>&nbsp;
+</P>
+<H2>5.1.2 Aportis Merge Tests</H2>
+<H2>5.1.2.1 AportisDoc Merge Content Tests</H2>
+<TABLE WIDTH=100% BORDER=1 CELLPADDING=2 CELLSPACING=0>
+ <COL WIDTH=77*>
+ <COL WIDTH=179*>
+ <TR VALIGN=TOP>
+ <TD WIDTH=30%>
+ <P><BR>
+ </P>
+ </TD>
+ <TD WIDTH=70%>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=30%>
+ <P><BR>
+ </P>
+ </TD>
+ <TD WIDTH=70%>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=30%>
+ <P><BR>
+ </P>
+ </TD>
+ <TD WIDTH=70%>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+</TABLE>
+<H2>5.1.2.2 AportisDoc Merge Style Tests</H2>
+<TABLE WIDTH=100% BORDER=1 CELLPADDING=2 CELLSPACING=0>
+ <COL WIDTH=72*>
+ <COL WIDTH=184*>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/animatedgif</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with an embedded image &#8211;
+ straight forward convert and merge</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_animatedgif.sxw</B>.
+ </P>
+ <P>Convert a_animatedgif.sxw to a_animatedgif.pdb, in AportisDoc
+ PDB format. <BR>Start POSE with AportisDoc application and import
+ a_animatedgif.pdb. <BR>Export the doc back to a_animatedgif.pdb.
+ <BR>Merge a_animatedgif.pdb and the original document to
+ a_animatedgif.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <BLOCKQUOTE>This document has a animated gif embedded in it.</BLOCKQUOTE>
+ <BLOCKQUOTE>Start of animated gif.</BLOCKQUOTE>
+ <BLOCKQUOTE>&lt;Image of spinning globe&gt;</BLOCKQUOTE>
+ <BLOCKQUOTE>End of animated gif.
+ </BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/bolddoc</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with bold type and varying font &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_bolddoc.sxw</B>.
+ </P>
+ <P>Convert a_bolddoc.sxw to a_bolddoc.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_bolddoc.pdb. <BR>Export the doc back to a_bolddoc.pdb. <BR>Merge
+ a_bolddoc.pdb and the original document to a_bolddoc.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <BLOCKQUOTE><STRONG>This complete line is in <FONT SIZE=6 STYLE="font-size: 22pt">bold</FONT>
+ with font set to Times New Roman. The word bold is of size 22,
+ while rest of the words are of size 12. </STRONG>
+ </BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/bookmarks</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with inserted bookmarks &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_bookmarks.sxw</B>.
+ </P>
+ <P>Convert a_bookmarks.sxw to a_bookmarks.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_bookmarks.pdb. <BR>Export the doc back to a_bookmarks.pdb.
+ <BR>Merge a_bookmarks.pdb and the original document to
+ a_bookmarks.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <BLOCKQUOTE>Two paragraphes of text with 2 bookmarks set. To
+ identify bookmarks, select Edit -&gt; Navigator and bookmarks,
+ user should see BK1 and BK2 and clicking on these labels in the
+ navigator popup places the cursor in the position of the original
+ bookmark, .i.e.
+ </BLOCKQUOTE>
+ <BLOCKQUOTE>BK1 = Bookmark|</BLOCKQUOTE>
+ <BLOCKQUOTE>BK2 = Silicon
+ </BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/bulletorderedlist</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with bulletorderedlist &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_bulletorderedlist.sxw</B>.
+ </P>
+ <P>Convert a_bulletorderedlist.sxw to a_bulletorderedlist.pdb, in
+ AportisDoc PDB format. <BR>Start POSE with AportisDoc application
+ and import a_bulletorderedlist.pdb. <BR>Export the doc back to
+ a_bulletorderedlist.pdb. <BR>Merge a_bulletorderedlist.pdb and the
+ original document to a_bulletorderedlist.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm; font-style: normal">This document is
+ an example of a simple bullet ordered list.</P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <UL>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Bullet 1</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Bullet 2</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Bullet 3</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Bullet 4</P>
+ </UL>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <BLOCKQUOTE STYLE="font-style: normal">End of bullet Ordered list.</BLOCKQUOTE>
+ <BLOCKQUOTE><BR>
+ </BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/emptydoc</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: empty document &#8211; straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_emptydoc.sxw</B>.
+ </P>
+ <P>Convert a_emptydoc.sxw to a_emptydoc.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_emptydoc.pdb. <BR>Export the doc back to a_emptydoc.pdb. <BR>Merge
+ a_emptydoc.pdb and the original document to a_emptydoc.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <BLOCKQUOTE><STRONG>&lt;empty document&gt;. </STRONG>
+ </BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/firstlineindent</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with line indent &#8211; straight
+ forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_firstlineindent.sxw</B>.
+ </P>
+ <P>Convert a_firstlineindent.sxw to a_firstlineindent.pdb, in
+ AportisDoc PDB format. <BR>Start POSE with AportisDoc application
+ and import a_firstlineindent.pdb. <BR>Export the doc back to
+ a_firstlineindent.pdb. <BR>Merge a_firstlineindent.pdb and the
+ original document to a_firstlineindent.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <BLOCKQUOTE>This line is using First Line indent style. Now isnt
+ that Kool... Also Im running short of words to say here, to wrap
+ this particular sentence.</BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/fontsize</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with varying font size &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_fontsize.sxw</B>.
+ </P>
+ <P>Convert a_fontsize.sxw to a_fontsize.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_fontsize.pdb. <BR>Export the doc back to a_fontsize.pdb. <BR>Merge
+ a_fontsize.pdb and the original document to a_fontsize.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <BLOCKQUOTE>Text with font size 10, 16, 20, 40, 96.</BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/heading</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with heading type style &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_heading.sxw</B>.
+ </P>
+ <P>Convert a_heading.sxw to a_heading.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_heading.pdb. <BR>Export the doc back to a_heading.pdb. <BR>Merge
+ a_heading.pdb and the original document to a_heading.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-top: 0.42cm; page-break-after: avoid"><FONT FACE="Times New Roman, serif"><FONT SIZE=4>This
+ piece of text is in Heading paragraph style.</FONT></FONT></P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/heading1</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with heading1 type style &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_heading1.sxw</B>.
+ </P>
+ <P>Convert a_heading1.sxw to a_heading1.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_heading1.pdb. <BR>Export the doc back to a_heading1.pdb. <BR>Merge
+ a_heading1.pdb and the original document to a_heading1.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <H1 STYLE="font-weight: medium">This piece of text is in Heading1
+ paragraph style</H1>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/heading2</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with heading2 type style &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_heading2.sxw</B>.
+ </P>
+ <P>Convert a_heading2.sxw to a_heading2.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_heading2.pdb. <BR>Export the doc back to a_heading2.pdb. <BR>Merge
+ a_heading2.pdb and the original document to a_heading2.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <H2>This document is set in Heading2 style.</H2>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/hyperlink</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with embedded hyperlink &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_hyperlink.sxw</B>.
+ </P>
+ <P>Convert a_hyperlink.sxw to a_hyperlink.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_hyperlink.pdb. <BR>Export the doc back to a_hyperlink.pdb.
+ <BR>Merge a_hyperlink.pdb and the original document to
+ a_hyperlink.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm">This line is bookmarked to BK1
+ (Insert-Bookmark)</P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm">The line <A HREF="http://sunweb.central/allhome.html">SunWeb
+ Home Page</A> has a hyperlink to sunweb.central.</P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm">This line is a hyperlink to <A HREF="#BK1">BK1</A>.
+ Click here will take cursor to top of page.</P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P>&lt;Check hyperlink has the correct address.&gt;</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/justified</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with justified styling &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_justified.sxw</B>.
+ </P>
+ <P>Convert a_justified.sxw to a_justified.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_justified.pdb. <BR>Export the doc back to a_justified.pdb.
+ <BR>Merge a_justified.pdb and the original document to
+ a_justified.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm; font-style: normal"><SUP><FONT SIZE=5 STYLE="font-size: 20pt">Left
+ aligned text</FONT></SUP></P>
+ <P ALIGN=CENTER STYLE="margin-bottom: 0cm; font-style: normal"><SUP><FONT SIZE=5 STYLE="font-size: 20pt">Centre
+ aligned</FONT></SUP></P>
+ <P ALIGN=RIGHT STYLE="margin-bottom: 0cm; font-style: normal"><SUP><FONT SIZE=5 STYLE="font-size: 20pt">Right
+ aligned </FONT></SUP>
+ </P>
+ <P ALIGN=JUSTIFY STYLE="font-style: normal"><SUP><FONT SIZE=5 STYLE="font-size: 20pt">Justified</FONT></SUP></P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/linebreaks</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with linebreaks &#8211; straight
+ forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_linebreaks.sxw</B>.
+ </P>
+ <P>Convert a_linebreaks.sxw to a_linebreaks.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_linebreaks.pdb. <BR>Export the doc back to a_linebreaks.pdb.
+ <BR>Merge a_linebreaks.pdb and the original document to
+ a_linebreaks.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm">This page has a line breaks inserted
+ at end of this line.<BR>When coverted to doc format it should
+ accordingly be broken up at the same point.</P>
+ <P ALIGN=LEFT STYLE="text-indent: 0.2cm; margin-top: 0.4cm; margin-bottom: 0.41cm">
+ A simple list</P>
+ <OL>
+ <LI><P ALIGN=LEFT>second entry. A line break follows<BR>the above
+ line has been broken with a line break</P>
+ </OL>
+ <P STYLE="font-style: normal"><SUP><FONT SIZE=5 STYLE="font-size: 20pt">Third
+ entry</FONT></SUP></P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/linespacing</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with varied linespacing &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_linespacing.sxw</B>.
+ </P>
+ <P>Convert a_linespacing.sxw to a_linespacing.pdb, in AportisDoc
+ PDB format. <BR>Start POSE with AportisDoc application and import
+ a_linespacing.pdb. <BR>Export the doc back to a_linespacing.pdb.
+ <BR>Merge a_linespacing.pdb and the original document to
+ a_linespacing.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm"><I>First: This line and thenext line
+ is spaced by double-line spacing</I></P>
+ <P STYLE="margin-bottom: 0cm"><I>Second: Note the line-distance
+ spacing</I></P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm"><B>First: This line and the next
+ line is spaced by single-line spacing</B></P>
+ <P STYLE="margin-bottom: 0cm"><B>Second: Note the line-distance
+ spacing</B></P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm; font-weight: medium">First: This
+ line and the next line is spaced by 1.5 line spacing</P>
+ <P STYLE="font-weight: medium">Second: Not the line-distance
+ spacing.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/numberorderedlist</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with numberorderedlist &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_numberorderedlist.sxw</B>.
+ </P>
+ <P>Convert a_numberorderedlist.sxw to a_numberorderedlist.pdb, in
+ AportisDoc PDB format. <BR>Start POSE with AportisDoc application
+ and import a_numberorderedlist.pdb. <BR>Export the doc back to
+ a_numberorderedlist.pdb. <BR>Merge a_numberorderedlist.pdb and the
+ original document to a_numberorderedlist.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm; font-style: normal">This document is
+ an example of a simple numbered ordered list.</P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <OL>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">First</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Second</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Third</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Fourth</P>
+ </OL>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm; font-style: normal">End of numbered
+ Ordered list</P>
+ <BLOCKQUOTE><BR>
+ </BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/pagebreak</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with pagebreaks &#8211; straight
+ forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_pagebreak.sxw</B>.
+ </P>
+ <P>Convert a_pagebreak.sxw to a_pagebreak.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_pagebreak.pdb. <BR>Export the doc back to a_pagebreak.pdb.
+ <BR>Merge a_pagebreak.pdb and the original document to
+ a_pagebreak.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm">The document has page breaks</P>
+ <P STYLE="margin-bottom: 0cm">Page 1
+ </P>
+ <P>-now a page break-</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/paragraph</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with set paragraph styling&#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_paragraph.sxw</B>.
+ </P>
+ <P>Convert a_paragraph.sxw to a_paragraph.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_paragraph.pdb. <BR>Export the doc back to a_paragraph.pdb.
+ <BR>Merge a_paragraph.pdb and the original document to
+ a_paragraph.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm">This line is a paragraph. It is
+ indented from left hand side by 1.0 inch and from right and side
+ by 1.0 inch (paragraph
+ </P>
+ <P>settings).</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/standard</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with standard text and default
+ settings &#8211; straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_standard.sxw</B>.
+ </P>
+ <P>Convert a_standard.sxw to a_standard.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_standard.pdb. <BR>Export the doc back to a_standard.pdb. <BR>Merge
+ a_standard.pdb and the original document to a_standard.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P><FONT FACE="Times New Roman">This line of text is listed in
+ standard style.</FONT></P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/subscript</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with subscript text setting &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_subscript.sxw</B>.
+ </P>
+ <P>Convert a_subscript.sxw to a_subscript.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_subscript.pdb. <BR>Export the doc back to a_subscript.pdb.
+ <BR>Merge a_subscript.pdb and the original document to
+ a_subscript.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm"><FONT FACE="Times New Roman"><FONT SIZE=4>The
+ last word on this line is in subscript. <SPAN STYLE="font-style: normal"><SUB>Dude</SUB></SPAN></FONT></FONT></P>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/superscript</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with superscript text setting &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_subscript.sxw</B>.
+ </P>
+ <P>Convert a_superscript.sxw to a_superscript.pdb, in AportisDoc
+ PDB format. <BR>Start POSE with AportisDoc application and import
+ a_superscript.pdb. <BR>Export the doc back to a_superscript.pdb.
+ <BR>Merge a_superscript.pdb and the original document to
+ a_superscript.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm"><FONT FACE="Times New Roman"><FONT SIZE=4>The
+ last word on this line is in superscript. <SPAN STYLE="font-style: normal"><SUP>Dude
+ </SUP></SPAN></FONT></FONT>
+ </P>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/symbols</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with various symbol types &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_symbols.sxw</B>.
+ </P>
+ <P>Convert a_symbols.sxw to a_symbols.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_symbols.pdb. <BR>Export the doc back to a_symbols.pdb. <BR>Merge
+ a_symbols.pdb and the original document to a_symbols.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm">'-'-'-'-&gt;-&gt;-&gt;-&gt;.
+ '''''''. -------. &gt;&gt;&gt;&gt;&gt;&gt;&gt;</P>
+ <P STYLE="margin-bottom: 0cm; font-style: normal"><SUP><FONT FACE="Times New Roman"><FONT SIZE=4>!&#8221;&pound;$%^&amp;*()_+}{~@:?&gt;&lt;,./;'#][=-???
+ </FONT></FONT></SUP>
+ </P>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/tab</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with tab styling &#8211; straight
+ forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_tab.sxw</B>.
+ </P>
+ <P>Convert a_tab.sxw to a_tab.pdb, in AportisDoc PDB format.
+ <BR>Start POSE with AportisDoc application and import a_tab.pdb.
+ <BR>Export the doc back to a_tab.pdb. <BR>Merge a_tab.pdb and the
+ original document to a_tab.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant document should
+ contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm">This is a tabbed document</P>
+ <P STYLE="margin-bottom: 0cm">1 Tab line</P>
+ <P STYLE="margin-bottom: 0cm">2 tabbed line</P>
+ <P STYLE="margin-bottom: 0cm">3 tabbed line</P>
+ <P STYLE="margin-bottom: 0cm">2 tabbed line</P>
+ <P STYLE="margin-bottom: 0cm">1 Tab line</P>
+ <P STYLE="margin-bottom: 0cm">4 tab line</P>
+ <P STYLE="margin-bottom: 0cm">2 tab line</P>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/table</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with table &#8211; straight forward
+ convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_table.sxw</B>.
+ </P>
+ <P>Convert a_table.sxw to a_table.pdb, in AportisDoc PDB format.
+ <BR>Start POSE with AportisDoc application and import a_table.pdb.
+ <BR>Export the doc back to a_table.pdb. <BR>Merge a_table.pdb and
+ the original document to a_table.sxw.
+ </P>
+ <P><B>Expected result:</B>
+ </P>
+ <P>The resultant document should contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm">&lt;Check table &amp; contents are
+ identical to original.&gt;
+ </P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm">This document has a table with 3
+ rows and 3 columns:</P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P><BR><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm">&lt;TABLE &amp; CONTENTS&gt;</P>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/textspan</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document testing textspan
+ italics,bolds,underline together&#8211; straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_textspan.sxw</B>.
+ </P>
+ <P>Convert a_textspan.sxw to a_textspan.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_textspan.pdb. <BR>Export the doc back to a_textspan.pdb. <BR>Merge
+ a_textspan.pdb and the original document to a_textspan.sxw.
+ </P>
+ <P><B>Expected result:</B>
+ </P>
+ <P>The resultant document should contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm">Document indicating Text Span</P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm; font-weight: medium"><I>This is a
+ simple line with some amount of text. The whole line is in italic
+ except the next 3 words which is also <B>SET TO BOLD</B>. Also the
+ next word is <U>UNDERLINED</U>. The essence is differnet styles
+ within the same text span.</I></P>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/style/unorderedlist</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document with unorderedlist &#8211; straight
+ forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_unorderedlist.sxw</B>.
+ </P>
+ <P>Convert a_unorderedlist.sxw to a_unorderedlist.pdb, in
+ AportisDoc PDB format. <BR>Start POSE with AportisDoc application
+ and import a_unorderedlist.pdb. <BR>Export the doc back to
+ a_unorderedlist.pdb. <BR>Merge a_unorderedlist.pdb and the
+ original document to a_unorderedlist.sxw.
+ </P>
+ <P><B>Expected result:</B>
+ </P>
+ <P>The resultant document should contain:
+ </P>
+ <P STYLE="margin-bottom: 0cm; font-style: normal">This document is
+ an example of a simple un- ordered list</P>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <OL>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Wag the Dog</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Gladiator</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Insider</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Usual
+ Suspects</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Glengarry
+ Glen Ross</P>
+ </OL>
+ <OL>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Host Shots</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Airplane</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Monty
+ Python</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">History of
+ the World</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Sacry Movie</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Austin
+ Powers</P>
+ </OL>
+ <UL>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Scarlet and
+ the Black</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Operation
+ Day Break</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Life is
+ Beautiful</P>
+ <LI><P STYLE="margin-bottom: 0cm; font-style: normal">Nephew
+ (beutfiul soundtrack)</P>
+ </UL>
+ <P STYLE="margin-bottom: 0cm"><BR>
+ </P>
+ <P STYLE="margin-bottom: 0cm; font-style: normal; font-weight: medium">
+ End of un-ordered list.</P>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/content/style/wordwrap</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: document which tests wordwrapping &#8211;
+ straight forward convert</P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_wordwrap.sxw</B>.
+ </P>
+ <P>Convert a_wordwrap.sxw to a_wordwrap.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_wordwrap.pdb. <BR>Export the doc back to a_wordwrap.pdb. <BR>Merge
+ a_wordwrap.pdb and the original document to a_wordwrap.sxw.
+ </P>
+ <P><B>Expected result:</B>
+ </P>
+ <P>The resultant document should contain:</P>
+ <P STYLE="margin-bottom: 0cm; font-weight: medium"><I>This line is
+ a long line just to check if the word wrap feature works fine,
+ when it is synched onto the PDA..</I></P>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/content/simple01</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: simple document - insert text at beginning
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_standard.sxw</B>.
+ </P>
+ <P>Convert a_standard.sxw to a_standard.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_standard.pdb. <BR>Insert the following text, including the
+ terminating line-feed, at the beginning of the first line:
+ </P>
+ <BLOCKQUOTE>New text added to simple file.</BLOCKQUOTE>
+ <P>Export the doc back to a_standard.pdb. <BR>Merge a_standard.pdb
+ and the original document to a_standard.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant file should contain:
+ </P>
+ <BLOCKQUOTE>New text added to simple file. <BR>This&nbsp; line of
+ text is listed in standard&nbsp; style&nbsp;</BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/content/simple02</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: simple document - insert text in middle
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_standard.sxw</B>.
+ </P>
+ <P>Convert a_standard.sxw to a_standard.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_standard.pdb. <BR>Insert the following text immediately after
+ the word &quot;text&quot;:
+ </P>
+ <BLOCKQUOTE>, including this inserted phrase,&nbsp;</BLOCKQUOTE>
+ <P>Export the doc back to a_standard.pdb. <BR>Merge a_standard.pdb
+ and the original document to a_standard.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant file should contain:
+ </P>
+ <BLOCKQUOTE>This&nbsp; line of text, including this inserted
+ phrase, is listed in standard&nbsp; style&nbsp;</BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=28%>
+ <P><B>aportis/merge/content/simple03</B></P>
+ </TD>
+ <TD WIDTH=72%>
+ <P><B>Summary</B>: simple document - append text
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>a_standard.sxw</B>.
+ </P>
+ <P>Convert a_standard.sxw to a_standard.pdb, in AportisDoc PDB
+ format. <BR>Start POSE with AportisDoc application and import
+ a_standard.pdb. <BR>Append a new-line at the end of the line and
+ add the following line:
+ </P>
+ <BLOCKQUOTE>This is also in standard style</BLOCKQUOTE>
+ <P>Export the doc back to a_standard.pdb. <BR>Merge a_standard.pdb
+ and the original document to a_standard.sxw.
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant file should contain:
+ </P>
+ <BLOCKQUOTE>This&nbsp; line of text is listed in standard&nbsp;
+ style <BR>This is also in standard style</BLOCKQUOTE>
+ </TD>
+ </TR>
+</TABLE>
+<H2>5.2 MiniCalc Tests</H2>
+<H2>5.2.1 MiniCalc Convert Tests</H2>
+<H2>5.2.1.1 MiniCalc Merge Style Tests</H2>
+<TABLE WIDTH=100% BORDER=1 CELLPADDING=2 CELLSPACING=0>
+ <COL WIDTH=77*>
+ <COL WIDTH=179*>
+ <TR VALIGN=TOP>
+ <TD WIDTH=30%>
+ <P><B>minicalc/merge/style/columnswidth</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=70%>
+ <P><B>Summary</B>: Spreadsheet with 5 columns 10 entries -
+ Spreadsheet columnwidth variation.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_columnswidth.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_columnswidth.sxc to c_columnswidth.pdb, in MiniCalc
+ PDB format.&nbsp; <BR>Start POSE with MiniCalc application and
+ import c_columnswidth.pdb.&nbsp;</P>
+ <P>Choose Cell Reference &quot;B1&quot; &amp; alter column width
+ to 1.55 by selecting, Format -&gt; Column -&gt; Width... &lt; make
+ width change via spin button&gt; -&gt; OK, also decrease &quot;E1&quot;
+ similarly to have a column width of 1.68.<BR><BR><BR>
+ </P>
+ <P>Export the doc back to c_columnswidth.pdb.&nbsp; <BR>Merge
+ c_columnswidth.pdb to c_columnswidth.sxw.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ column B with a width increase of 1.0 , and column E with a width
+ decrease of 1.0, as compared with the original file, reflecting
+ the changes stated above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=30%>
+ <P><B>minicalc/merge/style/rowheight</B></P>
+ </TD>
+ <TD WIDTH=70%>
+ <P><B>Summary</B>: Spreadsheet with 4 columns 3 rows 12 entries -
+ Spreadsheet rowheight variation.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_rowheight.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_rowheight.sxc to c_rowheight.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_rowheight.pdb.&nbsp;</P>
+ <P><BR>Choose Cell Reference &quot;A1&quot; &amp; alter row height
+ to 1.17 by selecting Format -&gt; Row -&gt; Height... &lt;make
+ height change via spin button&gt; -&gt; OK., also decrease &quot;A3&#8221;
+ similarly to have a row height of 0.30.&nbsp;
+ </P>
+ <P>Export the doc back to c_rowheight.pdb.&nbsp; <BR>Merge
+ c_rowheight.pdb to c_rowheight.sxw.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ row &#8220;Row 1&#8221; with a height increase of 1.0 and &quot;Row
+ 3&quot; with a height decrease of 0.41, as compared with the
+ original file, reflecting the changes stated above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=30%>
+ <P><B>minicalc/merge/style/rowstyles</B></P>
+ </TD>
+ <TD WIDTH=70%>
+ <P><B>Summary</B>: Spreadsheet with 5 columns 6 rows 18 entries -
+ Spreadsheet rowstyle variation.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_rowstyle.sxc</B>.
+ </P>
+ <P>Convert c_rowstyles.sxc to c_rowstyles.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_rowstyles.pdb.&nbsp;</P>
+ <P>Choose Cell Reference &quot;B3&quot; and change Heading style
+ to default, by selecting, Format -&gt; Style Catelog -&gt; &lt;choose
+ heading type from listbox&gt;, also choose cellreference &quot;D5&quot;
+ and change Heading style to Heading1, also change &quot;C5&quot;
+ to remove bold, underline &amp; italic.&nbsp;
+ </P>
+ <P><BR>Export the doc back to c_rowstyles.pdb.&nbsp; <BR>Merge
+ c_rowstyles.pdb to c_rowstyles.sxw.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ value's and style types as in original file, except cells &quot;B3,
+ &amp; D5&quot; which should display heading types default &amp;
+ Heading 1 resp. and &quot;C5&quot; which should be plain text,
+ reflecting the changes stated above.</P>
+ </TD>
+ </TR>
+</TABLE>
+<H2>5.2.1.2 MiniCalc Convert Style Tests</H2>
+<TABLE WIDTH=100% BORDER=1 CELLPADDING=2 CELLSPACING=0>
+ <COL WIDTH=77*>
+ <COL WIDTH=179*>
+ <TR VALIGN=TOP>
+ <TD WIDTH=30%>
+ <P><B>minicalc/convert/style/styles</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=70%>
+ <P><B>Summary</B>: Spreadsheet with 3 columns 10 rows 13 entries -
+ Spreadsheet styles test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_styles.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_styles.sxc to c_styles.pdb, in MiniCalc PDB format.&nbsp;
+ <BR>Start POSE with MiniCalc application and import c_styles.pdb.&nbsp;
+ <BR>Export the doc back to c_styles.pdb.&nbsp; <BR>Merge
+ c_styles.pdb to c_styles.sxw.&nbsp;</P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values with style features, .i.e Bold, Italics,
+ .</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=30%>
+ <P><B>minicalc/convert/style/alignment</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=70%>
+ <P><B>Summary</B>: Spreadsheet with 4 columns 8 rows 24 entries -
+ Spreadsheet alignment test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_alignment.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_alignment.sxc to c_alignment.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_alignment.pdb.&nbsp; <BR>Export the doc back to
+ c_alignment.pdb.&nbsp; <BR>Merge c_alignment.pdb to
+ c_alignment.sxw.&nbsp;</P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values with identical alignment to original
+ file.</P>
+ </TD>
+ </TR>
+</TABLE>
+<H2><BR><BR>
+</H2>
+<H2>5.2.2.1 MiniCalc Merge Content Tests</H2>
+<TABLE WIDTH=100% BORDER=1 CELLPADDING=2 CELLSPACING=0>
+ <COL WIDTH=77*>
+ <COL WIDTH=179*>
+ <TR>
+ <TD WIDTH=30% VALIGN=TOP>
+ <P><B>minicalc/merge/content/insertimage</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=70% VALIGN=BOTTOM>
+ <P><B>Summary</B>: Spreadsheet with 6 columns 2 image inserts -
+ Spreadsheet image insert.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_insertimage.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_insertimage.sxc to c_insertimage.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_insertimage.pdb.&nbsp; <BR>Export the doc back to
+ c_insertimage.pdb.&nbsp; <BR>Merge c_insertimage.pdb to
+ c_insertimage.sxw.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ original file with both original images.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD WIDTH=30% VALIGN=TOP>
+ <P><B>minicalc/merge/content/textimage</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=70% VALIGN=BOTTOM>
+ <P><B>Summary</B>: Spreadsheet with 6 columns 2 image inserts -
+ Spreadsheet image text insert.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_textimage.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_textimage.sxc to c_textimage.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_textimage.pdb.&nbsp;</P>
+ <P>Insert text immediately before and directly after the inserted
+ image.</P>
+ <P>Export the doc back to c_textimage.pdb.&nbsp; <BR>Merge
+ c_textimage.pdb to c_textimage.sxw.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ original image surrounded by text .i.e text before &amp; after the
+ insert.</P>
+ </TD>
+ </TR>
+</TABLE>
+<H2>5.2.2.2 MiniCalc Convert Contents Tests</H2>
+<TABLE WIDTH=1025 BORDER=1 CELLPADDING=2 CELLSPACING=0>
+ <COL WIDTH=431>
+ <COL WIDTH=584>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><BR>
+ </P>
+ </TD>
+ <TD WIDTH=584>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/basic</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary: </B>simple spreadsheet - round-trip conversion&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_standard.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_standard.sxc to c_standard.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_standard.pdb. Export the doc back to c_standard.pdb, without
+ making and changes to the spreadsheet.&nbsp; <BR>Merge
+ c_standard.pdb to c_standard.sxc.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant file should be
+ equivalent to the original spreadsheet.&nbsp; <BR>&nbsp;</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/simple01</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: simple spreadsheet - insert text &amp; column
+ of numeric values at beginning of empty sheet.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_standard.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_standard.sxc to c_standard.pdb, in Minicalc PDB
+ format.&nbsp; <BR>Start POSE with Minicalc application and import
+ c_standard.pdb.&nbsp; <BR>Insert the following text &amp; values
+ at the beginning of the the spreadsheet, .i.e in Column 1:&nbsp;
+ </P>
+ <BLOCKQUOTE>Col 1</BLOCKQUOTE>
+ <BLOCKQUOTE>1</BLOCKQUOTE>
+ <BLOCKQUOTE>1</BLOCKQUOTE>
+ <BLOCKQUOTE>1</BLOCKQUOTE>
+ <P>Export the doc back to c_standard.pdb.&nbsp; <BR>Merge
+ c_standard.pdb to c_standard.sxc.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant file should contain:&nbsp;
+ </P>
+ <BLOCKQUOTE STYLE="margin-left: 6.05cm">New column of values as
+ shown above.&nbsp;</BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/simple02</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: simple spreadsheet - append a new column to
+ end&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_standard.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_standard.sxc to c_standard.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_standard.pdb.&nbsp; <BR>Insert the following column immediately
+ after the first:&nbsp;
+ </P>
+ <BLOCKQUOTE>Col 3</BLOCKQUOTE>
+ <BLOCKQUOTE>3</BLOCKQUOTE>
+ <BLOCKQUOTE>3</BLOCKQUOTE>
+ <BLOCKQUOTE>3</BLOCKQUOTE>
+ <P>Export the doc back to c_standard.pdb.&nbsp; <BR>Merge
+ c_standard.pdb to c_standard.sxc.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant file should contain:&nbsp;
+ </P>
+ <P CLASS="text-body-indent">Col 1 Col 3</P>
+ <BLOCKQUOTE>1 3
+ </BLOCKQUOTE>
+ <BLOCKQUOTE>1 3</BLOCKQUOTE>
+ <BLOCKQUOTE>1 3</BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/simple03</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: simple spreadsheet - insert a new column in
+ middle&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_standard.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_standard.sxc to c_standard.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_standard.pdb.&nbsp; <BR>Insert the following column immediately
+ after the first and before the second:&nbsp;
+ </P>
+ <BLOCKQUOTE>Col 2</BLOCKQUOTE>
+ <BLOCKQUOTE>2</BLOCKQUOTE>
+ <BLOCKQUOTE>2</BLOCKQUOTE>
+ <BLOCKQUOTE>2</BLOCKQUOTE>
+ <P>Export the doc back to c_standard.pdb.&nbsp; <BR>Merge
+ c_standard.pdb to c_standard.sxc.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant file should contain:&nbsp;
+ </P>
+ <BLOCKQUOTE>Col 1 Col 2 Col 3</BLOCKQUOTE>
+ <BLOCKQUOTE>1 2 3</BLOCKQUOTE>
+ <BLOCKQUOTE>1 2 3</BLOCKQUOTE>
+ <BLOCKQUOTE>1 2 3</BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/simple04</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: simple spreadsheet - delete text&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_standard.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_standard.sxc to c_standard.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_standard.pdb.&nbsp; <BR>Delete &#8220;Column 3&#8221;, so that
+ it reads:&nbsp;
+ </P>
+ <BLOCKQUOTE>Col 1 Col 2</BLOCKQUOTE>
+ <BLOCKQUOTE>1 2</BLOCKQUOTE>
+ <BLOCKQUOTE>1 2</BLOCKQUOTE>
+ <P>Export the doc back to c_standard.pdb.&nbsp; <BR>Merge
+ c_standard.pdb to c_standard.sxc.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>The resultant file should contain:&nbsp;
+ </P>
+ <BLOCKQUOTE>Col 1 Col 2</BLOCKQUOTE>
+ <BLOCKQUOTE>1 2</BLOCKQUOTE>
+ <BLOCKQUOTE>1 2</BLOCKQUOTE>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/addition</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 4 columns 10 entries -
+ Spreadsheet Simple Addition using various formulae.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_addition.sxc</B>.
+ </P>
+ <P>Convert c_addition.sxc to c_addition.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_addition.pdb.&nbsp; <BR>Change Cell Reference &quot;A1&quot; = 3
+ in formula bar.&nbsp; <BR>Export the doc back to c_addition.pdb.&nbsp;
+ <BR>Merge c_addition.pdb to c_addition.sxc.&nbsp;
+ </P>
+ <P>A1 =3 ; B1 = 3 ; C1 =4 ;D1 =5;&nbsp;
+ </P>
+ <P>Addition types:
+ </P>
+ <P>Cell reference + Integer = A1+2 =5
+ </P>
+ <P>Integer + Decimal = 3+0.1 =3.1
+ </P>
+ <P>Cell Reference + Cell Reference = A1+B1 = 6
+ </P>
+ <P>(Bracketed Cell Reference) + (Integer + Integer) =
+ (A1+B1)+(2+45) = 53
+ </P>
+ <P>Integer + (Integer) + (Integer+Integer) = 2+(0)+(3+0) = 5
+ </P>
+ <P>(SUM(Cell Ref;Cell Ref) +SUM(Cell Ref;Cell Ref) =
+ (SUM(A1;B1)+SUM(B1;C1) = 13
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;All spreadsheet entered
+ values &amp; the standard formula SUM of each cell should be
+ displayed as above, formulae as stated above should be visible in
+ the Formula Bar.&nbsp;</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/backwardrange</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 2 columns 7 entries -
+ Spreadsheet backwardranging using various formulae.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_backwardrange.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_alignment.sxc to c_alignment.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_alignment.pdb.&nbsp; <BR>Change Cell Reference &quot;B2&quot; =
+ AVERAGE(2;5;5) in formula bar.&nbsp; <BR>Export the doc back to
+ c_alignment.pdb.&nbsp; <BR>Merge c_alignment.pdb to
+ c_alignment.sxc.&nbsp;
+ </P>
+ <P>Logical Funtion test B4:
+ </P>
+ <P>IF(Logical Test; Then Value;Else Value)
+ </P>
+ <P>.e.g. IF(23;45.45;54.54) = 45.45&nbsp;
+ </P>
+ <P>read as if logical test TRUE then place THEN VALUE in cell else
+ place ELSE VALUE. <BR>&nbsp; <BR>&nbsp; <BR>&nbsp;
+ </P>
+ <P>Statistical Functional tests B2 , B3 resp.:
+ </P>
+ <P>AVERAGE(2;5;5) - Returns sum of arguments divided by number of
+ arguments =4 .
+ </P>
+ <P>MAX(10;3;3) - Returns the maximum value in a list of arguments
+ =10. <BR>&nbsp; <BR>&nbsp; <BR>&nbsp;
+ </P>
+ <P>Negative addition test B1:
+ </P>
+ <P>=B2-B3 = 4 - 10 = -6 <BR>&nbsp; <BR>&nbsp; <BR>&nbsp;
+ </P>
+ <P>Range Addition tests A1, A5, B5:
+ </P>
+ <P>SUM(B2;B4) = B2 + B3 + B4 = 4 + 10 + 45.45 = 59.45.
+ </P>
+ <P>SUM(A1:B2) -B4 = (59.45 + (-6) +4) - 45.45 = 12</P>
+ <P>SUM(A1;B1)-A2 = (59.45 + (-6)) - 0 = 53.45
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;All spreadsheet entered
+ values &amp; the standard formula SUM of each cell should be
+ displayed on sheet as detailed above, formulae as stated above
+ should be visible in the Formula Bar.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/boolean</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 column 2 entries -
+ Spreadsheet boolean entry.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_boolean.sxc</B>.
+ </P>
+ <P>Convert c_boolean.sxc to c_boolean.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_boolean.pdb.&nbsp; <BR>Change Cell Reference &quot;A2&quot; =
+ TRUE in formula bar.&nbsp; <BR>Export the doc back to
+ c_boolean.pdb.&nbsp; <BR>Merge c_boolean.pdb to c_boolean.sxc.&nbsp;
+ </P>
+ <P>Logical Funtion test : cells A1, A2:
+ </P>
+ <P>A1=TRUE
+ </P>
+ <P>A2=TRUE
+ </P>
+ <P>Returns the logical values TRUE to the cells resp.
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;The logical entry of each
+ cell should be displayed on the sheet as stated above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/cellcurrencyvalue</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 2 columns 10 entries -
+ Spreadsheet Currency number Format conversion test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_cellcurrencyvalue.sxc</B>.
+ </P>
+ <P>Convert c_cellcurrencyvalue.sxc to c_cellcurrencyvalue.pdb, in
+ MiniCalc PDB format.&nbsp; <BR>Start POSE with MiniCalc
+ application and import c_cellcurrencyvalue.pdb.&nbsp; <BR>Export
+ the doc back to c_cellcurrencyvalue.pdb.&nbsp; <BR>Merge
+ c_cellcurrencyvalue.pdb to c_cellcurrencyvalue.sxc.&nbsp;
+ </P>
+ <P>Display Sheet : 12 DM.
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet entered values or
+ the sum of each cell should be displayed with specified Currency
+ symbol, formulae should be visible in the Formula Bar but not the
+ currency symbol.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/cellcurrencychange</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 2 columns 10 entries -
+ Spreadsheet Currency number Format modification test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_cellcurrencychange.sxc</B>.
+ </P>
+ <P>Convert c_cellcurrencychange.sxc to c_cellcurrencychange.pdb,
+ in MiniCalc PDB format.&nbsp; <BR>Start POSE with MiniCalc
+ application and import c_cellcurrencychange.pdb.&nbsp; <BR>Change
+ Cell Reference &quot;A1&quot; to have currency format in Danish
+ Marks (DM).&nbsp; <BR>Export the doc back to
+ c_cellcurrencychange.pdb.&nbsp; <BR>Merge c_cellcurrencychange.pdb
+ to c_cellcurrencychange.sxc.&nbsp;
+ </P>
+ <P>Select cell A1 = 12 ; then tap pen icon option on palm, choose
+ Currency from palm listbox, tap on the down arrow to the right of
+ the flashing cursor, tap on the intended currency type .e.g DM
+ (Danish Mark) and tap apply &amp; OK.
+ </P>
+ <P>Display Sheet : 12 DM.
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet entered values or
+ the sum of each cell should be displayed with specified Currency
+ symbol, formulae should be visible in the Formula Bar but not the
+ currency symbol.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/cellfloatvalue</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 2 columns 6 entries -
+ Spreadsheet float values.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_cellfloatvalue.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_cellfloatvalue.sxc to c_cellfloatvalue.pdb, in
+ MiniCalc PDB format.&nbsp; <BR>Start POSE with MiniCalc
+ application and import c_cellfloatvalue.pdb.&nbsp; <BR>Change Cell
+ Reference &quot;A1&quot; = 11 &amp; &quot;A2&quot; = 2.38 &amp; B3
+ 100.02450 in formula bar.&nbsp; <BR>Export the doc back to
+ c_cellfloatvalue.pdb.&nbsp; <BR>Merge c_cellfloatvalue.pdb to
+ c_cellfloatvalue.sxc.&nbsp;
+ </P>
+ <P>The original sheet has selected Format -&gt; Cells... -&gt;
+ Numbers Tab -&gt; &amp; Numbers from the list box, choosen
+ -1234.12, tho set the Format Code to 0.00 preventing the sheet
+ display rounding values to two decimal places. It also has
+ fraction display enabled in certain cells.</P>
+ <P>Formula Bar : Display Sheet:
+ </P>
+ <P>A1 = 11 -&gt; 11.00
+ </P>
+ <P>A2 = 2.38 -&gt; 2 19/50
+ </P>
+ <P>A3 = 0.45 -&gt; 0.45
+ </P>
+ <P>B2 = 0.23 -&gt; 2/9
+ </P>
+ <P>B3 = 100.02450 -&gt; 100.02
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet fractional &amp;
+ decimal values should be displayed with specified precision as
+ stated above, formulae should be visible in the Formula Bar.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/cellpercentvalue</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 2 columns 3 entries -
+ Spreadsheet percentage value precision.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_cellpercentvalue.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_cellpercentvalue.sxc to c_cellpercentvalue.pdb, in
+ MiniCalc PDB format.&nbsp; <BR>Start POSE with MiniCalc
+ application and import c_cellpercentvalue.pdb.&nbsp; <BR>Change
+ Cell Reference &quot;A1&quot; = 120% &amp; &quot;B1&quot; = 10% in
+ formula bar.&nbsp; <BR>Export the doc back to
+ c_cellpercentvalue.pdb.&nbsp; <BR>Merge c_cellpercentvalue.pdb to
+ c_cellpercentvalue.sxc.&nbsp;
+ </P>
+ <P>For cell A1 enter 120% in the Formula Bar. Sheet Display =
+ 120.00%&nbsp;
+ </P>
+ <P>For cell B1 enter 10% in the Formula Bar. Sheet Display = 10%
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet percentage values
+ should be displayed with specified precision as stated above,
+ formulae should be visible in the Formula Bar.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/cellstringvalue</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 4 columns 11 entries -
+ Spreadsheet String values.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_cellstringvalue.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_cellstringvalue.sxc to c_cellstringvalue.pdb, in
+ MiniCalc PDB format.&nbsp; <BR>Start POSE with MiniCalc
+ application and import c_cellstringvalue.pdb.&nbsp; <BR>Change
+ Cell Reference &quot;C2&quot; = Testing &amp; DELETE contents of
+ &quot;D2&quot; &amp; insert a ';' in &quot;B3&quot; in formula
+ bar.&nbsp; <BR>Export the doc back to c_cellstringvalue.pdb.&nbsp;
+ <BR>Merge c_cellstringvalue.pdb to c_cellstringvalue.sxc.&nbsp;
+ </P>
+ <P>A1 = This A2 = With A3 = For
+ </P>
+ <P>B1 = Cell B2 = Strings B3 = ;
+ </P>
+ <P>C1 = Is C2 = Testing C3 = string values
+ </P>
+ <P>D1 = Filled D2 = &quot;blank&quot;&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet strings values
+ should be displayed as stated above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/character</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 4 columns 23 entries -
+ Spreadsheet character values.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_character.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_character.sxc to c_character.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_character.pdb.&nbsp; <BR>Change Cell Reference &quot;C7&quot; =
+ -??%, .i.e appending a % sign.&nbsp; <BR>Export the doc back to
+ c_character.pdb.&nbsp; <BR>Merge c_character.pdb to
+ c_character.sxc.&nbsp;
+ </P>
+ <P>C7 = -??%&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet character values
+ should be displayed as in original file including minor change
+ stated above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/cyclic</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 2 columns 8 entries -
+ Spreadsheet error messages.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_cyclic.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_cyclic.sxc to c_cyclic.pdb, in MiniCalc PDB format.&nbsp;
+ <BR>Start POSE with MiniCalc application and import c_cyclic.pdb.&nbsp;
+ <BR>Change Cell Reference &quot;A4&quot; &amp; &quot;A5&quot; = 0
+ &amp; &quot;B4&quot; = A1/A4, &quot;B5&quot;= A4/A5 in formula
+ bar.&nbsp; <BR>Export the doc back to c_cyclic.pdb.&nbsp; <BR>Merge
+ c_cyclic.pdb to c_cyclic.sxc.&nbsp;
+ </P>
+ <P>Changes should generate 2 extra errors shown below.
+ </P>
+ <P>B4 = Err.503</P>
+ <P>B5 = #VALUE!
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values including 2 extra errors generated by
+ the changes detailed above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/dividefloating</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 2 columns 7 entries -
+ Spreadsheet dividing floating points.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_dividefloating.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_dividefloating.sxc to c_dividefloating.pdb, in
+ MiniCalc PDB format.&nbsp; <BR>Start POSE with MiniCalc
+ application and import c_dividefloating.pdb.&nbsp; <BR>Change Cell
+ Reference &quot;A4&quot; = -(12.2)/(5-1) &amp; &quot;B2&quot; = to
+ be positive, in formula bar.&nbsp; <BR>Export the doc back to
+ c_dividefloating.pdb.&nbsp; <BR>Merge c_dividefloating.pdb to
+ c_dividefloating.sxc.&nbsp;
+ </P>
+ <P>B2 = 03.050000&nbsp;
+ </P>
+ <P>A4 = -03.05</P>
+ <P>Spreadsheet setting : Format -&gt; Cells... -&gt; Decimal
+ Places=6, Negative numbers red= TRUE, Leading zero's =2 -&gt; OK.
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values and newly entered floating point
+ division with specified precision &amp; colour, as stated above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/forwardrange</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 2 columns 4 rows 5 entries -
+ Spreadsheet tests forwardranging.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_forwardrange.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_forwardrange.sxc to c_forwardrange.pdb, in MiniCalc
+ PDB format.&nbsp; <BR>Start POSE with MiniCalc application and
+ import c_forwardrange.pdb.&nbsp; <BR>Change Cell Reference &quot;B4&quot;
+ = IF(0;45.45;54.54), in formula bar.&nbsp; <BR>Export the doc back
+ to c_forwardrange.pdb.&nbsp; <BR>Merge c_forwardrange.pdb to
+ c_forwardrange.sxc.&nbsp;
+ </P>
+ <P>Changes IF statement to False so ELSE VALUE now valid.
+ </P>
+ <P>B4 = 54.54
+ </P>
+ <P>A1 = SUM(B2;B4) = B2+B3+B4 =56.23 + 560 + 54.54 = 670.77
+ </P>
+ <P><B>Expected result:</B> <BR>Spreadsheet values &amp; the
+ modified standard formula SUM'sl should be displayed in each cell
+ on sheet to reflect the changes as stated above, formulae should
+ be visible in the Formula Bar.&nbsp;</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/hiddenrow</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 5 columns 2 rows 9 entries -
+ Spreadsheet tests hidden row.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_hiddenrow.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_hiddenrow.sxc to c_hiddenrow.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_hiddenrow.pdb.&nbsp; <BR>Select Format -&gt; Row -&gt; Show.&nbsp;
+ <BR>Export the doc back to c_hiddenrow.pdb.&nbsp; <BR>Merge
+ c_hiddenrow.pdb to c_hiddenrow.sxc.&nbsp;
+ </P>
+ <P>A previously hidden row 2 appears.
+ </P>
+ <P><B>Expected result:</B> <BR>Spreadsheet values &amp; standard
+ formula SUM's should be displayed in each cell on sheet as before
+ including a new row #2 which reflects the change stated above.&nbsp;</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/invalidcellref</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 3 columns 3 rows 8 entries -
+ Spreadsheet invalid cell references.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_invalidcellref.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_invalidcellref.sxc to c_invalidcellref.pdb, in
+ MiniCalc PDB format.&nbsp; <BR>Start POSE with MiniCalc
+ application and import c_invalidcellref.pdb.&nbsp; <BR>Change Cell
+ Reference &quot;A3&quot; = MAX(1;2;3) , &quot;C2&quot; = &quot;blank&quot;,
+ &quot;C3&quot; = a0, in formula bar.&nbsp; <BR>Export the doc back
+ to c_invalidcellref.pdb.&nbsp; <BR>Merge c_invalidcellref.pdb to
+ c_invalidcellref.sxc.&nbsp;
+ </P>
+ <P>Changes should generate 2 extra errors shown below.
+ </P>
+ <P>A3 = 3&nbsp;
+ </P>
+ <P>C2 = &quot;blank&quot;
+ </P>
+ <P>C3 = #NAME?
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, excpet &quot;C3&quot; which holds new
+ invalid input warning generated by the change detailed above,
+ sheet should also show removal of 2 types of invalid input with
+ valid input replacements &quot;A3&quot; &amp; &quot;C2&quot;.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/largerange</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 3 columns 3 rows 8 entries -
+ Spreadsheet large range test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_largerange.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_largerange.sxc to c_largerange.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_largerange.pdb.&nbsp; <BR>Change Cell Reference &quot;B3&quot; =
+ SUM(E7:G10), in formula bar.&nbsp; <BR>Export the doc back to
+ c_largerange.pdb.&nbsp; <BR>Merge c_largerange.pdb to
+ c_largerange.sxc.&nbsp;
+ </P>
+ <P>Increases the range by an extra row.
+ </P>
+ <P>B3 = SUM(E7:G10) = E7+F7+G7+E8+F8+G8+E9+F9+G9+E10+F10+G10 =
+ </P>
+ <P>= 4+4+4+2+2+4+1+4+4+1+1+12 = 31 +12 = 43
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;B3&quot; which holds new
+ larger range standard formula SUM generated by the change detailed
+ above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/listrange</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 5 columns 4 rows 20 entries -
+ Spreadsheet listrange test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_listrange.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_listrange.sxc to c_listrange.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_listrange.pdb.&nbsp; <BR>Change Cell Reference &quot;D3&quot; =
+ 24, in formula bar.&nbsp; <BR>Export the doc back to
+ c_listrange.pdb.&nbsp; <BR>Merge c_listrange.pdb to
+ c_listrange.sxc.&nbsp;
+ </P>
+ <P>D3 = 24
+ </P>
+ <P>A4 = SUM(A1:A3) = 256.1
+ </P>
+ <P>B4 = AVERAGE(A1:A3) = 17.07
+ </P>
+ <P>C4 = AVERAGE(A4:B4) = AVERAGE( 256.1+17.07) = 136.59
+ </P>
+ <P>D4 = AVERAGE(D1;D2;D3) = AVERAGE( 13.1+18+24) = 18.37
+ </P>
+ <P>E5 = SUM(A4:B4:C4:D4) = (256.1+17.07+136.59+18.37) = 428.13<BR>&nbsp;
+ <BR>&nbsp; <BR>&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except cells &quot;A4-E4&quot; which
+ hold the modified standard formula SUM &amp; AVERAGE value's
+ generated by the change in D3 detailed above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/mathematical</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 5 columns 3 rows 15 entries -
+ Spreadsheet stanadard math functs test in (Rad).&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_mathematical.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_mathematical.sxc to c_mathematical.pdb, in MiniCalc
+ PDB format.&nbsp; <BR>Start POSE with MiniCalc application and
+ import c_mathematical.pdb.&nbsp; <BR>Change Cell Reference &quot;B1&quot;
+ = SIN(3.14/2), &quot;B2&quot; =COS(0), &quot;C3&quot;= TAN(1.57/2)
+ in formula bar.&nbsp; <BR>Export the doc back to
+ c_mathematical.pdb.&nbsp; <BR>Merge c_mathematical.pdb to
+ c_mathematical.sxc.&nbsp;
+ </P>
+ <P>B1 = 1</P>
+ <P>B2 = 1
+ </P>
+ <P>C3 =1
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values except cells &quot;B1,B2,C3&quot; which
+ hold modified sin,cos &amp; tan value's generated by the changes
+ stated above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/protection</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 column 3 rows 3 entries -
+ Spreadsheet protection test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_protection.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_protection.sxc to c_protection.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_protection.pdb.&nbsp; <BR>Attempt to Change Cell Reference &quot;A1&quot;
+ either directly or in formula bar from the value 12 to 1.&nbsp;
+ <BR>Export the doc back to c_protection.pdb.&nbsp; <BR>Merge
+ c_protection.pdb to c_protection.sxc.&nbsp;
+ </P>
+ <P>User should be unable to change cell contents, popup error
+ message &quot;Protected cells can not be modified&quot; should
+ appear.
+ </P>
+ <P>This is because the Tools -&gt; Protect Document -&gt; Sheet
+ option has been enabled with a password and therefore all cells on
+ sheet are write protected.&nbsp;
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/renamedsheet</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 3 sheets 0 entries -
+ Spreadsheet rename test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_renamedsheet.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_renamedsheet.sxc to c_renamedsheet.pdb, in MiniCalc
+ PDB format.&nbsp; <BR>Start POSE with MiniCalc application and
+ import c_renamedsheet.pdb.&nbsp; <BR>Change sheet named &quot;testplan&quot;
+ to &quot;renamed&quot;.&nbsp; <BR>Export the doc back to
+ c_renamedsheet.pdb.&nbsp; <BR>Merge c_renamedsheet.pdb to
+ c_renamedsheet.sxc.&nbsp;
+ </P>
+ <P>Click on &quot;testplan&quot; sheet tab, and using 3<SUP>rd</SUP>
+ mouse button, choose Rename..., from popup menu, enter new sheet
+ name &amp; OK.
+ </P>
+ <P>OR choose Format -&gt; Sheet -&gt; Rename... enter new sheet
+ name &amp; OK.
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheets &amp; names, with the exception of the
+ &quot;testplan&quot; sheet which should now be labelled &quot;renamed&quot;
+ .</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/sheetreference</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 3 sheets 4 columns 4 rows 11
+ entries - Spreadsheet sheetreference test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_sheetreference.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_sheetreference.sxc to c_sheetreference.pdb, in
+ MiniCalc PDB format.&nbsp; <BR>Start POSE with MiniCalc
+ application and import c_sheetreference.pdb.&nbsp; <BR>Change Cell
+ Reference &quot;A3&quot; = Sheet3.B1.&nbsp; <BR>Export the doc
+ back to c_sheetrefernce.pdb.&nbsp; <BR>Merge c_sheetreference.pdb
+ to c_sheetreference.sxc.&nbsp;
+ </P>
+ <P>A3 = 3.
+ </P>
+ <P>B4 =26.</P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original value's &amp; formulae as in original file, except
+ cells &quot;A3&quot;&amp; &quot;A4&quot; which should display a
+ different sheet reference value and the modified sheet reference
+ formula, reflecting the changes stated above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/smallrange</B> <BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 4 columns 3 rows 10 entries -
+ Spreadsheet small range test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_smallrange.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_smallrange.sxc to c_smallrange.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_smallrange.pdb.&nbsp; <BR>Change Cell Reference &quot;B3&quot; =
+ AVERAGE(A1:B2), in formula bar.&nbsp; <BR>Export the doc back to
+ c_smallrange.pdb.&nbsp; <BR>Merge c_smallrange.pdb to
+ c_smallrange.sxc.&nbsp;
+ </P>
+ <P>Decrease the range by 1 row.
+ </P>
+ <P>B3 = AVERAGE(A1:B2) = (1+2+3+3)/4 = 2.25
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;A3&quot; which now holds
+ average value of new smaller range generated by the change
+ detailed above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/cancel</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 columns 4 rows 4entries -
+ Spreadsheet palm confirm &amp;cancel test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_cancel.sxc</B>.&nbsp;
+ </P>
+ <P>Convert c_cancel.sxc to c_cancel.pdb, in MiniCalc PDB format.&nbsp;
+ <BR>Start POSE with MiniCalc application and import c_cancel.pdb.&nbsp;
+ <BR>Select with mouse Cell Reference &quot;A2&quot; on dotted line
+ on palm type 14, tap &#8220;TICK&#8221; option (leftmost option on
+ palm) to confirm, repeat this step this time Changing Cell
+ Reference &#8220;A2&#8221; = 1, except this time tap the &#8220;X&#8221;
+ option to cancel.&nbsp; <BR>Export the doc back to c_cancel.pdb.&nbsp;
+ <BR>Merge c_cancel.pdb to c_cancel.sxc.&nbsp;
+ </P>
+ <P>A2 = 14.
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;A2&quot; which now holds
+ the value 14 generated by the change detailed above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/cut&amp;paste</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 columns 4 rows 4entries -
+ Spreadsheet palm cut&amp;paste test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_cut&amp;paste.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_cut&amp;paste.sxc to c_cut&amp;paste.pdb, in MiniCalc
+ PDB format.&nbsp; <BR>Start POSE with MiniCalc application and
+ import c_cut&amp;paste.pdb.&nbsp; <BR>Choose Cell Reference &quot;A2&quot;
+ with mouse, tap cut option on palm, choose Cell Reference &#8220;A5&#8221;
+ and tap paste option.&nbsp; <BR>Export the doc back to
+ c_cut&amp;paste.pdb.&nbsp; <BR>Merge c_cut&amp;paste.pdb to
+ c_cut&amp;paste.sxc.&nbsp;
+ </P>
+ <P>A2 = &#8220;blank&#8221;.</P>
+ <P>A5 = 14.
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;A2&quot; &amp; &#8220;A5&#8221;
+ which now holds the values blank &amp; 14 resp. generated by the
+ changes detailed above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/copy&amp;paste</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 columns 4 rows 4entries -
+ Spreadsheet palm copy&amp;paste test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_copy&amp;paste.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_copy&amp;paste.sxc to c_copy&amp;paste.pdb, in
+ MiniCalc PDB format.&nbsp; <BR>Start POSE with MiniCalc
+ application and import c_copy&amp;paste.pdb.&nbsp; <BR>Choose Cell
+ Reference &quot;A5&quot; with mouse, tap copy option on palm,
+ choose Cell Reference &#8220;A2&#8221; and tap paste option.&nbsp;
+ <BR>Export the doc back to c_copy&amp;paste.pdb.&nbsp; <BR>Merge
+ c_copy&amp;paste.pdb to c_copy&amp;paste.sxc.&nbsp;
+ </P>
+ <P>A2 = 14.</P>
+ <P>A5 = 14.
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;A2&quot; which now holds
+ the value 14 generated by the change detailed above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/textentry</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 columns 4 rows 4entries -
+ Spreadsheet palm text entry test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_textentry.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_textentry.sxc to c_textentry.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_textentry.pdb.&nbsp; <BR>Choose Cell Reference &quot;A1&quot;
+ with mouse, tap textentry option on palm, type the following text
+ string into the popup text box &#8220;This is a MiniCalc text
+ entry test.&#8221;.<BR>Export the doc back to c_textentry.pdb.&nbsp;
+ <BR>Merge c_textentry.pdb to c_textentry.sxc.&nbsp;
+ </P>
+ <P>A1 = &#8220;This is a MiniCalc text entry test.&#8221;</P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;A1&quot; which now holds
+ the string &#8220;This is a MiniCalc text entry test&#8221;,
+ generated by the change detailed above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/function</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 columns 4 rows 4entries -
+ Spreadsheet palm function test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_function.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_function.sxc to c_function.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_function.pdb.&nbsp; <BR>Choose Cell Reference &quot;A1&quot;
+ with mouse, tap standard function option on palm, choose the
+ function AVERAGE from the popup list by tapping, type the values
+ &#8220;1;2;3&#8221; between the function brackets on the dotted
+ line were the cursor is placed and press return.<BR>Export the doc
+ back to c_function.pdb.&nbsp; <BR>Merge c_function.pdb to
+ c_function.sxc.&nbsp;
+ </P>
+ <P>A1 = AVERAGE(1;2;3) = 2.</P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;A1&quot; which now holds
+ the result of the average function given args (1;2;3) = 2
+ generated by the change detailed above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/numberpad</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 columns 4 rows 4entries -
+ Spreadsheet palm numberpad test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_numberpad.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_numberpad.sxc to c_numberpad.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_numberpad.pdb.&nbsp; <BR>Choose Cell Reference &quot;A1&quot;
+ with mouse, tap the &#8220;123&#8221; option on the palm, tap
+ &#8220;-&gt;&#8221;, &#8220;=&#8221;, &#8220;5-0+2&#8221; from
+ popup numberpad, and press return.<BR>Export the doc back to
+ c_numberpad.pdb.&nbsp; <BR>Merge c_numberpad.pdb to
+ c_numberpad.sxc.&nbsp;
+ </P>
+ <P>A1 = 5-0+2 = 7.</P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;A1&quot; which now holds
+ the result of the formula 5-0+2, generated by the change detailed
+ above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/math_funcs</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 columns 4 rows 4entries -
+ Spreadsheet palm numberpad test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_math_funcs.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_math_funcs.sxc to c_math_funcs.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_math_funcs.pdb.&nbsp; <BR>Choose the Cell References below with
+ mouse,and for each type on the palm the corresponding entry before
+ pressing return.</P>
+ <P>A1 = <BR>Export the doc back to c_math_funcs.pdb.&nbsp; <BR>Merge
+ c_math_funcs.pdb to c_math_funcs.sxc.&nbsp;
+ </P>
+ <P>A1 = .</P>
+ <P>A2 =</P>
+ <P>A3 =
+ </P>
+ <P>A4 =</P>
+ <P><BR><BR>
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;A1&quot; which now holds
+ the result of the formula 5-0+2, generated by the change detailed
+ above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/insertrow</B><BR>&nbsp;</P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 columns 4 rows 4entries -
+ Spreadsheet palm insert row test.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_insertrow.sxc</B>.&nbsp;
+
+ </P>
+ <P>Convert c_insertrow.sxc to c_insertrow.pdb, in MiniCalc PDB
+ format.&nbsp; <BR>Start POSE with MiniCalc application and import
+ c_insertrow.pdb.&nbsp;</P>
+ <P><BR>Select Cell Reference &quot;A3&quot; with mouse, tap the
+ side bar of the spreadsheet at position 3 on the palm, tap
+ &#8220;Insert&#8221; from popup menu, and press return. Select the
+ newly inserted Cell Reference with mouse and enter the number &#8220;2&#8221;,
+ press return.<BR><BR><BR>
+ </P>
+ <P>Export the doc back to c_insertrow.pdb.&nbsp; <BR>Merge
+ c_insertrow.pdb to c_insertrow.sxc.&nbsp;
+ </P>
+ <P>A1 = .</P>
+ <P><B>Expected result:</B> <BR>&nbsp;Spreadsheet should display
+ all original sheet values, except &quot;A1&quot; which now holds
+ the result of the formula 5-0+2, generated by the change detailed
+ above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><B>minicalc/convert/content/multi_boolean</B></P>
+ </TD>
+ <TD WIDTH=584>
+ <P><B>Summary</B>: Spreadsheet with 1 column 8 entries -
+ Spreadsheet multi boolean entry.&nbsp;
+ </P>
+ <P><B>Procedure:</B> <BR>Use test file <B>c_multi_boolean.sxc</B>.
+
+ </P>
+ <P>Convert c_multi_boolean.sxc to c_multi_boolean.pdb, in MiniCalc
+ PDB format.&nbsp; <BR>Start POSE with MiniCalc application and
+ import c_multi_boolean.pdb.&nbsp; <BR>Export the doc back to
+ c_multi_boolean.pdb.&nbsp; <BR>Merge c_multi_boolean.pdb to
+ c_multi_boolean.sxc.&nbsp;
+ </P>
+ <P>Logical Funtion test : cells A1-A4:
+ </P>
+ <P>A1-A4 = FALSE
+ </P>
+ <P>A5-A8 = TRUE
+ </P>
+ <P>Returns 4 logical FALSE &amp; TRUE values resp..
+ </P>
+ <P><B>Expected result:</B> <BR>&nbsp;The logical entry of each
+ cell should be displayed on the sheet as stated above.</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=431>
+ <P><BR>
+ </P>
+ </TD>
+ <TD WIDTH=584>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+</TABLE>
+<P><BR>&nbsp; <BR>&nbsp; <BR>&nbsp;
+</P>
+</BODY>
+</HTML> \ No newline at end of file