# Office Open XML

Office Open XML, auch bekannt als OOXML oder Microsoft Open XML (MOX) (ECMA-376 Office Open XML File Formats bzw. ISO/IEC 29500 Information technology – Office Open XML formats), beschreibt von Microsoft entwickelte Dateiformate zur Speicherung von Bürodokumenten auf XML-Basis, die den Daten- beziehungsweise Dateiaustausch zwischen verschiedenen Büroanwendungspaketen ermöglichen sollen.
Von OOXML wurden insgesamt drei unterschiedliche Versionen spezifiziert und standardisiert, die untereinander nicht kompatibel sind: Version „ECMA-376“ und „ISO/IEC 29500:2008“ (in zwei Versionen, „Transitional“ sowie „Strict“).
Die erste Formatspezifikation wurde der Ecma International von Microsoft zur Standardisierung vorgelegt. Diese erfolgte am 7. Dezember 2006 als Ecma-Standard ECMA-376. Die Erstveröffentlichung als Norm ISO/IEC 29500 erfolgte am 19. November 2008 in geänderter Version.
Zuvor wurde jedoch bereits die ebenfalls XML-basierte, aber herstellerunabhängige und quelloffene Spezifikation OpenDocument als Standard für die Interoperabilität von Bürodokumenten bzw. -Anwendungen durch die ISO und die IEC angenommen, und 2006 als internationale Norm ISO/IEC 26300 veröffentlicht. Im Gegensatz zum Microsoft Open XML-Standard standen beim OASIS OpenDocument-Standard laut Microsoft jedoch nicht die Anforderungen, Randbedingungen und Erfahrungen der Microsoft-Kunden im Vordergrund. MOX/OOXML soll genauer auf die „speziellen“ Arbeitsweisen von Microsoft-Office-Anwendungen zugeschnitten sein.

## Vorgeschichte

Durch die große Verbreitung von Microsoft Office hatten sich die dazugehörigen binären und proprietären Dateiformate von Microsoft Word, Microsoft Excel und Microsoft PowerPoint in vielen Bereichen als ein De-facto-Standard für den Dokumentenaustausch etabliert.
Der Aufbau dieser Office-Formate war jedoch nicht offen dokumentiert, sondern musste bei Microsoft lizenziert werden. Da die Kosten und vor allem die Lizenzbedingungen nicht für alle Anbieter akzeptabel sind, waren manche Konkurrenten (speziell Open-Source-Projekte) gezwungen, den Aufbau der Dateiformate durch Reverse-Engineering herauszufinden. Aufgrund der dem Reverse-Engineering anhaftenden Probleme und dem Umstand, dass die Dateiformate eng mit der inneren Arbeitsweise der Microsoft-Office-Anwendungen verknüpft sind, konnte es zu fehlerhafter Erzeugung und Darstellung von Dateiinhalten durch entsprechend entwickelte Konkurrenzanwendungen kommen. Mittlerweile hat Microsoft die Spezifikation der Formate veröffentlicht.
Um das automatisierte Erstellen und Verarbeiten von Microsoft-Office-Tabellenkalkulationsdokumenten zu vereinfachen, wurde mit Microsoft Excel 2002 ein XML-basiertes Dateiformat eingeführt (XML Spreadsheet), das allerdings nur einen Teil der Excel-Funktionalität abspeichern kann.
Mit Microsoft Office 2003 wurde die XML-Unterstützung ausgeweitet, und es wurden neue XML-basierte Dateiformate eingeführt, vor allem in Microsoft Word.
Für Microsoft Office 2007 wurden die XML-basierten Dateiformate überarbeitet und zum neuen Standarddateiformat bestimmt. Dieses Dateiformat bildet die Basis von Office Open XML.
Der ebenfalls auf XML basierende und 2006 bereits international genormte und quelloffene Standard für Dateiformate von Bürodokumenten ISO/IEC 26300 (OpenDocument 1.0, abgekürzt ODF), welcher ursprünglich von Sun Microsystems entwickelt wurde und durch die herstellerunabhängige Organisation OASIS nach wie vor gepflegt und weiterentwickelt wird, wird von Microsoft zwischenzeitlich zwar in allen Office-Anwendungen direkt unterstützt, als originäres Standard-Dateiformat für Microsoft Office allerdings abgelehnt. Unter anderem, da es angeblich noch zu sehr auf dem Dateiformat – und damit der Arbeitsweise und dem Funktionsumfang – von OpenOffice.org basiere und nicht geeignet sei, alle bereits existierenden Microsoft-Office-Dokumente abzubilden.
Verfechter von ODF halten dem jedoch entgegen, dass ODF durch proprietäre Erweiterungen selbstverständlich alle inkompatiblen Eigenschaften von Microsoft-Office-Dokumenten direkt abbilden könne.

