Solutions approach
Before writing the code, let us step back a bit to enumerate the details of the requirements. The library which we are planning to write should have the following:
- Support for various output formats like HTML, PDF, and so on
- An object model for storing the contents of the table
- A unified programming model and API for developers
- Separate content and it's processing
- The ability to write new pluggable output processors (drivers)
We will start by creating a hierarchy of elements for storing document contents. A simple hierarchy which has been conceived is as follows:
We will encode our content in a tree-structured document model. For the sake of simplicity, we have reduced the number of document elements. In an industrial strength implementation of this library, we will have many more elements. We can create tables within tables in this scheme, as we allow nested tables. Before we get into the implementation of the aforementioned hierarchy, we will look into the specifics of the...