{"id":737,"date":"2011-12-01T04:09:38","date_gmt":"2011-12-01T04:09:38","guid":{"rendered":"http:\/\/www.ericwhite.com\/home2\/bm8qcmjy\/public_html\/blog\/?page_id=737"},"modified":"2019-09-29T16:41:15","modified_gmt":"2019-09-29T16:41:15","slug":"open-xml-sdk-expanded","status":"publish","type":"page","link":"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\/","title":{"rendered":"Open XML SDK"},"content":{"rendered":"<h2 style=\"font-size: small;\"><a href=\"https:\/\/www.ericwhite.com\/blog\/toc-expanded\">Back to TOC<\/a><a style=\"position: relative; left: 1em;\" href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-video-expanded\">Just Videos<\/a><span style=\"position: relative; left: 2em;\"><a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-condensed\">Condensed TOC<\/a><\/span><\/h2>\n<p>.NET library for creating, querying, and modifying Open XML documents, spreadsheets, and presentations.<\/p>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb669127.aspx\" target=\"_blank\" rel=\"noopener\">Tutorial: Manipulating Content in a WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This tutorial shows how to apply the functional transformational approach and LINQ to XML to manipulate XML documents. The C# and Visual Basic examples query and manipulate information in Office Open XML WordprocessingML documents that are saved by Microsoft Word.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/magazine\/ee532473.aspx\" target=\"_blank\" rel=\"noopener\">Generating Documents from SharePoint with Open XML Content Controls<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">I&#8217;ll present some guidance and sample code for creating a document-generation system that uses SharePoint lists to populate tables in an Open XML word-processing document.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/sharepoint-2010-expanded\">SharePoint 2010<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/map\/generating-open-xml-wordprocessingml-documents-blog-post-series\/\" target=\"_blank\" rel=\"noopener\">Generating Open XML WordprocessingML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This is a blog post series on parameterized Open XML WordprocessingML document generation.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/01\/17\/how-to-extract-comments-from-open-xml-documents.aspx\" target=\"_blank\" rel=\"noopener\">How to Extract Comments from Open XML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">How to Extract Comments from Open XML Documents<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/presentationml-expanded\">PresentationML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded\">SpreadsheetML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2008\/07\/09\/open-xml-sdk-and-linq-to-xml.aspx\" target=\"_blank\" rel=\"noopener\">Open XML SDK and LINQ to XML<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This blog post has some code that uses the Open XML SDK and LINQ to XML to query an Open XML document. It also is an example of code written in the functional style.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/07\/14\/using-the-open-xml-sdk-and-linq-to-xml-to-remove-comments-from-an-open-xml-wordprocessing-document.aspx\" target=\"_blank\" rel=\"noopener\">Using the Open XML SDK and LINQ to XML to Remove Comments from an Open XML Wordprocessing Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Using the Open XML SDK and LINQ to XML to Remove Comments from an Open XML Wordprocessing Document<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/07\/13\/using-the-open-xml-sdk-and-linq-to-xml-to-remove-personal-information-from-an-open-xml-wordprocessing-document.aspx\" target=\"_blank\" rel=\"noopener\">Using the Open XML SDK and LINQ to XML to Remove Personal Information from an Open XML Wordprocessing Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Using the Open XML SDK and LINQ to XML to Remove Personal Information from an Open XML Wordprocessing Document<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/08\/21\/using-linq-to-xml-to-retrieve-content-controls-in-word-2007.aspx\" target=\"_blank\" rel=\"noopener\">Using LINQ to XML to Retrieve Content Controls in Word 2007<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Content controls are an effective way to add structure to word processing documents. This post explains how to write a very small LINQ query to retrieve the contents of content controls. <span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/09\/08\/openxmlcodetester-validating-code-in-open-xml-documents.aspx\" target=\"_blank\" rel=\"noopener\">OpenXmlCodeTester: Validating Code in Open XML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Validating Code in Open XML Documents.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/10\/19\/creating-data-bound-content-controls-using-the-open-xml-sdk-and-linq-to-xml.aspx\" target=\"_blank\" rel=\"noopener\">Creating Data-Bound Content Controls using the Open XML SDK and LINQ to XML<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Creating Data-Bound Content Controls using the Open XML SDK and LINQ to XML<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2008\/10\/27\/how-to-use-altchunk-for-document-assembly.aspx\" target=\"_blank\" rel=\"noopener\">How to Use altChunk for Document Assembly<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Merging multiple word processing documents into a single document is something that many people want to do. An application built for attorneys might assemble selected standard clauses into a contract. An application built for book publishers can assemble chapters of a book into a single document. This post explains the semantics of the altChunk element, and provides some code using the Open XML SDK that shows how to use altChunk.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2008\/11\/03\/inserting-deleting-moving-paragraphs-in-open-xml-wordprocessing-documents.aspx\" target=\"_blank\" rel=\"noopener\">Inserting \/ Deleting \/ Moving Paragraphs in Open XML Wordprocessing Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">If you are making a tool to manipulate paragraphs in Open XML Documents, then this post lists some of the constraints that you must pay attention to.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/documentbuilder-expanded\">DocumentBuilder<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2008\/11\/04\/remove-rsid-attributes-and-elements-before-comparing-documents.aspx\" target=\"_blank\" rel=\"noopener\">Remove Rsid Attributes and Elements before Comparing Open XML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">A convenient way to explore Open XML markup is to create a small document, modify the document slightly in the Word user interface, save it, and then compare it with the Open XML Diff utility that comes with the Open XML SDK V2. However, Word adds extraneous elements and attributes that enable merging of two documents that have forked. These elements and attributes show up as changed, and obscure the differences that we&#8217;re looking for. An easy way to deal with this is to remove these elements and attributes before comparing documents. We can safely do so without changing the content of the document. This post presents a bit of code to do this.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/11\/14\/using-linq-to-query-excel-tables.aspx\" target=\"_blank\" rel=\"noopener\">Using LINQ to Query Excel Tables<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Excel has a very cool feature where you can declare that a range of cells is a table. It is a feature that allows you to use Excel very much like a database. Because these tables are stored in Open XML documents, we can implement some simple extension methods and some classes so that we can query these tables using LINQ in a manner that is similar to querying a SQL database. This post presents a bit of code to do this.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded\">SpreadsheetML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2008\/11\/20\/inner-join-of-two-excel-tables.aspx\" target=\"_blank\" rel=\"noopener\">Inner Join of Two Excel Tables<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">I recently posted some code that allows you to use LINQ to query Excel tables. The source for these queries is the Open XML document &#8211; you don&#8217;t need to involve the Excel application to query the data in these tables. In that post, I presented a few examples of queries of various types. This post shows a join of two tables using the extension methods and classes presented in that post.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded\">SpreadsheetML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2008\/12\/03\/joining-linq-to-sql-and-linq-to-excel.aspx\" target=\"_blank\" rel=\"noopener\">Joining LINQ to SQL and LINQ to Excel<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This post explains how to open the Excel spreadsheet, query a database using LINQ to SQL, and project a collection of an anonymous type that contains data from both data sources<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded\">SpreadsheetML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/12\/15\/a-more-robust-approach-for-handling-xname-objects-in-linq-to-xml.aspx\" target=\"_blank\" rel=\"noopener\">A More Robust Approach for Handling XName Objects in LINQ to XML<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Pre-atomizing XName objects enables you to write more reliable code that performs well.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded\">LINQ to XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/xml-expanded\">XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2009\/02\/05\/move-insert-delete-paragraphs-in-word-processing-documents-using-the-open-xml-sdk.aspx\" target=\"_blank\" rel=\"noopener\">Move\/Insert\/Delete Paragraphs in Word Processing Documents using the Open XML SDK<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Move\/Insert\/Delete Paragraphs in Word Processing Documents using the Open XML SDK<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/documentbuilder-expanded\">DocumentBuilder<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2009\/02\/16\/finding-paragraphs-by-style-name-or-content-in-an-open-xml-word-processing-document.aspx\" target=\"_blank\" rel=\"noopener\">Finding Paragraphs by Style Name or Content in an Open XML Word Processing Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Finding Paragraphs by Style Name or Content in an Open XML Word Processing Document<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2009\/03\/24\/interrelated-markup-in-open-xml-word-processing-documents.aspx\" target=\"_blank\" rel=\"noopener\">Interrelated Markup in Open XML Word Processing Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Interrelated Markup in Open XML Word Processing Documents<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/documentbuilder-expanded\">DocumentBuilder<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/04\/12\/generalized-approach-to-open-xml-markup-references.aspx\" target=\"_blank\" rel=\"noopener\">Generalized Approach to Open XML Markup References<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">An explanation of the issues around interrelated markup that DocumentBuilder (a class in PowerTools for Open XML) solves.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/documentbuilder-expanded\">DocumentBuilder<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2009\/04\/19\/comparison-of-altchunk-to-the-documentbuilder-class.aspx\" target=\"_blank\" rel=\"noopener\">Comparison of altChunk to the DocumentBuilder Class<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This post compares and contrasts two approaches to assemble multiple Open XML word processing documents into a single document<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/documentbuilder-expanded\">DocumentBuilder<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2009\/04\/21\/using-documentbuilder-with-content-controls-for-document-assembly.aspx\" target=\"_blank\" rel=\"noopener\">Using DocumentBuilder with Content Controls for Document Assembly<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">DocumentBuilder is an example class that&#8217;s part of the PowerTools for Open XML project that enables you to assemble new documents from existing documents. DocumentBuilder fixes up interrelated markup when assembling a new document from existing documents. This post shows how to use DocumentBuilder in concert with content controls to control the document assembly.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/documentbuilder-expanded\">DocumentBuilder<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2009\/05\/11\/comparison-of-navigating-parts-between-system-io-packaging-and-the-open-xml-sdk.aspx\" target=\"_blank\" rel=\"noopener\">Comparison of Navigating Parts between System.IO.Packaging and the Open XML SDK<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Comparison of Navigating Parts between System.IO.Packaging and the Open XML SDK<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/opc-expanded\">OPC<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2009\/06\/29\/splitting-runs-in-open-xml-word-processing-document-paragraphs.aspx\" target=\"_blank\" rel=\"noopener\">Splitting Runs in Open XML Word Processing Document Paragraphs<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Splitting Runs in Open XML Word Processing Document Paragraphs<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2009\/07\/05\/comparing-two-open-xml-documents-using-the-zip-extension-method.aspx\" target=\"_blank\" rel=\"noopener\">Comparing Two Open XML Documents using the Zip Extension Method<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Comparing Two Open XML Documents using the Zip Extension Method<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/10\/12\/transforming-open-xml-word-processing-documents-to-xhtml.aspx\" target=\"_blank\" rel=\"noopener\">Transforming Open XML Word-Processing Documents to XHtml<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">First post in a series on transforming Open XML WordprocessingML markup to XHtml<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/10\/21\/transforming-open-xml-word-processing-documents-to-xhtml-post-2.aspx\" target=\"_blank\" rel=\"noopener\">Transforming Open XML Word-Processing Documents to XHtml (Post #2)<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Second post in a series on transforming Open XML WordprocessingML markup to XHtml<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/blogs.msdn.microsoft.com\/ericwhite\/2009\/10\/24\/transforming-open-xml-word-processing-documents-to-html-post-3\/\" target=\"_blank\" rel=\"noopener\">Transforming Open XML Word-Processing Documents to Html (Post #3)<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Third post in a series on transforming Open XML WordprocessingML markup to XHtml<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/10\/29\/open-xml-wordprocessingml-style-inheritance.aspx\" target=\"_blank\" rel=\"noopener\">Open XML WordprocessingML Style Inheritance (Post #4)<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Explores and explains style inheritance in Open XML WordprocessingML<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/11\/05\/comparison-of-html-css-tables-to-wordprocessingml-tables.aspx\" target=\"_blank\" rel=\"noopener\">Comparison of Html\/CSS Tables to WordprocessingML Tables (Post #5)<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Compares HTML tables that use CSS styling to tables in Open XML WordprocessingML. Explains significant semantic differences. If you are familiar with HTML tables, this is an easy way to learn about WordprocessingML tables.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/11\/12\/assembling-paragraph-and-run-properties-for-cells-in-a-table.aspx\" target=\"_blank\" rel=\"noopener\">Assembling Paragraph and Run Properties for Cells in an Open XML WordprocessingML Table<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">When you want to render a paragraph and its runs inside of a cell, you need to assemble the paragraph and run properties from a number of places. This post details how we assemble styling information from table styles, the formatting directly applied to tables, paragraphs, and runs, and the global default paragraph and run properties.<br \/>\n<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ee836138.aspx\" target=\"_blank\" rel=\"noopener\">Accepting Revisions in Open XML Word-Processing Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Revision tracking markup in Open XML word-processing documents is one of the more complex areas of the standard. Accepting tracked revisions makes processing of text in word-processing documents simpler. Learn about the Open XML markup that deals with revision tracking, and how to programmatically accept tracked revisions using the Open XML Format SDK 2.0.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/12\/13\/implementing-inheritance-in-xml.aspx\" target=\"_blank\" rel=\"noopener\">Implementing &#8216;Inheritance&#8217; in XML<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Some XML vocabularies implement a powerful XML pattern that is analogous to inheritance in programming language type systems. Open XML WordprocessingML has these semantics around styles. When you define a new style, you can base this style on another style, and if the new style doesn&#8217;t explicitly define some aspect of the style, the new style &#8216;inherits&#8217; this aspect from its base style. This post presents some code that uses one approach for implementing inheritance semantics.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/xml-expanded\">XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/functional-programming-expanded\">Functional Programming<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/12\/15\/working-with-numbering-in-wordprocessingml.aspx\" target=\"_blank\" rel=\"noopener\">Working with Numbering in Open XML WordprocessingML<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">When implementing a conversion of Open XML word processing documents to HTML, one of the interesting issues is accurately converting numbered and bulleted lists. You must pay special attention to them, because they impact the text that the document contains, but that text isn&#8217;t directly in the markup. If you are accurately extracting the text of the document, you must process some elements and attributes to assemble the correct text.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/12\/21\/accepting-revisions-in-open-xml-wordprocessingml-documents.aspx\" target=\"_blank\" rel=\"noopener\">Accepting Revisions in Open XML WordprocessingML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Revision tracking markup in Open XML word-processing documents is one of the more complex areas of the standard. If you first accept tracked revisions, it makes subsequent processing of text in word-processing documents much simpler. As an example, in my current project of transforming Open XML word-processing documents to XHtml, before doing the conversion, I accept tracked revisions in an in-memory WordprocessingDocument object.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ee956524.aspx\" target=\"_blank\" rel=\"noopener\">Using the SharePoint Foundation 2010 Managed Client Object Model with the Open XML SDK 2.0<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">The Microsoft SharePoint Foundation 2010 managed client object model enables you to write applications that are based on the Microsoft .NET Framework that access SharePoint content from clients without installing code on the server that runs SharePoint Foundation 2010. By using these two technologies together you can write client-side applications that work with Open XML documents that are stored in document libraries.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/sharepoint-2010-expanded\">SharePoint 2010<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/csom-expanded\">CSOM<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/01\/11\/simplifying-open-xml-wordprocessingml-queries-by-first-accepting-revisions.aspx\" target=\"_blank\" rel=\"noopener\">Simplifying Open XML WordprocessingML Queries by First Accepting Revisions<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Simplifying Open XML WordprocessingML Queries by First Accepting Revisions<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/01\/21\/writing-entity-references-using-linq-to-xml.aspx\" target=\"_blank\" rel=\"noopener\">Writing Entity References using LINQ to XML<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">As delivered, it is difficult to write entities using LINQ to XML. This post presents a small hack that enables you to serialize XML entities.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded\">LINQ to XML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/xml-expanded\">XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2010\/01\/22\/inserting-content-that-contains-images-using-altchunk.aspx\" target=\"_blank\" rel=\"noopener\">Inserting Content That Contains Images Using altChunk<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Inserting Content That Contains Images Using altChunk<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ee945362.aspx\" target=\"_blank\" rel=\"noopener\">Working with In-Memory Open XML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Working with Open XML Documents without loading from a file or saving to a file is important when you build applications that work with Microsoft SharePoint Server 2010 or Microsoft ASP.NET Web applications. In addition, some interesting scenarios benefit from creating an in-memory copy of an existing document. Learn how to create and work with in-memory copies of Open XML documents.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/opc-expanded\">OPC<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/sharepoint-2010-expanded\">SharePoint 2010<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2010\/02\/08\/enabling-better-transformations-by-simplifying-open-xml-wordprocessingml-markup.aspx\" target=\"_blank\" rel=\"noopener\">Enabling Better Transformations by Simplifying Open XML WordprocessingML Markup<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">When transforming Open XML markup to another XML vocabulary (such as XHtml), you can sometimes simplify the transform by first transforming the original document to a new, valid WordprocessingML document that contains much simpler markup, and therefore is easier to process. This blog post describes a utility class, MarkupSimplifier, which is part of the PowerTools for Open XML project. <span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2010\/02\/11\/retrieving-the-default-style-name-of-an-open-xml-wordprocessingml-document.aspx\" target=\"_blank\" rel=\"noopener\">Retrieving the Default Style Name of an Open XML WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Whenever you write some Open XML SDK code that processes paragraphs based on style name, you need to retrieve the default style name for a document.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2010\/02\/18\/listitemretriever-accurately-retrieving-text-of-a-paragraph.aspx\" target=\"_blank\" rel=\"noopener\">ListItemRetriever: Accurately Retrieving Text of a Open XML WordprocessingML Paragraph<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Accurately Retrieving Text of a Open XML WordprocessingML Paragraph. (This is one in a series of posts on transforming Open XML WordprocessingML to XHtml.)<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ee922775.aspx\" target=\"_blank\" rel=\"noopener\">Working with Numbered Lists in Open XML WordprocessingML<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Learn about lists in Open XML. Word 2010 documents often contain numbered and bulleted lists. This area of WordprocessingML is justifiably complex. Numbered lists and bulleted lists have many features, each used by a different set of uses. <span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2010\/03\/01\/transforming-wordprocessingml-to-simpler-xml-for-easier-processing.aspx\" target=\"_blank\" rel=\"noopener\">Transforming WordprocessingML to Simpler XML for Easier Processing<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Transforming WordprocessingML to Simpler XML for Easier Processing<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/blogs.msdn.com\/ericwhite\/archive\/2010\/03\/04\/validate-open-xml-documents-using-the-open-xml-sdk-2-0.aspx\" target=\"_blank\" rel=\"noopener\">Validate Open XML Documents using the Open XML SDK 2.0<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Validate Open XML Documents using the Open XML SDK 2.0<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded\">SpreadsheetML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/presentationml-expanded\">PresentationML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/03\/09\/reducing-connaissance-interconnectedness-and-increasing-robustness-using-linq.aspx\" target=\"_blank\" rel=\"noopener\">Reducing Connaissance (Interconnectedness) and Increasing Robustness using LINQ<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">LINQ makes programs more maintainable. This post explains why.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/03\/11\/formats-supported-for-altchunk.aspx\" target=\"_blank\" rel=\"noopener\">Formats Supported for altChunk<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This post lists formats supported for imported content by the altChunk importing functionality of Word.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/03\/24\/modifying-an-open-xml-document-in-a-sharepoint-document-library.aspx\" target=\"_blank\" rel=\"noopener\">Modifying an Open XML Document in a SharePoint Document Library<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">On a fairly regular basis, I need to write an example that retrieves an Open XML document from a SharePoint document library, modify the document, and save the document back to the document library. The correct approach is to use a CAML query to retrieve the document. This post presents the minimum amount of code to use the SharePoint object model to do this.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/sharepoint-2010-expanded\">SharePoint 2010<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/03\/29\/testing-for-base-styles-in-open-xml-wordprocessingml-documents.aspx\" target=\"_blank\" rel=\"noopener\">Testing for Base Styles in Open XML WordprocessingML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Testing for Base Styles in Open XML WordprocessingML Documents<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/03\/31\/using-content-controls-to-give-semantic-meaning-to-content-in-open-xml-wordprocessingml-documents.aspx\" target=\"_blank\" rel=\"noopener\">Using Content Controls to give Semantic Meaning to Content in Open XML WordprocessingML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Using Content Controls to give Semantic Meaning to Content in Open XML WordprocessingML Documents<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff628051.aspx\" target=\"_blank\" rel=\"noopener\">Transforming Open XML WordprocessingML to XHTML Using the Open XML SDK 2.0<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Transforming Open XML WordprocessingML to XHTML Using the Open XML SDK 2.0<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/04\/09\/using-the-open-xml-sdk-from-within-a-managed-add-in.aspx\" target=\"_blank\" rel=\"noopener\">Using the Open XML SDK from within a Managed Add-In<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Using the Open XML SDK from within a Managed Add-In<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff629396.aspx\" target=\"_blank\" rel=\"noopener\">Identifying Open XML Word-Processing Documents with Tracked Revisions<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Determining whether an Open XML WordprocessingML document contains tracked revisions is important. You can significantly simplify your code to process Open XML WordprocessingML if you know that the document does not contain tracked revisions. This article describes how to determine whether a document contains tracked revisions.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff686712.aspx\" target=\"_blank\" rel=\"noopener\">Mastering Text in Open XML WordprocessingML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Understand how to reliably retrieve text from Open XML WordprocessingML documents.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff742315.aspx\" target=\"_blank\" rel=\"noopener\">Developing with SharePoint 2010 Word Automation Services<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Learn to use Word Automation Services to do server-side document conversions to and from a variety of document formats. By using the Open XML SDK, you can accomplish tasks that are difficult such as updating the table of contents or repaginating documents. <span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/sharepoint-2010-expanded\">SharePoint 2010<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/word-automation-services-expanded\">Word Automation Services<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/07\/02\/processing-all-content-parts-in-an-open-xml-wordprocessingml-document.aspx\" target=\"_blank\" rel=\"noopener\">Processing all Content Parts in an Open XML WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This post shows how to search for all content controls in a document, regardless of whether those content controls are in the main document part, in the headers\/footers, or in endnotes\/footnotes. This example uses LINQ to XML.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/07\/21\/table-markup-in-open-xml-spreadsheetml.aspx\" target=\"_blank\" rel=\"noopener\">Table Markup in Open XML SpreadsheetML<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This post presents a summary of the Open XML SpreadsheetML markup that you use to define or query a table. <span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded\">SpreadsheetML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff951689.aspx\" target=\"_blank\" rel=\"noopener\">Creating Open XML WordprocessingML Tables with Vertically Merged Cells<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Create tables with vertically-merged cells in Open XML WordprocessingML documents. <span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/01\/24\/generating-open-xml-wordprocessingml-documents\/\" target=\"_blank\" rel=\"noopener\">Generating Open XML WordprocessingML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Introduces this blog post series on generating WordprocessingML documents, outlines the goals of the series, and describes various approaches that I may take as I develop some document generation examples.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/01\/26\/using-a-wordprocessingml-document-as-a-template-in-the-document-generation-process\/\" target=\"_blank\" rel=\"noopener\">Using a WordprocessingML Document as a Template in the Document Generation Process<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This post examines the approaches for building a template document for the document generation process. A template document is a DOCX document that contains content controls that will control the document generation process.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/02\/02\/more-enhancements-to-the-document-template\/\" target=\"_blank\" rel=\"noopener\">More Enhancements to the Document Template<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Discusses enhancements that enable the template designer to write infrastructure code for the document generation process. Also discusses how the document generation process will work.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/01\/a-super-simple-template-system\/\" target=\"_blank\" rel=\"noopener\">A Super-Simple Template System<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This post details my super-simple template system, which will be more than adequate for building this first version of a doc gen system.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/02\/video-of-use-of-document-generation-example\/\" target=\"_blank\" rel=\"noopener\">Video of use of Document Generation Example<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">First version of this document generation system that is driven by C# code that you write in content controls in a Word document. As an intro, he has recorded a small screen-cast that shows the doc gen system in action.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/08\/release-of-v1-of-simple-docx-generation-system\/\" target=\"_blank\" rel=\"noopener\">Release of V1 of Simple DOCX Generation System<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This is a preliminary version of a simple DOCX generation system, which you can download, unzip, and try. This article lists two screen casts, first 90 second screen-cast shows how to run the doc gen system after you download and unzip the zip file.The second 2 1\/2 minute video shows using the document generation system at scale. It shows generating 3000 documents in under a minute.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/09\/getting-started-with-open-xml-powertools-markup-simplifier\/\" target=\"_blank\" rel=\"noopener\">Getting Started with Open XML PowerTools Markup Simplifier<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">In PowerTools, in the HtmlConverter project, there is a class called MarkupSimplifier, which can remove proofing errors. In addition, it can simplify WordprocessingML markup in a variety of ways, including removal of comments, content controls, and etc.<br \/>\nHere is a small screen-cast that shows the use of MarkupSimplifier. This screen-cast uses Open XML Package Editor Power Tool for Visual Studio 2010.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded\">PowerTools for Open XML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/15\/changing-the-schema-for-this-open-xml-document-generation-system\/\" target=\"_blank\" rel=\"noopener\">Changing the Schema for this Open XML Document Generation System<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">In the following screen cast shows the process of adjusting the XML data that drives the document generation system, as well as adjusting the template document to use that data.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/22\/generating-open-xml-wordprocessingml-documents-using-xpath-expressions-in-content-controls\/\" target=\"_blank\" rel=\"noopener\">Generating Open XML WordprocessingML Documents using XPath Expressions in Content Controls<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Introduces the approach of configuring the document generation process by entering XPath expressions in content controls in a template document.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/27\/importing-html-that-contains-numbering-using-altchunk\/\" target=\"_blank\" rel=\"noopener\">Importing HTML that contains numbering using altChunk<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Importing HTML that contains numbering using altChunk<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/updating-data-for-an-embedded-chart-in-an-open-xml-wordprocessingml-document\/\" target=\"_blank\" rel=\"noopener\">Updating Data for an Embedded Chart in an Open XML WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This blog post shows how to update Data in an embedded chart in an Open XML WordprocessingML Document.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/27\/replacing-a-picture-in-a-picture-content-control-in-an-open-xml-wordprocessingml-document\/\" target=\"_blank\" rel=\"noopener\">Replacing a Picture in a Picture Content Control in an Open XML WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">You may have a picture content control where you want to replace the picture with a different picture. This post shows the Open XML SDK V2 code that is necessary to find a picture content control with an alias of &#8220;MyPicture&#8221;. It then finds the ImagePart, and then replaces the contents of the image part with a different image.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/29\/release-of-v2-of-doc-gen-system-xpath-in-content-controls\/\" target=\"_blank\" rel=\"noopener\">Release of V2 of Doc Gen System: XPath in Content Controls<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">In this post, I release V2 of this simple document generation example. I provide a 2-minute screen-cast that shows the document generation process, generating 3000 documents in less than 30 seconds.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/03\/29\/update-data-behind-an-embedded-chart-in-an-open-xml-wordprocessingml-document\/\" target=\"_blank\" rel=\"noopener\">Update Data behind an embedded Chart in an Open XML WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">11 minute video that walks through the process of embedding a chart in a word-processing document, and then programmatically updating that data so that the chart reflects the new data.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/how-to-solve-open-xml-developer-problems\/\" target=\"_blank\" rel=\"noopener\">How to Solve Open XML Developer Problems<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This screen-cast shows the general approach that I use to solve Open XML developer problems. The general gist of the approach is that I create two documents, one without the feature of interest, and one with. I then use the <a href=\"http:\/\/www.microsoft.com\/downloads\/en\/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&amp;displaylang=en\" class=\"broken_link\">Open XML SDK productivity tool<\/a> to compare the two and find out the differences. I then use the <a href=\"http:\/\/visualstudiogallery.msdn.microsoft.com\/450a00e3-5a7d-4776-be2c-8aa8cec2a75b\">Open XML Package Editor Power Tool for Visual Studio 2010<\/a> to examine the markup, and I use the PDF form of the <a href=\"http:\/\/www.ecma-international.org\/publications\/standards\/Ecma-376.htm\" class=\"broken_link\">ECMA 376 Second Edition Part 1<\/a> to research the markup.<span style=\"color: #2b91af;\"> (Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-tools-expanded\">Open XML Tools<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/how-to-insert-a-page-break-between-imported-content\/\" target=\"_blank\" rel=\"noopener\">How to Insert a Page Break between Imported Content<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Describes how to Insert a Page Break between Imported Content.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/iterating-through-all-content-controls-in-an-open-xml-wordprocessingml-document\/\" target=\"_blank\" rel=\"noopener\">Iterating through all Content Controls in an Open XML WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Sometimes you want to iterate over all content controls in a WordprocessingML document. You may want to search for a content control with a specific tag, or you may want to process all content controls of a specific type. This blog post shows how to iterate over all content controls.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/04\/15\/creating-an-open-xml-protected-spreadsheet-with-locked-and-unlocked-cells\/\" target=\"_blank\" rel=\"noopener\">How to Create Protected Spreadsheets with Locked and Unlocked Cells<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">7-minute video that shows markup related to protected sheets with locked and unlocked cells.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/spreadsheetml-expanded\">SpreadsheetML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/04\/18\/change-the-schema-for-simple-free-doc-generation-system\/\" target=\"_blank\" rel=\"noopener\">Change the Schema for Simple Free Doc Generation System<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Three minute screen-cast that demonstrates changing the schema for simple document generation system that you configure by placing XPath expressions in content controls.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/content-controls-expanded\">Content Controls<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/docx-generation-expanded\">DOCX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-markup-simplifier-application-makes-it-easier-to-research-wordprocessingml\/\" target=\"_blank\" rel=\"noopener\">Open XML Markup Simplifier Application makes it easier to research WordprocessingML<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This article describes WinForms Application that makes it easier to research OpenXML markup, by creating documents, altering documents, and then comparing the two documents. The MarkupSimplifier class (which is part of the PowerTools for Open XML project) can help, but as downloaded from CodePlex it is simply a class.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/in-depth-exploration-of-wordprocessingml-fields\/\" target=\"_blank\" rel=\"noopener\">In-Depth Exploration of WordprocessingML Fields<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">First video in a two-part series that explains how field markup works.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/in-depth-exploration-of-wordprocessingml-fields-part-2\/\" target=\"_blank\" rel=\"noopener\">In-Depth Exploration of WordprocessingML Fields &#8211; Part 2<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">See how to use a MarkupSimplifier utility program to make field markup more understandable. In walk through two cases where fields can be embedded in other fields.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/retrieving-fields-in-open-xml-wordprocessingml-documents\/\" target=\"_blank\" rel=\"noopener\">Retrieving Fields in Open XML WordprocessingML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">The markup for fields in WordprocessingML documents is fairly involved. This post presents some code to accurately parse field markup.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/05\/04\/screen-cast-exploring-margins-in-open-xml-wordprocessingml-documents\/\" target=\"_blank\" rel=\"noopener\">Screen-cast: Exploring Margins in Open XML WordprocessingML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">This blog has recorded short screen-cast that explores some approaches to setting margins in a word-processing document. It shows setting margins for cells, paragraphs, and sections.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/screen-cast-exploring-margins-in-open-xml-wordprocessingml-documents\/\" target=\"_blank\" rel=\"noopener\">Exploring Margins in Open XML WordprocessingML Documents<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Article has a short screen-cast that shows the markup for various ways of setting margins &#8211; for cells, paragraphs, and sections. In addition, the video shows general approach for researching Open XML markup.<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/05\/10\/using-xml-dom-to-detect-tracked-revisions-in-an-open-xml-wordprocessingml-document\/\" target=\"_blank\" rel=\"noopener\">Using XML DOM to Detect Tracked Revisions in an Open XML WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Using XML DOM to Detect Tracked Revisions in an Open XML WordprocessingML Document<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/using-xml-dom-to-detect-tracked-revisions-in-an-open-xml-wordprocessingml-document\/\" target=\"_blank\" rel=\"noopener\">Using XML DOM to Detect Tracked Revisions in an Open XML WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Many developers do not have option of using LINQ to process XML. This post presents a code which uses XML DOM API to detect tracked revisions<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/2011\/05\/12\/search-and-replace-text-in-an-open-xml-wordprocessingml-document\/\" target=\"_blank\" rel=\"noopener\">Search and Replace Text in an Open XML WordprocessingML Document<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Search and Replace Text in an Open XML WordprocessingML Document<span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"https:\/\/www.ericwhite.com\/blog\/generate-open-xml-presentations-using-a-presentation-template\/\" target=\"_blank\" rel=\"noopener\">Open XML Presentation Generation using a Template Presentation<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">Article discusses an approach of creating an Open XML template presentation that you can use to generate multiple presentations from data. <span style=\"color: #2b91af;\"> (Article,Video)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/presentationml-expanded\">PresentationML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/pptx-generation-expanded\">PPTX Generation<\/a><\/div>\n<\/div>\n<ul>\n<li class=\"ericListItem\"><a class=\"ericListItem\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff433640(v=office.14).aspx\" target=\"_blank\" rel=\"noopener\">Using Open XML WordprocessingML Documents as Data Sources<\/a><\/li>\n<\/ul>\n<div style=\"margin-left: 2em; margin-bottom: 1em;\">You can use Microsoft Office 2010 or the 2007 Microsoft Office system as part of a comprehensive collaboration system. You can send preformatted documents to your customers and extract data and content from those documents after they are returned. This article contains guidance and links to other resources to help you get started.<span style=\"color: #2b91af;\"> (Article)<\/span><\/p>\n<div style=\"vertical-align: text-top; margin-top: .5em;\"><span style=\"color: #2b91af;\">Keywords:\u00a0\u00a0<\/span><a href=\"https:\/\/www.ericwhite.com\/blog\/openxml-expanded\">OpenXML<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded\">Open XML SDK<\/a>\u00a0\u00a0<a href=\"https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded\">WordprocessingML<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Back to TOCJust VideosCondensed TOC .NET library for creating, querying, and modifying Open XML documents, spreadsheets, and presentations. Tutorial: Manipulating Content in a WordprocessingML Document This tutorial shows how to apply the functional transformational approach and LINQ to XML to manipulate XML documents. The C# and Visual Basic examples query and manipulate information in Office [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_s2mail":"","footnotes":""},"class_list":["post-737","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/comments?post=737"}],"version-history":[{"count":9,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/737\/revisions"}],"predecessor-version":[{"id":8043,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/737\/revisions\/8043"}],"wp:attachment":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/media?parent=737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}