## Normung

Seit einiger Zeit wird – vor allem von Regierungen (beispielsweise des US-Bundesstaates Massachusetts) oder der EU – gefordert, dass zukünftig nur noch offen dokumentierte, herstellerunabhängige, standardisierte Dateiformate benutzt werden sollen, um Lock-in-Effekte zu vermeiden und um die Interoperabilität und den langfristigen Zugriff auf Dateiinhalte sicherzustellen. Aufgrund dieser Forderungen hat Microsoft das Microsoft-Office-2007-Dateiformat der Ecma International zur Normung vorgelegt. Die Normung erfolgt dort im Rahmen des technischen Komitees 45 (TC45).
Am Normungsprozess sind Apple, Barclays Capital, BP, die British Library, Essilor, Intel, die The United States Library of Congress, Microsoft, NextPage, Novell, Statoil ASA und Toshiba beteiligt.
Office Open XML wurde am 7. Dezember 2006 von der Ecma-International-Hauptversammlung als Ecma-Standard 376 genehmigt.
Im Dezember 2006 wurde Office Open XML bei der ISO als ISO/IEC CD 29500 zur Normung im Schnellverfahren (JTC 1 Fast Track Process) eingereicht. In einer Abstimmung im September 2007 konnte es nicht die nötige Zustimmung erreichen, um als ISO-Norm akzeptiert zu werden.
Nach einer im Februar 2008 anberaumten Sitzung – bei der den zahlreichen Kommentaren begegnet wurde, die bei der Stimmabgabe im September 2007 eingereicht worden sind – bestand für die stimmberechtigten ISO-Mitglieder bis Ende März 2008 die Möglichkeit, ihre ursprünglich abgegebene Stimme zu ändern. Im Zuge der nationalen Abstimmungen wurde immer wieder über Unregelmäßigkeiten berichtet. Der FFII warf Microsoft vor, so die Normungsgremien diverser Länder mit Strohmännern aufzufüllen. In Norwegen soll das nationale Normungsgremium eine eindeutige Ablehnung von 21 Nein- und 2 Ja-Stimmen durch seine Mitglieder ignoriert haben.
In einem offenen Brief haben ISO/IEC-SC-34-Mitglieder während des Normungsverfahrens die gegen sie erhobenen persönlichen Attacken missbilligt.
Wie die ISO am 2. April 2008 bekanntgab, hat der Normentwurf die notwendige Stimmenmehrheit erhalten und wurde zunächst als ISO-Normentwurf ISO/IEC DIS 29500 akzeptiert. Die nationalen Normungsorganisationen von Südafrika (SABS), Brasilien (ABNT), Indien und Venezuela haben jedoch innerhalb der vorgesehenen Frist Einsprüche gegen die Veröffentlichung von ISO/IEC 29500 als Norm erhoben. Eine Entscheidung der zuständigen Gremien über die Einsprüche wurde für Ende Juni 2008 angekündigt; bis dahin wurde die Normung bzw. Veröffentlichung suspendiert. Am 15. August 2008 gab die ISO bekannt, dass die Einsprüche der nationalen Normungsorganisationen zurückgewiesen wurden und die Norm nun zur Veröffentlichung freigegeben ist. Eine vollständige Implementierung der Norm existiert bisher noch nicht, auch Microsoft Office 2007 erfüllt nicht alle Anforderungen. Die Veröffentlichung als Norm ISO/IEC 29500 erfolgte am 19. November 2008 in vier Teilen: Mittlerweile gibt es eine Neuausgabe mit Veröffentlichung im September 2012.
* ISO/IEC 29500-1 – Office Open XML File Formats – Part 1: Fundamentals and Markup Language Reference
* ISO/IEC 29500-2 – Office Open XML File Formats – Part 2: Open Packaging Conventions
* ISO/IEC 29500-3 – Office Open XML File Formats – Part 3: Markup Compatibility and Extensibility
* ISO/IEC 29500-4 – Office Open XML File Formats – Part 4: Transitional Migration Features
Die vier Dokumente können als öffentlich verfügbare Normen kostenlos bei ISO heruntergeladen werden.

## Lizenzierung

