The OpenDoPE approach to document automation

OpenDoPE is a set of conventions for doing document assembly using Open XML (the ISO-standard Microsoft Word docx file format), specifically, its content control databinding architecture.

What is a content control?

A content control is a container for content. It is a standard feature of the docx file format.

It provides a natural, modern way to insert text, for example

   Dear Click here to enter text.

A rich text content control can contain paragraphs and tables, or just a run of text.

The OpenXML element for a content control is <w:sdt>.

What is content control data binding?

A user can include an arbitrary XML document in their docx file - such an XML file is called a custom xml part.

A content control can be bound to an element in the custom xml file, via an XPath expression. This is done with a <w:databinding>:



<w:dataBinding w:xpath="/invoice[1]/customer[1]/name[1]"/>

What does OpenDoPE add?

So Open XML provides an elegant way of inserting data (variable replacement/basic mail merge).

What it does not do though, is provide any guidance as to how to implement:

conditional inclusion/exclusion of paragraphs or other units of content

repeat (eg of list items, table rows, or other units of content)

inclusion/insertion of other documents (content reuse)

OpenDoPE is:

a Convention for representing the above features using content controls and Custom XML parts

reference software implementing the Convention