Vive la Révolution Open XML
What a week! First we had Novell's announcement of Open XML support in OpenOffice, which came just after a similar announcement of plans for Open XML support in Corel's Wordperfect Office X3 suite. And then the really big news we've all been waiting for, approval of Office Open XML as a worldwide standard by the Ecma General Assembly. Brian Jones has the details on his blog, and there's also a list of quotes in support of the standard on the OpenXmlDeveloper site.
And while all of this was taking place, we were doing a beta training event for Open XML developers at the MTC in Paris, not far from the Eiffel Tower. It was three days of deep-dive coverage of Open XML and related topics, with talented .NET trainer Wouter Van Vugt and myself covering everything from Open XML architecture and .NET XML programming techniques to specific details of the Open XML schemas, the Open Packaging Convention, and lots more. (This was a beta event and we're planning others but don't have a schedule for those yet -- I'll post information here when we do.)
Open XML is a big topic, so we focused the workshop on the things that apply to common development scenarios: the main MLs, the packaging convention, custom XML options, and so on. For example, Wouter covered how to use XSLT to convert raw XML data into Open XML or translate Open XML to HTML or paginated formats like XSL-FO and XPS.
Wouter also demonstrated his Package Explorer utility for viewing, editing and validating Open XML documents, and later he demonstrated a work in progress, his Open XML Objects framework for creating documents.
I just noticed that Wouter has the latest updated Package Explorer available for download on Codeplex here. Nice work! If you're doing Open XML development, you'll find his validation functionality extremely useful -- one-click validation of a part or the entire package, to verify that your custom code is generating well-formed Open XML documents. These types of community-developed open-source tools are starting to make Open XML development much easier.
We had some great guest presenters on Wednesday afternoon, who added their perspective on various aspects of Open XML development. This was especially interesting for a mono-lingual type like me, since all of those presentions were in French. But I followed along on the screen best I could -- <w:p> seems to mean the same thing in French as it does in English, I noticed.
Open XML development in Java
Julien Chable (an MSP located south of Paris) demonstrated his Java framework for Open XML development, showing how he provides the same type of functionality as the .NET 3.0 packaging API in a pure-Java environment. He has essentially cloned most of .NET's System.IO.Packaging API in 100% Java. Julien's framework also provides the sort of high-level functionality that Wouter's framework provides, and it was interesting to see conceptually similar code in both environments.
This was a great example of how XML-based formats allow for interoperability with other platforms. Even though I don't know Java at all I found Julien's code looked very familiar: create a package, create package parts, set relationships, and so on. It was easy to forget we were in Eclipse instead of Visual Studio, working in Java instead of C#, and before long he had created a formatted Open XML document (WordprocessingML in this case) with an inserted image, all done with a small amount of simple code that leveraged his Java framework.
Jean Goffinet of Clever Age then covered the ODF Translator Project for us, showing some of the technical issues involved in conversions between Open XML and ODF. This built on our previous coverage of the Open XML schemas and XSLT, since the ODF translator makes extensive use of XSLT for converting between Open XML and ODF.
For more about the ODF translator project, check out the team blog.
After that, we had a nice surprise, an un-scheduled presentation from Jerome Berthaud, who was attending the class. Jerome has developed some classes that simplify the creation of SpreadsheetML documents, and he showed how he can create an Open XML spreadsheet from scratch, using simple code that puts values in cells and styles the output. Whereas Julien and Wouter's frameworks have a paragraph class, for example, Jerome's framework has a cell class that can be styled with a single line of code that creates and applies direct-formatting records using the <xf> element.
Jerome also helped me understand some subtle details of what needed to change in my CreateXlsx sample program to make it work correctly with the final version of the Ecma schemas, leading to my updated post on that topic earlier this week. Not exactly clear who was the teacher and the student there, Jerome. :-) As the saying goes, if you really want to learn a topic well, just try teaching it.
Two Open XML events on the same day
As if that wasn't enough, there was also an unrelated Open XML developer event taking place downstairs in the same building Wednesday afternoon, organized by Pierre Lagarde and Lucas Riedberger. So I dropped in there after we were done for the day, to catch the last hour or so of that event, and listened to several more presentations on Open XML.
These presentations were also in French, so I'm not completely sure who I saw speaking first (notice a pattern here?), but the second presentation I saw was by Cyril Durand, who is one of the developers behind Codes-SourceS, a huge open-source code-sharing community in France. Cyril has also been working on a web-based DOCX-to-HTML convertor, which you should be able to learn about soon on his blog.
After Cyril finished, I watched Jean Goffinet go through his ODF translator presentation again for this audience. His presentation, by the way, was created in OpenOffice. Pretty interesting to be sitting in a Microsoft facility, watching an OpenOffice presentation that included lots of technical information about Open Document Format. If somebody knows when I can watch (or give) a PowerPoint presentation on Open XML at an IBM office, please let me know. :-)
After a long day of Open XML activities, a group of us went out to dinner. The menu was in French, of course, but Jean from the ODF translator project (who apparently has an uncontrollable urge to translate) took me through every item on the menu to help me understand how specific words and idioms translated to English. Thanks, Jean -- if all this Open XML activity in France continues to grow, it's becoming clear that I'm going to need to learn French.
UPDATE: Jean pointed out that I got the title of this post wrong. I'm such a bad student. :-) It's fixed now.
Well, this has been a really long post, but that's the kind of week it's been. I'd like to thank all the hard-working folks at MS-France who made these events possible (Guillaume, Stephane, Damien, Pierre, Lucas, Frank and Elodie) the amazing independent developers whose work I learned so much from (Wouter, Jean, Julien, Jerome and Cyril), and also Chris and Mauricio for all the work on the HOLs. Vive la Révolution!