I used to think of myself as a decent coder, but this XFDL project is a monster. Particularly with the parsing schemes. Let alone the May 15th suspense on the project!! Oh well, if it doesn’t get done, I’m still working on it… So I broke apart the XML and just to give a taste of the parsing for this, here’s my notes:
Mind you, I’m skipping the globals but here what needs to be parsed from there:
- Title
- Version
- Fontinfo
- Bgcolor
- Print Settings
- Bindings
This first block is the “field” form. This is the main part to parse because this is where all values except checks and signatures will go.
<field sid="TO"> --> sid == div id
<itemlocation>
<ae>
<ae>absolute</ae> -- style='position:absolute'
<ae>y</ae>
<ae>x</ae>
</ae>
<ae>
<ae>extent</ae> -- dimensions
<ae>l</ae>
<ae>w</ae>
</ae>
<value>THIS IS WHAT NEEDS EDITTING!</value> - input, no border
<broderwidth>0</broderwidth> --> style
<fontinfo> --> style
<ae>type</ae>
<ae>size</ae>
<ae>attribute</ae>
</fontinfo>
<justify>center</justify> --> style
<scrollhoriz>wordwrap</scrollhoriz>
<scrollvert>fixed</scrollvert>
<next>TO</next> -> form taborder
<previous>DATE_A</previous> -> form taborder
<acclabel>lorum ipsum</acclabel>
<format>
<ae>string</ae> --> set form input type
<ae>optional</ae> --> validation check
<length>
<ae>0</ae> vert
<ae>18</ae> horiz
</length>
</format>
</itemlocation>
</field>
Next part, check boxes. Nothing too scary here. Much the same as above.
<check sid=""> same
<itemlocation></itemlocation> same
<value>on|off</value>
<fontinfo></fontinfo> same
<next></next> same
<previous></previous> same
<acclabel></acclabel> same
</check>
Here we get complicated. Nothing bad about the labels, except there form uses labels for definitions at the end and you’ll see it later where it is reused for a new purpose. This could pose a good challenge!
<label sid=""> same
<itemlocation></itemlocation> same
<value>TEXT</value>
<linespacing>1</linespacing> OPITONAL
<fontinfo></fontinfo> same
<fontcolor>black</fontcolor>
<format></format> same
</label>
Lines, not too bad… will just be a simple parsing the xml to putting them on the page.
<line sid=""> same
<itemlocation></itemlocation>same
</line>
Buttons! These would be easy but they will associate with signatures.
<button sid=""> same
<itemlocation></itemlocation> same
<value compute="">FROM CERT</value>
<type>signature|</type>
<vfd_signmode>custom</vfd_signmode>
<printvisible compute="">on|off</printvisible>
<signformat>???WTF???</signformat>
<signature>FOR BINDINGS</signature>
<signer>FROM CERT</signer>
<custom:onClick>function</custom:onClick>
<signoptions>
<ae>omit</ae>
<ae>triggeritem</ae>
<ae>coordinates</ae>
<ae>ufv_settings</ae>
</signoptions>
<vfd_group>??</vfd_group>
<format></format> same
<previous></previous> same
<next></next> same
<image>FROM CERT?</image>
<signatureimage>FROM CERT?</signatureimage>
<signitemrefs>
<ae>LOCK BINDS</ae> -- USE FOR VALIDATION
</signitemrefs>
</button>
Not even touching signatures until I get the parsing scheme in place!
<signature>
WILL DO LATER
</signature>
Data will be easy enough, just needs to be decoded and displayed. Whew… may need to save the files to the server to display but I think HTML can handle an image from data.
<data sid=""> relates to signatures & images
<filename></filename> -- image (optional)
<mimedata encoding="base64-gzip"></mimedata>
</data>
Do I really need the toolbar if I’m not using it’s functions?
<toolbar sid="TOOLBAR">
<bgcolor>
<ae>gray60</ae>
</bgcolor>
</toolbar>
Is IBM so dense they can’t find a new name for the toolbar tags instead of reusing label?
<label sid="TOP">
<itemlocation>
<ae>
<ae>within</ae>
<ae>TOOLBAR</ae>
</ae>
<ae>
<ae>absolute</ae>
<ae>0</ae>
<ae>0</ae>
</ae>
</itemlocation>
<image>PAGE1.ArmyLogoTop</image>
<imagemode>clip</imagemode> -- style
<active>off</active>
</label>
I won’t complain about this one! Seems pretty simple, just like lines…
<spacer sid=""> same
<itemlocation></itemlocation> same
</spacer>
So keep watching the blog… I’ll post more when I figure out how to handle all this data. And this all needs to be cycled per page to output to the browser… yuck.