Q:

Resources for learning about Word XML format?

What resources would you recommend to learn about the Microsoft's Open Office format (the XML format introduced with Office 2007, not to be confused with OpenOffice.org), specifically for .docx Word files? (Ideally, ones with lots of samples and tutorials.)

A:

Top 10 List to Learn Open XML

Start with Open XML Explained.
This is an easy to read eBook on
Open XML.

Next view with WordProcessingML
articles on OpenXMLDeveloper.org.
They are quick and effective way to
show you some of the ways people are
doing different things.

Then go learn a bit more about Open
Packaging Convention - this is
how Open XML files are packed
(zipped) and the relationships the
files in side the package have to
each other. (XPS documents also use OPC format).

Now grab the ISO/IEC 29500:2008
spec and keep it handy - what
exists in here is almost everything
you need to know. You can also view
the standard online at
http://www.documentinteropinitiative.org/.

Supplement #4 with the Office
implementation guide of the
standard to see how values default to and are implemented in
Word as opposed to other clients. Also, grab the Word Extensions guide to view how Word (specifically 2010) has added and implemented extensions to the standard.

Now start with the following blogs -
they are amazing guides to the real
power under the hood of Open XML: a)
Eric White's old blog, b) Eric
White's new blog, c) Brian
Jones & Zeyad Rajabi's blog.

Now it's time to start toying around
with things. You can use the Open
XML SDK or go commando. The SDK may
be the best way to start and many
3rd party tools are based off it.
Get the SDK and dive into the
the Word Processing articles
here.

You can also view How To videos on
certain subjects. Check out the
Open XML "How Do I" Videos

Get some tools to help you. The
Open XML Package Editor Power Tool
for Visual Studio 2010, PowerTools for Open XML
and the
Word Content Control Toolkit
are indispensible.

Finally, take a look at what has
been asked and answered on SO in
the openxml, ooxml, openxml-sdk,
wordprocessingml tags.

And there you have it!

