open xml overview - interopevents.blob.core.windows.net · tom jebo. introduction to open xml file...
TRANSCRIPT
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
https://social.msdn.microsoft.com/Forums/en-US/home?category=openspecifications
Office 365 DevDays
Thank you