Screen-cast series on writing Recursive Pure Functional Transformations

On, I am publishing a screen-cast series on writing recursive pure functional transforms, which is a powerful programming technique for transforming document-centric XML (such as Open XML WordprocessingML, XHTML, or ODT) into other forms of XML. I have posted four screen-casts in this series. I anticipate that there will be about 20 screen-casts before all is said and done. You can find the complete list here.



  1. Jim said,

    January 29, 2013 @ 2:17 pm

    Hi Eric, I have been following some of your tutorials for openxml and i was wonder, once you have converted a word document to xml, how do you display the result of that to the console in C#.NET (or can you) my purpose is to take the scanned document as xml send it over the sever and parse it to the database. Perhaps there is an easier way???

    Thanks in advance

  2. Eric White said,

    January 29, 2013 @ 3:36 pm

    Hi Jim,

    Where exactly do you want to display the document? If you are displaying in a browser, then after converting to HTML, you can simply display the HTML in a element in the browser.

    If you are displaying in a windows forms app, see Displaying an Open XML WordprocessingML Document in a Web Browser Control in Windows Forms.

    I need just a bit more context and then can answer your questions.


  3. Lili Rambin said,

    July 12, 2013 @ 8:33 pm

    You actually make it seem really easy along with your presentation but I in finding this matter to be really something which I believe I might by no means understand. It seems too complicated and extremely huge for me. I’m taking a look ahead in your subsequent post, I¡¦ll attempt to get the grasp of it!

  4. John W said,

    August 21, 2013 @ 1:52 pm

    Love the work and finding it very useful! I may have stumbled onto a problem in the AcceptRevisionsForPart sequence. It seems that AcceptDeletedAndMoveFromParagraphMarks loses the first bookmarkStart element if it occurs outside the <p> elements. I see code to correct a similar error on a bookmarkEnd, but this is the start element instead.

  5. Eric White said,

    August 21, 2013 @ 4:02 pm

    Hi John,

    Thanks for the pointer. Actually, RevisionAccepter is due for a revision. I’ve also found another issue where it incorrectly processes deleted paragraph marks if the last deleted paragraph mark is immediately before a table or content control. I also need to revisit a couple of other areas.

    I’ve added your note to my notes on updating RevisionAccepter. I think that this will be scheduled for October or November.

    Cheers, Eric

  6. John W said,

    August 21, 2013 @ 8:17 pm

    Revision: I learned that the code for picking up the bookmarkEnd elements was added by one of our developers, so add that to you list of notes, too. A similar problem occurs in AcceptDeletedAndMovedFromContentControls.

  7. Robert Reno said,

    November 2, 2013 @ 3:29 pm

    Hi Eric,

    Just wanted to say how much I love your screen-casts on Pure Functional Transforms. You have done a real great job. Also, can I ask what screen casting software you are using to produce these screen casts?



  8. Eric White said,

    March 2, 2014 @ 4:57 pm

    Hi Robert,

    Glad you like the screen-casts. I use Camtasia 8 – it’s really an awesome tool.


RSS feed for comments on this post · TrackBack URI

Leave a Comment