Sergey Shishkin

on agile software development

Open XML Framework

This is a story of one project I started personally in my spare time in a train on the everyday way from home to work and back…

Open XML
Microsoft has announced its new Office 12 Open XML file formats and I decided to develop a small application to play with them. There are a lot of “simple Word”-kind examples on the net (BTW, check them out on the http://www.openxmldeveloper.org), so I tried to build a “simple PowerPoint Viewer” just to be unique.

PresentationML Viewer
I implemented such a viewer that could open .pptx files, load some of their content into the simple object model, build HTML using this object model, and render HTML in the WebBrowser control. It supported text shapes (titles, subtitles and ordinary text lines) and colors (only solid filling). Unfortunately, I don’t have it now because it was spontaneously refactored into something ‘slightly different’.

Office Open XML API
Refactored? Developing this viewer I decided to split it into two parts. First – object oriented Office Open XML (actually, only PresentationML and some pieces of DrawingML) library to wrap Packaging API and XML structures with end-developer-friendly DOM-like API. Second – the viewer itself which should only work with that API and render the document.

Code in a train
Development process was very creative and productive with short everyday coding sessions in a train (40-45 minutes) and daylong thinking at work during breaks 🙂 So, I did refactoring and complete redesign almost every day! This process of generalizing common code practices forced me to separate a new project from Office Open XML API – generic Open XML Framework.

Open XML Framework
So, currently this is the main project and all other mentioned (including API for Office and PresentationML Viewer) are just examples of using Open XML Framework. In my next posts I’ll write more about the project itself and its features and plans. It was only an introduction…

Advertisements

Written by Sergey Shishkin

09.05.2006 at 16:47

Posted in Development

%d bloggers like this: