Nejčastěji kladené otázky/Obecné/045
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
LibreOffice a XML
Nepochybně jste často slyšeli o XML, slyšeli jste, že formát souborů LibreOffice je XML, ale co to přesně je a hlavně co to znamená, co to vlastně XML je?
Co je XML?
Tato zkratka znamená eXtensible Markup Language.
XML patří do třídy metajazyků, je to vlastně podmnožina SGML. Dobře, co je to SGML (Standard Generalized Markup Language)? Je to jazyk, který umožňuje vytvářet strukturované a modulární dokumenty. Konkrétně to znamená, že můžete vytvořit dokument z tak různorodých dat, jako je zvuk, data z databáze nebo text a obrázky. Jazyk SGML byl definován pro širokou škálu aplikací a je třeba jej udržovat velmi dlouho. Tento jazyk je poměrně rozsáhlý a složitý, XML byl vytvořen za účelem zjednodušení SGML.
Zpočátku může být matoucí, že HTML je velmi podobné XML. Je to jazyk s otevíracími a uzavíracími značkami. Velký rozdíl je však v tom, že jazyk HTML byl definován pomocí značek, které popisují prezentaci, zatímco značky XML se zabývají obsahem. Ale ano, HTML je podmnožinou jazyka SGML, ale pouze pro zpracování dat na webu.
Pokud shrneme, že XML je jasný způsob (a nikoli programovací jazyk nebo nové HTML) pro strukturování, popis a výměnu dat. Obsah a uspořádání jsou odděleny tak, aby umožňovaly výměnu. Obsah lze pak znovu použít v jiných formulářích nebo jiných médiích. Data mohou být nejrůznějšího druhu: chemické vzorce, finanční data, hudební data, text ...
Příklad obsahu xml dokumentu LibreOffice :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE office:document-meta PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "office.dtd">
<office:meta>
<meta:generator>LibreOffice/3.3$Win32 LibreOffice_project/330m18$Build-4</meta:generator>
<meta:initial-creator>Sophie Gautier</meta:initial-creator>
<meta:creation-date>2011-01-12T19:07:36</meta:creation-date>
<meta:document-statistic meta:table-count="0" meta:image-count="31" meta:object-count="0" meta:page-count="17" meta:paragraph-count="213"
meta:word-count="2647" meta:character-count="16353"/>
</office:meta>
Vidíte, že tagy <> odlišují obsah dokumentu. Otevřené značky musí být vždy uzavřeny:
<office:meta>
bude dokončeno do
</office: meta>
Abychom do dokumentu přidali informace, přiřadíme mu atributy, za nimiž vždy následuje hodnota meta:page-count="17"
. Atribut meta:page-count
má hodnotu "17"
(dokument má 17 stránek). Můžeme také psát komentáře takto:
Proč XML?
Pokud se podíváte na fragment XML výše, je několik věcí, které vás překvapí:
- XML je čitelné pro vás, ale i pro stroj. To je jedna z jeho velkých výhod.
- Je to Unicode (Unicode: jedinečné číslo je definováno pro každý znak, bez ohledu na platformu, jazyk, program). To znamená, že může být uložen v různém kódování. Jaký je v tom rozdíl? Pravděpodobně víte, že dokumenty byly (stále jsou) kódovány v ASCII, ale to se týká pouze jedné abecedy a jednoho systému psaní. Fragment kódu ukazuje kódování UTF-8, které je podporováno mnoha abecedami.
- XML je objektově orientované: namísto rozčlenění dat do normalizovaných tabulek propojených vztahy popisuje objekty (konkrétní a abstraktní) modelováním jejich vlastností tak, jak jsou, díky čemuž jsou dokumenty XML srozumitelnější.
- A konečně, XML rozlišuje mezi obsahem a rozložením, přičemž rozložení dat poskytují jazyky třetích stran, jako jsou CSS, XSL ...
- XML generuje nízké náklady na softwarové komponenty, a proto je jeho úspěšná integrace do IT průmyslu.
XML v LibreOffice
A jak vidíte, že LibreOffice je XML? LibreOffice má nativní formát souborů .xml komprimovaný. To znamená, že soubory tvořící dokument LibreOffice jsou zapouzdřeny v archivu. Příklad: vezměte svůj oblíbený nástroj pro rozbalování (viz Jaký je formát LibreOffice?) a otevřete libovolný soubor LibreOffice. Zobrazí se kolekce různých souborů, z nichž některé mají příponu .xml.
Který modul LibreOffice používá XML?
Všechny moduly LibreOffice používají jako nativní formát souboru XML. Modul Math používá strukturu balíčku trochu odlišnou, ale uvnitř balíčku je nějaký xml: MathML je standard XML pro vzorce. Některé konfigurační soubory také používají XML. Tato struktura souborů tam bude vždy:
meta.xml
obsahuje informace o dokumentu (autor, datum poslední zálohy).- Soubor
styles.xml
obsahuje styly použité v dokumentu Content.xml
obsahuje hlavní obsah dokumentu (text, obrázky, grafika...)Settings.xml
, obvykle specifický pro aplikaci, obsahuje některé parametry, jako je zvolená tiskárna...META-INF/manifest.xml
obsahuje další informace o dalších souborech (jako je typ MIME nebo šifrování).
Obrázky jsou uloženy v nativním formátu uvnitř zip. Nyní chápete, proč soubory LibreOffice zabírají tak málo místa na vašem pevném disku!
Další informace o souborových formátech LibreOffice naleznete na webových stránkách http://xml.openoffice.org.
Všimněte si, že dokument XML nelze zobrazit tak, jak je, potřebuje transformační jazyk (XSLT) a formátovací jazyk pro objekty (XSL-FO), aby bylo možné správně zobrazit všechny informace (např. potřeba: pokud se váš dokument skládá z různých stran uspořádaných samostatně nebo pokud obsahuje tabulku s formátováním...)
DTD, XML schema, XSLT... co to je?
Definice typu dokumentu DTD (Document Type Definition)
DTD určuje, které elementy a atributy budou v dokumentu XML použity, a popisuje jeho strukturu a obsah. DTD může být interní pro dokument (obsahuje definice v samotném dokumentu) nebo externí (je umístěna v lokálním souboru nebo vyvolána pomocí adresy URL). Standard XML nepředepisuje DTD a o dokumentu XML hovoříme, pokud má platnou DTD, nebo o dokumentu XML well-formed, pokud ji neobsahuje (ale respektuje standard XML).
Příklad obsahu LibreOffice DTD
Vypište počáteční pisatele v tomto formuláři (s initial="true"). Initial Writers je termín z PDL (licence). Pokud některý z těchto autorů postoupil autorská práva někomu jinému, např. společnosti, pro kterou pracuje, použijte atribut copyright="...". a uveďte jméno držitele autorských práv. --> <!ELEMENT authors ( author+ ) > <!ELEMENT author (#PCDATA)> <!ATTLIST author id ID #REQUIRED initial CDATA #IMPLIED email CDATA #REQUIRED> <!--
XML Schema
Schéma rovněž definuje strukturu dokumentu XML, je však flexibilnější než DTD, pokud jde o definici typů prvků. K definici modelů využívá převzatou DTD. Schémata jsou předmětem specifikace W3C.
XSLT : transformace jazyka eXtensible Style Language
Jedná se o programovací jazyk pro transformaci dokumentů XML do jiných forem, jako je RTF, HTML nebo PDF atd.. Tento jazyk je deklarativní a neprocedurální (bez algoritmizace), což usnadňuje přístup k němu i lidem, kteří nejsou vývojáři. Sám je napsán v jazyce XML a lze jej reinterpretovat. XSLT totiž transformuje strom XML do pravidel modelů popisujících stylopis. Často je přirovnáván k CSS, protože stejně jako CSS vytváří taková pravidla, na pořadí výskytu těchto pravidel v dokumentu nezáleží, má také prioritu, kdy se může uplatnit více pravidel. Rozdíl je v tom, že pokud je CSS prázdné, neovlivní to vygenerovaný html dokument, prostě se ignoruje s tím, že je to jen rozvržení, zatímco XSLT vygeneruje prázdný dokument (ve skutečnosti to není úplně pravda, protože specifikace má definovaná vnitřní pravidla stále přítomná, takže dokument není nikdy skutečně prázdný :).
XPATH
Jedná se o deklarativní jazyk přidružený k XSLT, který umožňuje definovat umístění cest ve stromu XML.
XSL-FO : eXtensible Style Language for Formating Object
Jazyk pro definici obecné prezentace objektů (např. seznamů, tabulek ...), který se často používá pro výstup do PDF. Přichází po transformaci XSLT a umožňuje vizuální interpretaci zpracovávaných objektů.
OASIS
Oasis (Organisation for the Advancement of Structured Information Standard) je celosvětové konsorcium, které podporuje vývoj, sbližování a přijímání standardů pro e-business. Proto definuje standard XML. Tato definice vychází z formátů souborů LibreOffice, jsou otevřené a konzistentní se zveřejněnou DTD. Více informací naleznete zde: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office
Formát souborů LibreOffice je stejný jako formát OpenOffice.org a používají ho také Calligra, Google Docs a Zoho.