Office Open XML
Office Open XML (OOXML) je specifikace pro souborový formát na ukládání dokumentů kancelářských balíků jako textových dokumentů, tabulek či prezentací. Formát byl navržen společností Microsoft a poprvé byl použit v Microsoft Office 2007. Finální specifikace byla vytvořena pod hlavičkou sdružením ECMA ve skupině TC45, do které například patří Apple, Barclays Capital, BP, Britská knihovna, Essilor, Intel, Microsoft, NextPage, Novell, Statoil, Toshiba a Knihovna kongresu USA pod číslem ECMA-376.
Formát Office Open XML je ZIP soubor, který v sobě obsahuje XML a další potřebné soubory. Výsledkem jsou tak menší soubory než ty binární, které byly vytvářeny předchozími verzemi Microsoft Office. Podle vyjádření společnosti Microsoft je hlavním cílem formátu zpětná kompatibilita s existujícími dokumenty a plná podpora jejich rozšiřujících vlastností.
Dokumentace
Seznam oficiální dokumentace ke specifikaci:
- Part 1: Fundamentals - základní úvod do částí specifikace
- Part 2: Open Packaging Convention - podrobný popis vnitřní struktury dokumentů, popis zabezpečení dokumentů
- Part 3: Primer - v podstatě rozšířený a rozvedený dokument Part 1: Fundamentals, tento dokument je doporučován jako výchozí pro seznámení s OOXML
- Part 4: Markup Language Reference - velmi podrobná referenční příručka ke všem elementům specifikace, včetně ukázek a použití
- Part 5: Markup Compatibility and Extensibility - informace jak rozšiřovat stávající specifikaci
Části specifikace
Specifikace je rozdělena do několika částí.
- Open Packaging Conventions (OPC) – popisuje vnitřní strukturu souborů
- WordProcessingML – popisuje XML pro textové procesory
- SpreadsheetML – popisuje XML pro tabulkové kalkulátory
- PresentationML – popisuje XML pro prezentace
- DrawingML – popisuje XML pro grafické elementy dokumentů
- Podpůrné „ML“ – sada XML pro velmi specifické úkoly, např. matematické vzorce
- Custom XML - definuje způsob jak vkládat uživatelská XML do dokumentu a propojavat je s obsahem
Open Packaging Conventions (OPC)
Popisuje vnitřní strukturu ZIP archivu, který obsahuje dokument. Základním prvkem jsou soubory s příponou .rels, které udržují informace o vztazích mezi ostatními soubory. Příkladem může být vztah mezi sešitem v tabulkovém kalkulátoru a listy, které sdružuje. Pomocí OPC lze vytvářet i vlastní formáty, protože se jedná o obecnou specifikaci. K obsahu dokumentu lze přistupovat dvěma způsoby – s využitím OPC nebo přes adresářovou strukturu archivu.
WordProcessingML
Struktura vychází ze schématu body – paragraph – run. Tělo dokumentu je děleno na odstavce (text, obrázek, tabulka, …) a tyto části jsou dělené na tzv. runs. Zjednodušeně řečeno, run nastavuje formátování informace. Všechny textové informace, které se mají zobrazit uživateli, jsou umístěny vždy v elementu <w:t>.
SpreadsheetML
Dokument tabulkového kalkulátoru se nazývá sešit (workbook) a skládá se s listů (sheet). Sešit i listy jsou umístěny v samostatných souborech, typicky workbook.xml, sheet1.xml, sheet2.xml, … Velmi specifické je ukládání textové informace v tabulkách. Existují dva způsoby – inlinestring nebo sharedstring. Inlinestring ukládá informace přímo v buňce tabulky. Tento způsob je v podstatě identický s html. Sharedstring ukládá texty do samostatného souboru, který je sdílený pro všechny listy a každý textový obsah buňky je v něm unikátní. Buňky se pak odkazují na hodnotu v tomto seznamu.
PresentationML
Obsah dokumentu s prezentací se dělí na snímky (slide), jejich obsah a animace. Každý snímek je opět uložen v samostatném XML souboru. To samé platí např. i pro poznámky ke snímkům.
DrawingML
DrawingML popisuje vektorovou grafiku, která se používá v rámci WordProcessingML, SpreadsheetML a PresentationML. Kromě DrawingML se pro vektorovou grafiku používá i VML, které má být nahrazeno právě DrawingML.
Používané přípony souborů
- docx - dokumenty pro textové procesory
- xlsx - dokumenty pro tabulkové kalkulátory
- pptx - dokumenty s prezentací
ISO/IEC 29500
Během standardizace u ISO došlo k několika podstatným změnám ve standardu ECMA-376 na základě požadavků národních standardizačních institutů. U nás se touto problematikou zabývá ČNI. Tou nejdůležitější změnou je definování dvou typů dokumentů, podobně jako u XHTML, Strict a Transitional. Verze Strict neobsahuje žádné elementy, které jsou zatížené zpětnou kompatibilitou směrem ke starším dokumentovým formátům. Verze Transitional pak může obsahovat elementy, které jsou pro zpětnou kompatibilitu nezbytné. Tato verze byla schválena jako standard ISO pod číslem ISO/IEC 29500.
Kritika
Hlavní kritikou Office Open XML formátu je, že již existuje formát OpenDocument, který pokrývá stejnou oblast. Dále je Microsoftu vyčítáno, že jeho formát vychází z uzavřených formátů pro Microsoft Office a není tak neutrální. Vedlejším efektem je pak nekompatibilita některých atributů (např. formátu data a času či barevných kódů) s existujícími standardy ISO. Vedle toho existují další specifické problémy:
- Používání DrawingML a VML místo SVG, které je doporučováno W3C.
- Používání Office Math ML místo MathML, které je doporučováno W3C.
- Používání makro-jazyka, který však není ve standardu definován a je ponechán čistě na aplikaci.
- Délka standardu je příliš dlouhá (6546 stran), zatímco specifikace ODF má jen 867 stran.
Související články
- Open Document Format (celým jménem OASIS Open Document Format for Office Applications, dále jen ODF) - je konkurenční otevřený formát dokumentů za kterým stojí širší portfolio výrobců software. Byl vyvinut skupinou „Open Office XML“ v rámci organizace OASIS. Formát je rovněž postaven na bázi XML, a jeho předností je skutečná otevřenost, nikoliv jen otevřenost v názvu. ODF byl přijat jako ISO standard ISO/IEC 26300.
Externí odkazy
- Přišel mi docx, jak ho mám otevřít ?
- Server o Office Open XML
- Blog Briana Jonese o Office Open XML
- Stránky Ecma International
- Analýza problémů návrhu standardu OOXML
- Připomínky ČNI ke standardizaci OOXML
- Ukázky pro vývojáře v češtině
- Knihovna pro generování SpreadsheetML pomocí PHP
- Knihovna pro generování SpreadsheetML pomocí .NET
- Editor vazeb formulářových polí na Custom XML
- Open XML Format SDK