Back in 2006 I initiated a project to develop a plugin for the DITA Open Toolkit that allowed users to publish their content into Adobe FrameMaker. This project was co-developed by Paul Prescod, formerly from BlastRadius, and Deborah Pickett from MoldFlow. Deborah is still active in the DITA Open Toolkit development community.
The adapter was developed before Adobe or anyone else had a DITA publishing solution within FrameMaker. It was developed as a solution for publishing only and as such did not create valid DITA content if saved. Instead, the adapter created XML through the DITA Open Toolkit that was "FrameMaker-friendly" – that is, it made the XML more suitable for importing into FrameMaker in order to support the specific features of FrameMaker (like conditional text, cross references, markers etc.).
At the time of developing the adapter, i was seeing a lot of companies migrating to DITA and needing to also migrate to another authoring tool. Having invested, however, in licenses for FrameMaker, I saw a great opportunity to allow these user to keep that investment and publish using their existing FrameMaker templates.
The basic operation of the Adapter was to use the DITA Open Toolkit's PDF output to create a single XML file (topic-merged) and to then apply the adapter's transformations to prepare it for importing into FrameMaker.
One of the key aims of the adapter was that it could publish any DITA content, regardless of its specialisation – I definitely didn't want to have to build a solution that meant maintaining an EDD for all possible current and future element types!! So, to supporting all specializations was achieved by generalising all elements back to their base form and to redefine the class attributes to a simplified form that a FrameMaker EDD can handle via its EDD context rules.
So, the XML imported into FrameMaker would change a <b/> tag into <ph class="ph-b"/>. This gave the ability to have a general rule in the EDD for the <ph> element and a more specific context rule based on the class attribute. This is similar to the DITA Open Toolkit as this approach still allowed the EDD to fall back to a default context rule when the EDD didn't have a more specific rule defined.
The FrameMaker Adapter also provided parameters that allowed for a number of user-defined options. These included:
- presenting definition lists as paragraphs or tables,
- putting titles before or after a table
- inserting a chapter heading element to allow for paragraph numbering
- inserting <codeblock> into a table
- specifying the default column width in FrameMaker
- opening a map as a single file, book with single file, or book with separate files.
Some of the other things that the adapter also handled were:
- converting some attributes to conditional text (only two attributes were supported)
- removing whitespace in the XML (seeing as FrameMaker seems to like it so much)
The adapter was used to publish the first edition of "Introduction to DITA" book. This exposed a few issues that were not implemented in the adapter. These were:
- graphics did not import at the correct size
- tables needed to be resized
- table of content and indexes were not created automatically
The resizing problems were partly resolved by defining a parameter in the adapter for the default width of the text column in the FrameMaker template. This, however, was not always enough. I therefore made use of Mekon's JavaScript API for FrameMaker called FrameAC. This solved a lot of issues that would otherwise have been tedious to fix.