Wie alle Ecma-International-Standards ist auch Office Open XML frei verfügbar und kopierbar.
In einem covenant not to sue hat Microsoft erklärt, dass es unwiderruflich auf eine Durchsetzung aller für eine konforme Umsetzung der Office-2003-XML-Reference-Schemas-Spezifikation notwendigen Patente gegenüber Programmteilen, die diese Spezifikation implementieren, verzichtet. Die Rechtsanwaltskanzlei Baker & McKenzie hat im Auftrag von Microsoft unter anderem den Inhalt und die Gültigkeit dieses covenants überprüft und in einer Studie festgestellt, dass keine Lizenz benötigt wird, um Office Open XML einsetzen zu können.
Zudem hat Microsoft die Office-2003-XML-Reference-Schemas- und die Office-Open-XML-1.0–ECMA-376-Spezifikation in die Microsoft Open Specification Promise (OSP) aufgenommen. In der OSP verspricht Microsoft, auf die Durchsetzung von Patenten gegenüber Programmteilen, die die angeführten Spezifikationen implementieren, zu verzichten. Die OSP bezieht sich allerdings nur auf von Microsoft explizit angeführte Versionen der jeweiligen Spezifikationen. Außerdem gilt das nicht für eventuelle Patentansprüche Dritter.
Laut Software Freedom Law Center würde sich das Versprechen jedoch auf neue Versionen nur ausdehnen, wenn sich Microsoft an Standardisierungs-Aktivitäten beteiligt. Durch ein Beenden der Standardisierungs-Aktivitäten seitens Microsoft wäre das Versprechen also hinfällig.

## Aufbau

Office Open XML besteht aus einer Spezifikation für ein Containerformat, den Open Packaging Conventions, und einer Reihe von XML-basierten Auszeichnungssprachen für die einzelnen Komponenten eines Büroanwendungspaketes. Office-Open-XML-Dokumente werden in Packages gespeichert, die den Open Packaging Conventions entsprechen. Ein Package ist eine ZIP-Datei, die alle Bestandteile (Parts und Items) eines Dokuments enthält.
Parts sind die einzelnen Bestandteile (Bausteine) des Inhalts des Dokuments (Text, Grafiken, Bilder etc.), während Items beschreibende Metadaten sind, die festlegen, wie die einzelnen Bestandteile des Dokuments zusammengestellt und dargestellt werden sollen. Items können in Relationship items und Content-Type items unterteilt werden. Relationship items beschreiben, wie die einzelnen Parts zusammenhängen, d. h., wie die einzelnen Bestandteile des Dokuments zusammengefügt werden müssen, während Content-Type items den Content-Type der einzelnen Bestandteile festlegen, d. h., wie die einzelnen Bestandteile dargestellt werden müssen. Jedes Office-Open-XML-Dokument besteht aus einem main part (Hauptbestandteil) und eventuell aus weiteren Bestandteilen, die vom main part über ein relationship item referenziert werden. Der Aufbau, Name und Pfad (innerhalb der ZIP-Datei) des main parts hängt vom Typ des Office-Open-XML-Dokuments (Textverarbeitungsdokument, Tabellenkalkulationsdokument etc.) ab.
Die Auszeichnungssprachen sind
* WordprocessingML für Textverarbeitungsdokumente
* SpreadsheetML für Tabellenkalkulationsdokumente
* PresentationML für Präsentationsdokumente
* DrawingML für Zeichnungsdokumente
* VML für Zeichnungsobjekte innerhalb anderer Dokumente
und eine Reihe von Hilfsauszeichnungssprachen für Custom XML Data Properties (zum Speichern von beliebigen XML in einem Package), Dateieigenschaften, mathematische Formeln und bibliographischen Hinweisen.
Ein minimales Office-Open-XML-Textverarbeitungsdokument enthält im Wurzelverzeichnis der ZIP-Datei eine XML-Datei namens /[Content_Types].xml sowie drei Verzeichnisse /_rels, /docProps und ein Verzeichnis mit den eigentlichen Dokumentdaten.

### [Content_Types].xml-Datei

    Diese Datei enthält eine Beschreibung des Inhaltes der ZIP-Datei

### _rels-Verzeichnis

    In den _rels-Verzeichnissen werden die Abhängigkeiten zwischen den einzelnen Parts gespeichert und zwar je Part in einer eigenen Datei mit der Erweiterung .rels. In einem Textverarbeitungsdokument mit Text und Bildern ist der Text zum Beispiel in der Datei /word/document.xml gespeichert und in der Datei /word/_rels/document.xml.rels befinden sich dann die Verweise auf die eingebetteten Bilder. Es gibt immer eine Datei /_rels/.rels, in der die package relationships gespeichert sind und der main part festlegt wird. Diese Datei ist die erste Datei, die beim Öffnen gelesen wird.

### docProps-Verzeichnis

    Das /docProps-Verzeichnis enthält in den Dateien core.xml, app.xml und custom.xml diverse Dokumenteigenschaften (Metadaten) wie Autor, Speicherdatum etc. nach dem Dublin-Core-Standard (ISO 15836:2003) der „Dublin Core Metadata Initiative“ (DCMI).

