Otvorené formáty kancelárskych softvérov

Z Kiwiki
Verzia z 13:01, 11. marec 2010, ktorú vytvoril Lukaskrajci (diskusia | príspevky) (→‎Open Document Format)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Skočit na navigaci Skočit na vyhledávání

Office Open XML (OOXML)

S príchodom kancelárskeho balíka Microsoft Office 2007 zaviedol Microsoft do svojich programov nový formát ukladania súbor Office Open XML (OOXML). Takto uložené súbory majú oproti predchodcom z balíka Office 2003 príponu predĺženú o písmeno „x“ (docx, xlsx, pptx…) a úplne odlišnú vnútornú štruktúru. Písmeno „x“ značí použitie XML v súboroch popisujúcich dokument. Celý súbor tohto balíka je v skutočnosti množina XML súborov, ktoré sú vzájomne previazané. V každom XML súbore sú uložené iné informácie o dokumente a ak tieto informácie vhodne poskladáme, dostaneme výsledný dokument. Všetky súbory popisujúce dokument sú zabalené do jedného balíka a skomprimované technológiu ZIP. To znamená, že ak prepíšeme príponu súboru na *.zip a otvoríme tento súbor v ľubovoľnom programe na otváranie komprimovaných súborov (WinRAR, 7Zip, Total Commander...) uvidíme vnútornú štruktúru dokumentu OOXML.

Výhody ukladania do formátu OOXML:

  • Menšia veľkosť výsledného dokumentu vďaka komprimácii
  • Väčšia bezpečnosť
  • Menšia náchylnosť na poškodenie dokumentu
  • Väčšia kompatibilita a prenesitelnosť dokumentu

Vnútorná štruktúra súboru OOXML

Pre popísanie a vysvetlenie štruktúry sme si zvolili súbor tabuľkového procesora Microsoft Excel, ktorému sa budeme ďalej bližšie venovať. Po prepísaní prípony a otvorení súboru môžeme vidieť nasledovnú stromovú štruktúru:


Obrázok 2.1 Vnútorná štruktúra XLSX dokumentu

Táto štruktúra, ako aj názvy adresárov a súborov, musia byť presne také isté, ako na obrázku. Ak by sme túto štruktúru nejakým spôsobom narušili, program ktorý sa bude snažiť poskladať výsledný dokument, nebude môcť pristupovať k dátam z narušenej časti štruktúry.

Obsah jednotlivých adresárov a podadresárov

Koreňový adresár dokumentu obsahuje súbor [Content_types].xml, v tomto súbore sa nachádzajú záznamy o typoch všetkých častí dokumentu. Každá časť sa tu vyskytuje iba raz, ako unikátny záznam. Všetky časti dokumentu musia mať identifikovateľný typ, aby program, ktorý bude pracovať s dokumentom vedel, ako využiť danú časť pri zobrazovaní dokumentu. Tento súbor využíva špeciálne XML menné priestory pre popis jednotlivých typov častí dokumentu. Ukážka zadefinovania predvoleného typu súboru vo vnútri dokumentu:

<Default Extension="xml" ContentType="application/xml"/>

V koreňovom adresári sa ďalej nachádza adresár s názvom _RELS v tomto adresári je umiestnený súbor s názvom .rels tento súbor taktiež využíva špeciálne menné priestory a definuje vzťahy medzi hlavnými časťami dokumentu. Každý vzťah je tvorený tromi časťami informácie.

  • Unikátne identifikačné čislo v rámci dokumentu (Relationship ID)
  • Typ vzťahu (Relationship Type)
  • Ukazateľ na cieľ daného vzťahu

Ukážka zadefinovania vzťahu v súbore .rels:

<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml" />

Vo vnútronej štruktúre dokumentu môže byť viac súborov ktoré definujú vzťahy medzi časťami dokumentu, a vždy sú v danej časti dokumentu, v ktorej určujú vzťahy, uložené v adresári s názvom _RELS.

Ďalej nasleduje adresár s názvom „XL“ názov tohto adresára je jedinečný, pre každý typ dokumentu balíka Microsoft Office je iný a podľa neho môžeme spoznať o aký typ dokumentu sa jedná. V tomto adresári sú uložené hlavné XML súbory pre vytvorenie výsledného dokumentu. Môžeme vidieť že adresár „XL“ znovu obsahuje adresár „_RELS“ a v ňom súbor workbook.xml.rels. Tento súbor definuje vzťahy medzi jednotlivými časťami v adresári „XL“. Ďalej obsahuje adresár „THEME“ ktorý nie je povinný, ako aj súbor „theme1.xml“ ktorý sa v ňom nachádza. Ak ho dokument obsahuje tak tento súbor určuje niektoré vlastnosti dokumentu, ako fonty pre jednotlivé jazyky, farebné schémy a pod. ďalší v poradí je adresár „WORKSHEETS“, ktorý obsahuje pre každý hárok dokumentu jeden XML súbor. Tzn. že v našom prípade dokument obsahuje 3 hárky, čo je minimum ktoré Microsoft Excel vytvorí pri vytváraní dokumentu. V súboroch sheetx.xml je v XML štruktúre uložený obsah daného dokumentu (hodnoty buniek, vzorce a pod.). Tomuto súboru sa budem podrobnejšie venovať v ďalšej podkapitole. Ešte si stručne popíšeme ostatné súbory ktoré sa nachádzajú v adresári „XL“. Súbor calcChain.xml obsahuje zoznam všetkých buniek v dokumente, ktoré sú vypočítané podľa nejakého vzorca. Súbor sharedstrings.xml obsahuje zoznam všetkých textových reťazcov, obsiahnutých vo všetkých hárkoch daného dokumentu, každý textový reťazec sa tu nachádza iba raz, ako jedinečný záznam. Súbor styles.xml obsahuje ďalšie informácie o vzhľade dokumentu ako predvolený font, farebné schémy, veľkosti buniek a pod a súbor workbook.xml obsahuje základné informácie o celom dokumente, ako verzie programov ktorými bol dokument editovaný, pohľad na dokument (veľkosť okna) a jednotlivé hárky obsiahnuté v dokumente aj s identifikačnými číslami.

Detailný popis najdôležitejších súborov

Vnútornú štruktúru niektorých súborov vysvetlíme na nasledujúcom jednoduchom dokumente programu Microsoft Excel:


Obrázok 2.2 Jednoduchý dokument XLSX

Po rozbalení balíčka tohto dokumentu, a otvorení súboru sheet1.xml si ukážeme na príklade, ako sa dáta jednotlivých buniek ukladajú do tohto súboru:

Row2.jpg

Tento XML kód je vlastne celý druhý riadok dokumentu uložený podľa formátu OOXML. Môžeme vidieť že začiatok riadka sa definuje elementom <row>.

Atribút „r“ elementu označuje číselné poradie riadka, čo je v našom prípade 2. Atribút „spans“ označuje rozsah daného riadka čo je v našom prípade prvá až šiesta bunka v riadku (1:6). Ďalej si môžeme v hierarchii XML dokumentu všimnúť, že element <row> obsahuje práve 6 elementov <c> ktoré reprezentujú našich 6 buniek. Každý element <c> má atribút „r“ ktorý označuje index danej bunky (A2, B2, C2…) a atribút „s“ označuje index štýlu aplikovaného na bunku a v niektorých elementoch sa vyskytuje aj atribút “t” ktorý obsahuje označenie dátového typu uloženého v danej bunke. V riedku 2 sú 3 bunky obsahujúce text, preto majú aj práve 3 elementy <c> atribút „t“, ktorý má hodnotu „s“, ktorá značí že v daných bunkách sa nachádzajú textové reťazce zo zoznamu sharedstrings.xml. Dátový typ bunky môže byť aj iný napr: boolean(b), error(e) atď. Ďalej každý element obsahuje element <v>

v ktorom je uložená buď číselná hodnota zapísaná priamo v bunke, alebo index daného textového reťazca uloženého v súbore „sharedstrings.xml“. Ak je hodnota bunky vypočítaná podľa vzorca, tento vzorec je uložený v elemente <f>, ako je možné vidieť pri bunke D2.

Teraz si ukážeme štruktúru spomínaného súboru sharedstrings.xml:

Shared strings.jpg

Ako môžeme vidieť, sú tu za sebou v elementoch uložené všetky textové reťazce obsiahnuté vo vzorovom dokumente. Tak ako idú za sebou sú im pridelené indexy pomocou ktorých sa na ne odkazuje súbor sheet1.xml To znamená že prvý reťazec „a“ má index 0. Indexovanie totižto začína od nuly. Tento popis je dostačujúci pre vybratie potrebných informácii z balíka OOXML a poskladanie nie úplne presnej, ale postačujúcej kópie dokumentu.

Vnútorná štruktúra súboru ODF

ODF funguje na rovnakom princípe ako OOXML takže uložený súbor s príponou *.ods si môžeme bez problémov otvoriť v akomkoľvek prehliadači komprimovaných archívov, a uvidíme nasledovnú štruktúru adresárov a súborov:

Obrázok 2.4 Stromová štruktúra ODS dokumentu

Každý ODF dokument by mal obsahovať adresár s názvom META-INF a v ňom súbor manifest.xml. Je to akýsi základný súbor každého ODF dokumentu ktorý obsahuje zoznam všetkých súborov obsiahnutých v balíčku, okrem tých ktoré sú výslovne vyňaté z manifestu. Ďalej popisuje MIME typy médií všetkých súborov obsiahnutých v dokumente a ak sú niektoré súbory v balíku šifrované, obsahuje aj dáta potrebné na rozšifrovanie daného súboru. Adresár THUMBNAILS, može obsahovať náhľad na prvú stranu dokumentu v PNG formáte, za predpokladu že ho aplikácia ktorá vytvárala dokument priložila. Táto časť nie je povinná. Súbor styles.xml obsahuje všetky nastavenia štýlu ktoré je možné použiť v dokumente a súbor settings.xml obsahuje všetky nastavenia ktoré sa majú v aplikácia ktorá bude otvárať dokument vykonať pred otvorením, napr. hodnota priblíženia pohľadu na dokument (zoom) v percentách a pod. V súbore mimetype je uložená informácia o aký typ dokumentu sa jedná. V našom prípade je v súbore mimetype uložený nasledovný reťazec: application/vnd.oasis.opendocument.spreadsheet

Toto značí že sa jedná o dokument tabuľkového procesora, uloženého vo formáte ODF. Súbor meta.xml zasa obsahuje informácie o tvorcovi dokumentu, dátume a čase vytvorenia, verzii programu na ktorej bol dokument vytvorený, celkový počet buniek dokumentu, počet editácií atď. Nakoniec tu máme súbor content.xml ktorý obsahuje všetky dáta z buniek, z čoho vyplýva že je pre nás najdôležitejší a tak si popíšeme aj jeho vnútornú štruktúru.

Detailný popis najdôležitejšieho súboru

Omg.jpg

Znova si popíšeme štruktúru jedného riadka dokumentu. Každý riadok začína elementom <table:table-row> tento element má atribút s názvom table:style-name ktorý definuje akým štýlom bude celý riadok formátovaný. Názvy a parametre štýlov sú určené na začiatku súboru content.xml. Element <table:table-row> obsahuje 6 elementov s názvom <table:table-cell>, ktoré reprezentujú 6 buniek v riadku. Elementy majú atribúty office:value-type v ktorom je uložený dátový typ danej bunky a office:value v ktorom uložená číselná hodnota danej bunky, ale iba za predpokladu že bunka obsahuje číslo. Ak bunka obsahuje reťazec alebo iný dátový typ, tento element sa vynecháva. Ak bola hodnota bunky vypočítaná podľa vzorca, tento vzorec sa ukladá do atribútu s názvom table:formula. Každý s elementov <table:table-cell> obsahuje ešte element <text:p> v ktorom je uložená hodnota bunky ako textový reťazec. Podľa tohto popisu je možné napísať program ktorý vyberie z dokumentu potrebné informácie a vytvorí výsledný dokument s dostatočnou presnosťou.