transform open xml documents with open xml sdk, azure … · 2021. 1. 21. · open xml package...
TRANSCRIPT
![Page 1: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/1.jpg)
Transform Open XML Documents with Open
XML SDK, Azure Functions and Microsoft
Power Automate
Tom Jebo
Senior Escalation Engineer
![Page 2: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/2.jpg)
What if…we could automate?
Goals• Allow presenters to upload their slide deck
• Automatically process the deck to change the theme
What do we need?• A repository for the decks
• An understanding of Open XML File Format
• A way to programmatically transform a deck
• A way to automate the process
*http://flow.microsoft.com
*
![Page 3: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/3.jpg)
Agenda • Overview to Open XML File Format Markup
Languages
• Open XML SDK
• Demo: Transforming a Presentation
• Tools, Support and Resources
![Page 4: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/4.jpg)
Brief History of Office Open XML
2000
First XML based
format used by
OfficeXP
2003
Microsoft Office
XML format
released in Office
2003
2005/6
Office Open XML
submitted to
ECMA Int’l
2007
Office 2007
makes OOXML
default file
format
2008
ISO/IEC
29500:2008
published
![Page 5: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/5.jpg)
Support by Office Version
First to support OOXML, default format
ECMA-376 support
ISO/IEC 29500 “Transitional” r/w
ISO/IEC 29500 “Strict” read
ECMA-376 read
ISO/IEC 29500 “Strict” r/w
i.e. File | Save As… and choose “Strict Open XML Presentation (*.pptx)
Office 2016/2019
“Strict” r/w
![Page 6: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/6.jpg)
Get the standardiso 29500 download
![Page 7: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/7.jpg)
Parts of the ISO 29500 Standard
Parts
Reference
Part 1MarkupFundamentals
Packaging
Model
Part 2Open Packaging
MCE elements
and attributes
Part 3Compatibility/Extensibility
Namespaces
and elements in
transitional
markup
Part 4Transitional
![Page 8: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/8.jpg)
WordprocessingML, SpreadsheetML, PresentationML &
DrawingML
Parts and elements to get started:
WordprocessingML 11.3.10 (document.xml)
17.2 and 17.3 (body, paragraphs and runs)
SpreadsheetML 12.3.24 (sheet<x>.xml)
18.3 (Worksheet elements)
PresentationML 13.3.8 (slide<x>.xml)
19.3 (slide elements)
Schemas: Annex A – W3C XML1
Annex B – RELAX NG9
Primer Annex L – detailed intro to the ML’s. Use this!
<w:document<w:body><w:p w14:paraId="2673269E" w14:textId="522FD3EB" w:rsidR="00BD0355" w:rsidRDefault="00BD0355">
<w:r><w:t xml:space="preserve">This is a run of text. It is part of a paragraph.
</w:r></w:p>
<w:p w14:paraId="43453C87" w14:textId="3F744A5F" w:rsidR="00BD0355" w:rsidRDefault="00BD0355"><w:r>
<w:t>Here is another run of text in a new paragraph.</</w:r>
</w:p>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml<dimension ref="A1:B4"/><sheetData>
<row r="1" spans="1:2" x14ac:dyDescent="0.25"><c r="A1">
<v>1</v></c>
</row><row r="2" spans="1:2" x14ac:dyDescent="0.25">
<c r="A2"><v>2</v>
</c></row><row r="4" spans="1:2" x14ac:dyDescent="0.25">
<c r="B4" t="s"><v>1</v>
</c>
<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" <p:cSld>
<p:spTree><p:sp>
<p:nvSpPr><p:cNvPr id="2" name="Title 1"/><p:cNvSpPr>
<a:spLocks noGrp="1"/></p:cNvSpPr>
</p:nvSpPr><p:spPr/><p:txBody>
<a:p><a:r>
<a:rPr lang="en-US" dirty="0" smtClean<a:t>Fancy art from the internet</a:t
</a:r>
![Page 9: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/9.jpg)
Supporting Open Specifications
[MS-OI29500]
Notes for Microsoft Office products implementing ISO/IEC 29500
[MS-ODRAWXML]
[MS-DOCX]
[MS-XLSX]
[MS-PPTX]
Extensions to the DrawingML, WordprocessingML, SpreadsheetML and
PresentationML standard elements defined in ISO/IEC 29500
See reference note for URL to MSDN page for these.10
![Page 10: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/10.jpg)
Open XML SDK on Github
![Page 11: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/11.jpg)
Open XML SDK on Github
Github
Fork, build, modify
Nuget package
Release and latest builds
Issues
Report bugs
Contribution
Enhancements, fixes
![Page 12: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/12.jpg)
Common Scenarios for each Markup Language
Generation Extraction Transform
WordprocessingML
SpreadsheetML
PresentationML
![Page 13: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/13.jpg)
Best Practices and Getting Started
XSL Transformation using Flat OPC
Use Templates (Office)
Use Reflected code and modify (Productivity Tool)
Use LINQ to find target elements and parts (.Net)
Real World Usage
• Microsoft Open Specifications!
• Microsoft internal/public
• Many major organizations
![Page 14: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/14.jpg)
High-performance extraction, modification and
generation of
![Page 15: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/15.jpg)
Demo: Transform a Presentation using Azure Functions and
Flow
1
3
2
4
*
*http://flow.microsoft.com
![Page 16: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/16.jpg)
Resources
![Page 17: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/17.jpg)
Tools
Open XML Viewer for VS Code:
https://github.com/yuenm18/ooxml-viewer-vscode
Open XML Package Editor for Visual Studio:
https://github.com/OfficeDev/Open-XML-Package-Editor-Power-Tool-for-Visual-Studio
OOXML Tools Extension for Chrome
(search “ooxml tools chrome” and install in Chrome)
Open XML SDK Productivity Tool
(search “open xml sdk 2.5”, click download, OpenXMLSDKToolV25.msi)
![Page 18: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”](https://reader035.vdocuments.net/reader035/viewer/2022062417/612e25d31ecc51586942a129/html5/thumbnails/18.jpg)
Support & Resources
Code for Transforming Documents sample: https://github.com/InteropEvents/TransformingDocuments
SDKOpen XML SDK
https://github.com/OfficeDev/Open-Xml-Sdk
OpenXMLDeveloper
http://www.openxmldeveloper.org
libopc
http://libopc.codeplex.com (third-party open source OOXML library)
Transforming Open XML Documents using XSLThttps://blogs.msdn.microsoft.com/ericwhite/2008/09/29/transforming-open-xml-documents-using-xslt/
Azure Functions
https://docs.microsoft.com/en-us/azure/azure-functions/
Open Specifications
https://docs.microsoft.com/en-us/openspecs/
tag: openspecs-office-fileformats