### Dokumentdatenverzeichnis

    Das Dokumentdatenverzeichnis (zum Beispiel /word) enthält die eigentlichen Dokumentdaten. Im Falle eines Textverarbeitungsdokuments zum Beispiel eine Datei document.xml, die gemäß WordprocessingML aufgebaut ist.

### Office MathML (OMML)

Office Open XML verwendet die XML-basierte Auszeichnungssprache Office MathML (OMML) zur Beschreibung mathematischer Formeln.
Das folgende Office-MathML-Beispiel beschreibt den Bruch: ${\frac {\pi }{2}}$

### Dokumenteneigenschaften

Ein Metadatenbeispiel (docProps/core.xml) nach dem Dublin-Core-Standard:

## Praktische Umsetzung

Microsoft Office 2007 für Windows und Microsoft Office 2008 für macOS unterstützen nur die veraltete Version ECMA-376 1st edition von Office Open XML, die von der ISO abgelehnt wurde, der ISO-Standard 29500 wird nicht vollständig unterstützt. Microsoft Office 2010 für Windows ermöglicht erstmals den Lesezugriff auf Dateien gemäß ISO-Standard 29500, doch voll unterstützt wird der Standard erst in Microsoft Office 2013 für Windows. Für ältere Microsoft-Office-Versionen (ab Version 2000) bietet Microsoft ein „Compatibility Pack“, das es ermöglicht, das nicht ISO-konforme Format zu lesen und zu schreiben.
Eine Reihe weiterer Programme unterstützt Office-Open-XML-Formate, wobei in allen Implementierungen bislang die Kompatibilität zur veralteten Version ECMA-376 1st edition im Vordergrund steht und nicht die Implementierung des ISO-Standards.
Solche weiteren Office-Pakete mit Office-Open-XML-Unterstützung sind SoftMaker Office 2010 (Import und Export von .docx, Import von .xlsx), Corel WordPerfect Office ab Version X4 (nur Import), ThinkFree Office ab Version 3.5, OpenOffice.org ab Version 3.0 und die OpenOffice.org-Abspaltungen NeoOffice und LibreOffice. Apple unterstützt Office-Open-XML-Dateien in seinem Officeprodukt iWork ab Version ’08 sowie in TextEdit ab Mac OS X 10.5.
Der Dokumentenbetrachter TextMaker Viewer 2010 kann Office-Open-XML-Dateien öffnen, anzeigen und ausdrucken. Außerdem erlaubt er die Wandlung dieser Dateien in das Portable Document Format (PDF). Die Tabellenkalkulation Gnumeric und die Textverarbeitung AbiWord bieten Import- und auch Exportfunktionen.
Im Juni 2008 wurde für Office Open XML ein SDK von Microsoft zur Verfügung gestellt. Es erlaubt die Bearbeitung, Anlage, Prüfung und Modifizierung der Daten. Das SDK 1.0 basiert auf .NET 3.0. Entgegen anderslautenden Meldungen wird für die Benutzung kein Officeprodukt benötigt.

## Kritik

Bei seiner Einführung wurde Office Open XML unter anderem von den OpenDocument-Befürwortern IBM und Sun Microsystems sowie von Mitgliedern der Open-Source-Bewegung kritisiert, die im GrokDoc-Wiki eine Liste von Einwänden gegen die Aufnahme von Office Open XML als ISO-Standard veröffentlicht haben.
Bemängelt wurde dabei der Umfang der Spezifikation mit über 6000 Seiten. Kritiker gingen davon aus, dass nur Microsoft die Spezifikation in vollem Umfang umsetzen könnte, während es für Hersteller von Konkurrenzsoftware praktisch unmöglich wäre, das Dateiformat vollständig in ihre Anwendungen zu implementieren.
Darüber hinaus verwendet Office Open XML nicht die W3C-Empfehlungen MathML für die Formeldarstellung oder SVG für die Darstellung von Vektorgrafiken, sondern speichert diese Elemente in von Microsoft entwickelten Formaten.
Zudem widerspreche die Norm einigen ISO-Normen, beispielsweise der Norm für die Darstellung von Datum und Uhrzeit oder der Norm für die Abkürzung von Bezeichnungen von Sprachen. Zudem wurde angeführt, dass Office Open XML als Ganzes einer bestehenden ISO-Norm widersprechen könnte, nämlich der Norm ISO/IEC 26300:2006 (OpenDocument).
Microsoft soll gemäß einem Bericht der Computer Weekly Druck auf den britischen Minister David Willetts ausgeübt haben, um den Einsatz des konkurrierenden OpenDocument-Formats zu verhindern.