Open XML Overview - interopevents.blob.core.windows.net · Tom Jebo. Introduction to Open XML File...

Preview:

Citation preview

Office 365 DevDays

2017.11.4-6 | 上海

Office 365 DevDays

2017.11.4-6 | 上海

Open XML Overview

Tom Jebo

Introduction to Open XML File Format Standard

WordprocessingML, SpreadsheetML, PresentationML & DrawingML

Versioning and Namespaces

Compatibility in Documents

Programming the Document Format ( OpenXML SDK)

Open XML SDK on Github

Demo

Tools

Support & Resources

Agenda

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

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

ISO 29500:2012

ISO 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

Parts

Reference

Part 1

Packaging

Packaging

Model

Part 2

Compatibility and Extensibility

MCE elements

and attributes

Part 3

Transitional

Namespaces

and elements in

transitional

markup

Part 4

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>

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 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

Programming the Document Format (OpenXML SDK)

• SDK Classes

• Open XML SDK on Github

• Scenarios

• Demo

SDK Classes OOXMLSDK API

Part API DOM APIFramework

APISchema

validationSemantic validation

DocumentFormat.OpenXml.dll

1. Generate OpenXmlPart

API Source Code

2. Build Framework

API

3. Process Schema Files

4. Generate DOM API

Source Code

5. Generate Schema

Validation Data

6. Generate Semantic Validation

Data

7. Build OOXMLSDK

DLL

SDK Class generation process

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 DocumentDemonstration

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

dochelp@Microsoft.com

https://social.msdn.microsoft.com/Forums/en-US/home?category=openspecifications

Office 365 DevDays

Thank you

Recommended