Open XML Overview

Office 365 DevDays

2017.11.4-6 | 上海

Tom Jebo Introduction to Open XML Standard

WordprocessingML, SpreadsheetML, PresentationML & DrawingML

Versioning and Namespaces

Compatibility in Documents Agenda Programming the Document Format ( OpenXML SDK) Open XML SDK on Github

Demo

Tools

Support & Resources Introduction to Open XML Format

• Brief history of Office Open XML • Get the Standard • Tour of the Office Open XML Standard Brief history of Office Open XML

2003 2000 2005/6 2007 2008 Office First XML based Office Open XML Office 2007 makes ISO/IEC XML format format used by submitted to ECMA OOXML default file 29500:2008 released in Office OfficeXP Int’l format published 2003

ISO ISO 29500:2012 29500:2016 Support by Office Version

• Office 2007 • First to support OOXML, default format • ECMA-376 support • Office 2010 • ISO/IEC 29500 “Transitional” r/w – fidelity with older versions • ISO/IEC 29500 “Strict” read • ECMA-376 read • Office 2013, 2016 • ISO/IEC 29500 “Strict” r/w • i.e. File | Save As… and choose “Strict Open XML Presentation (*.pptx)” • Office365, Office for Android and iPad • “Strict” r/w Get the standard iso 29500 download Tour of the Office Open XML Standard

• Markup Fundamentals • Packaging • Compatibility and Extensibility • Transitional Markup Fundamentals Part 1

Parts

Reference Packaging Part 2

Packaging Model Compatibility and Extensibility Part 3

MCE elements and attributes Transitional Part 4

Namespaces and elements in transitional markup WordprocessingML, SpreadsheetML, PresentationML & DrawingML ref="A1:B4"/>> • WordprocessingML > w14:textId="522FD3EB" w:rsidR="00BD0355" w:rsidRDefault="00BD0355"> • 11.3.10 (document.) > spans="1:2" x14ac:dyDescent="0.25"> • 17.2 and 17.3 (body, paragraphs and runs) ="preserve">This is a run of text. It is part of a paragraph. • SpreadsheetML v>1 • 12.3.24 (sheet.xml) > • 18.3 (Worksheet elements) w:rsidR="00BD0355" w:rsidRDefault="00BD0355"> • PresentationML spans="1:2"x14ac:dyDescent="0.25"> • 13.3.8 (slide.xml) <Here >is another run of text in a new paragraph.v>2p:spPr/> • Schemas: • Annex A – W3C XML1 • Annex B – RELAX NG9 x14ac:dyDescent="0.25"> • Primer 1 Fancy art from the internet Compatibility in Documents

Allow consumers to: • Be aware and benefit from the new features. • Be unaware and still interoperable • Be unaware and “degrade gracefully”

Attributes: • mc:Ignorable – allows consumer to ignore whole namespace • mc:ProcessContent – consumer process ignorable element contents as if in outer element. • mc:MustUnderstand – consumer throws error before processing any misunderstood ns elements

Elements: • mc:AlternateContent – provides choices and fallback content • mc:Choice/mc:Fallback Supporting Open Specifications

• [MS-OI29500] • Notes for 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 Programming the Document Format (OpenXML SDK) • SDK Classes • Open XML SDK on Github • Scenarios • Demo DocumentFormat.OpenXml.dll SDK Classes OOXMLSDK API

Framework Schema Semantic Part API DOM API API validation validation

SDK Class generation process

1. Generate 5. Generate 6. Generate 2. Build 4. Generate 7. Build OpenXmlPart 3. Process Schema Semantic Framework DOM API OOXMLSDK API Source Schema Files Validation Validation API Source Code DLL Code Data Data Open XML SDK on Github

Github Fork, build, modify

Nuget package Release and latest builds

Issues Report bugs

Contribution Enhancements, fixes Scenarios

Generation Extraction Transform

WordprocessingML

SpreadsheetML

PresentationML Building a C# Solution to Generate a .docx Document

Demonstration Tools

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 and install in Chrome)

Open XML SDK Productivity Tool (search “open xml sdk 2.5”, click download, OpenXMLSDKToolV25.msi) Support & Resources

SDK Open 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)

Open Specifications [email protected] https://social.msdn.microsoft.com/Forums/en- US/home?category=openspecifications Thank you

Office 365 DevDays