<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lukaskrajci</id>
	<title>Kiwiki - Príspevky používateľa [sk]</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lukaskrajci"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Lukaskrajci"/>
	<updated>2026-04-16T17:19:59Z</updated>
	<subtitle>Príspevky používateľa</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Diskusia:%C5%A0%C3%ADrkov%C3%BD_modul%C3%A1tor_PWM&amp;diff=5589</id>
		<title>Diskusia:Šírkový modulátor PWM</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Diskusia:%C5%A0%C3%ADrkov%C3%BD_modul%C3%A1tor_PWM&amp;diff=5589"/>
		<updated>2010-06-23T06:28:40Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: Odstránený obsah stránky&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=%C5%A0%C3%ADrkov%C3%BD_modul%C3%A1tor_PWM&amp;diff=5525</id>
		<title>Šírkový modulátor PWM</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=%C5%A0%C3%ADrkov%C3%BD_modul%C3%A1tor_PWM&amp;diff=5525"/>
		<updated>2010-06-22T20:41:51Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Šírkový modulátor signálu (PWM)==&lt;br /&gt;
'''Vlastnosti'''&lt;br /&gt;
&lt;br /&gt;
* 8 a 16 bitový univerzálny šírkový modulator používajúci jeden alebo dva PSoC bloky.&lt;br /&gt;
* Frekvencia hodinového signal do 48 MHz.&lt;br /&gt;
* Automatické znovunačítanie šírky pulzu, pri každom cykle.&lt;br /&gt;
* Programovateľná šírka impulzu.&lt;br /&gt;
* Vstup povolujúci/zakazujúci nepretržitý beh čítača.&lt;br /&gt;
* Možnosť vyvolať prerušenie na nábežnú hranu výstupu.&lt;br /&gt;
&lt;br /&gt;
8 a 16 bitové PWM bloky sú šírkové modulátory s programovateľnou periódou a šírkou impulzu. Hodinový signal a povolovacie signály je možné privádzať z viacerých zdrojov. Výstupný signál je možné vyviesť na jeden konkrétny pin alebo na vnútornú zbernicu, ktorú využívajú ostatné používateľské moduly. Vyvolanie preušenia môže byť naprogramované na nábežnú hranu výstupu alebo keď čítač dosiahne konečný stav. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:1.jpg|center|framed|Obr.1 Bloková schema PWM bloku, dátová šírka n = 8 alebo 16 bitov]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Popis Funkcionality==&lt;br /&gt;
&lt;br /&gt;
Používateľský modul PWM zaberá jeden až dva digitálne PSoC bloky, každý prispieva ôsmimi bitmi k celkovému rozlíšeniu. Na vytvorenie 16bitového modulátora je potrebné spojiť dva za sebou idúce bloky takže tie medzi sebou zdielajú svoje parametre a sú medzi sebou prepojené. Taktiež sú zlúčené countre, perióda a porovávacie registre (dátové registre DR0, DR1 a DR2). Toto všetko je potrebné pre dosiahnutie 16bitového rozlíšenia. &lt;br /&gt;
&lt;br /&gt;
PWM API poskytuje funkcie ktoré je možné volať pomocou C a assemblera na zastevenie alebo spustenie countera a na čítanie a zápis rôznych dátových registrov. Hodnoty dátových registrov môžu byť nastavené taktiež pomocou Device editora. Po štarte cyklu sa s každou nábežnou hranou pri ktorej je nastavený povolovací signál hodinového cyklu, dekrementuje register počítadla. Register počítadla je obnovený na hodnotu z registra periódy keď dosiahne terminal count (hodnotu 0). &lt;br /&gt;
&lt;br /&gt;
Register periódy môže byť modifikovaný novou hodnotou v akomkoľvek okamihu. Ak je PWM zastavené, zapisovanie do registra periódy zmení taktiež hodnotu registra počítadla. Ak je PWM v chode, zapisovanie do registra periódy nezmení hodnotu v registri počítadla, pokiaľ sa nenačíta PWM odznova pomocou terminal countu. Pretože terminal count nastane ak je počítadlo na nule, perióda výstupného signálu je o jedna väčšia ako hodnota uložená v registry periódy. Nasledujúce rovnice hovoria o výstupe na základe vstupného hodinového signálu a hodnoty v registry periódy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| T&amp;lt;sub&amp;gt;''OUT''&amp;lt;/sub&amp;gt; = (PeriodValue+1)/F&amp;lt;sub&amp;gt;''CLOCK''&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| '''  Rovnica 1'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| F&amp;lt;sub&amp;gt;''OUT''&amp;lt;/sub&amp;gt; = F&amp;lt;sub&amp;gt;''CLOCK''&amp;lt;/sub&amp;gt;/(PeriodValue+1)&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| '''  Rovnica 2'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Kde ''F&amp;lt;sub&amp;gt;OUT''&amp;lt;/sub&amp;gt; je výstupná frekvencia PWM, ''T&amp;lt;sub&amp;gt;OUT''&amp;lt;/sub&amp;gt; je výstupná perióda PWM, ''F&amp;lt;sub&amp;gt;CLOCK''&amp;lt;/sub&amp;gt; je frekvencia vstupného hodinového impulzu a ''PeriodValue'' je zadaná hodnota požadovanej periódy.&lt;br /&gt;
&lt;br /&gt;
PWM udržiava svoj výstup na hodnote low ak je zastavený. Počas behu komparátor kontroluje cyklus výstupného signálu. Počas každého hodinového cyklu, tento komparátor porovnáva hodnoty počítadla a registra šírky pulzu, vykonáva &amp;quot;menší&amp;quot; alebo &amp;quot;menší alebo rovný&amp;quot; test na základe možnosti vybratej v Device Editore. PWM udržiava hodnotu “high” porovnania na nábežnú hranu periódy v ktorej je vykonávané porovnanie. Pomer medzi šírkou pulzu a periódou určuje operačný cyklus výstupného signálu. Pomer operačného cyklu môže byť vypočítaný podľa tejto rovnice: &lt;br /&gt;
&lt;br /&gt;
Pre &amp;lt;nowiki&amp;gt;Šírka pulzu &amp;lt; &amp;lt;/nowiki&amp;gt;Hodnota periódy &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| [[Súbor:2.jpg|center|framed|]]&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| '''Rovnica 3'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Pre Šírka pulzu &amp;gt;= Hodnota periódy&lt;br /&gt;
&lt;br /&gt;
Operačný cyklus = 100% &lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka sumarizuje niektoré špeciálne stavy výst. signalu na základe periódy, šírky pulzu a porovnávacej operácie. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Hodnota registra periódy '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Typ porovnávania '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Hodnota registra šírky pulzu '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Pomer '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;Nezáleží &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;gt; 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;≤&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt; &amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;0.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;gt; 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;≤&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1/(Perioda+1) &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;gt; 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt; &amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;0.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda =šírka pulzu &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;≤&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda= šírka pulzu&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda= šírka pulzu&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt; &amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda= šírka pulzu&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;Perioda/(Perioda+1) &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| PulseWidth Value &amp;gt; Period &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;Nezáleží &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| PulseWidth Value &amp;gt; Period &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Hodnota registra šírky pulzu môže byť nastavená pomocou Device Editora alebo počas chodu pomocou API. Nie je poskytnutá žiadna možnosť bufferovania registra šírky pulzu.Bufferuje sa iba register počítadla pred dopočítaním. Preto sa zmeny vykonané v registry šírky pulzu prejavia na porovnávacom výstupe až v ďaľšom hodinovom cykle. Tímto sa dajú vytvárať periódy z viacerími pulzami. &lt;br /&gt;
&lt;br /&gt;
Prerušenie je možné naprogramovať tak aby sa vyvolalo na dopočítanie countera alebo keĎ sa porovnanie stane pravdivým. Prerušenie vyvolané na základe komparátora nastane pri nábežnej hrane výst. signálu a preuršenie vyvolané na základe dopočítani countera sa vyvolá pol hodinového impulzu pred dobežnou hranou výstupu. Tieto možnosti sa dajú nastaviť v Device Editore. Povolenie alebo zakázanie prerušenia sa nastavuje pomocou APi countera. Globálne prerušenie musí byť povolené pred tým ako sa spustí prerušenie od countera. &lt;br /&gt;
&lt;br /&gt;
Je potrebné dávať pozor pri modifikovaní registra šírky pulzu, pretože spolu s aktuálnou hodnotou čítača určuje výstupný stav PWM.Aby sme predišli možným defektom vo výstupnom signále, register šírky pulzu musí byť modifikovaný až po detekovaní dopočítania pomocou prerušenia. &lt;br /&gt;
&lt;br /&gt;
Pre aplikácie ktoré si vyžadujú rýchlejšie aktualizovanie cyklu, môže byť PWM vyvedené na pin, kde je výstup neustále sledovaný. A može byť aktualizovaný hneď ako sa zaznamená zmena signálu z high na low alebo opačne. Acquiring the Count register value must be done very carefully. Reading the Count register causes its contents to latch into the PulseWidth register. This causes the output duty cycle to change. &lt;br /&gt;
&lt;br /&gt;
Ak je potrebné čítať register počítdla za chodu, je možné využiť funkciu z API s názvom ReadCounter(). Táto funkcia dočasne zastaví hodinový signál, uloží register šírky pulzu, načíta počítadlo, obnoví register šírky pulzu a nakoniec znova pustí hodinový signál.&lt;br /&gt;
&lt;br /&gt;
'''Časovanie'''&lt;br /&gt;
&lt;br /&gt;
[[Súbor:3.jpg|center|framed|Obr.2 Časový diagram PWM]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jednosmerné a striedavé elektrické charakteristiky'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Parameter '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Typicky '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Limit '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Jednotky'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Podmienky a poznámky '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| FOutput&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;-- &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;24&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;MHz &amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 5.0V and 48 MHz input clock &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| FInput&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;-- &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;48 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;MHz &amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 5.0V and 48 MHz Input clock &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
'''Poznámky k el. charakteristikám'''&lt;br /&gt;
&lt;br /&gt;
# Najrýchlejší hodinový signal ktorý je možné použiť, je 24 MHz pri 3.3 V.&lt;br /&gt;
# Ak je výstup vedený cez globálne zbernice, potom je hodnota výstupnej frekvencie maximálne 5 MHz.&lt;br /&gt;
&lt;br /&gt;
'''Umiestnenie'''&lt;br /&gt;
&lt;br /&gt;
PWM zeberá jeden digitálny blok pri každom 8 bitovom rozlíšení. Ak je použitých viac ako jeden blok, všetky sú umiestnené za sebou v Device Editore v poradí zvyšovania čísla jednotky os posledného byteu (LSB) k prvému byteu (the MSB). Každému bloku je priradené symbolické meno zobrazené v device editore počas a po umiestnení. API priradí menám všetkých registrov uživateľské mená a mená blokov pre priamy prístup do PWM registrov pomocou API. Mená blokov pužité pri rôznych presnostiach sú v nasledujúcej tabuľke.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''PSoC Bloky'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''8-Bit PWM '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''16-Bit PWM '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;PWM8 &amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;PWM16_LSB &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;2 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;-- &amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;PWM16_MSB &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
==Parametre, použité výrazy a možnosti nastavenia==&lt;br /&gt;
&lt;br /&gt;
'''Clock '''&lt;br /&gt;
&lt;br /&gt;
Hodinový signále je možné brať z jedného z 16 zdrojov. Tieto zdroje obsahujú 48 MHz oscilátor (pri 5.0V), nižšie frekvencie (VC1, VC2, a VC3) sú delené z 24 MHz systémových hodín, ostatných PSoC blokov, a externých vstupov prepojených cez globálne vstupy a výstupy. &lt;br /&gt;
&lt;br /&gt;
'''Enable '''&lt;br /&gt;
&lt;br /&gt;
Povolovací parameter je vyberaný z jedného z 16 zdrojov. Hodnota high signal enable zapína počítadlo, zatialčo hodnota low ho vypína pokial sa counter resetuje. Výstup nie je ovplivnený stavom enable signálu. &lt;br /&gt;
&lt;br /&gt;
'''CompareOut '''&lt;br /&gt;
&lt;br /&gt;
Porovnávací výstup je možné vypnúť (bez ovplivnenia operácií prerušenia) alebo pripojiť na hociktorú výstupnú zbernicu. Vždy je dostupný ako vstup pre ďaľší nadradený digitalny PSoC blok. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''TerminalCountOut '''&lt;br /&gt;
&lt;br /&gt;
Je externý výstup počítadla. Tento parameter môže byť zakázaný, alebo pripojený na hociktorý rad výstupných zberníc. &lt;br /&gt;
&lt;br /&gt;
'''Period '''&lt;br /&gt;
&lt;br /&gt;
Tento parameter nastavuje period počítadla. Povolené hodnoty pre PWM8 sú medzi 0 - 255. Allowed Povolené hodnoty pre PWM16 sú medzi 0 - 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt;-1. Perioda je nahraná do registra periody. Efektívna hodnota výstupnej periody pre PWM16 je period count + 1. Hodnotu je možné editovať pomocou API. &lt;br /&gt;
&lt;br /&gt;
'''PulseWidth '''&lt;br /&gt;
&lt;br /&gt;
Nastauje šírku pulzu výstupného signálu. Povolené hodnoty sú medzi 0 a hodnotou periody. Hodnotu je možné editovať pomocou API.&lt;br /&gt;
&lt;br /&gt;
'''InterruptType '''&lt;br /&gt;
&lt;br /&gt;
Tento parameter určuje spôsob vyvolania prerušenia. Prerušenie môže nastať na nábežnú hranu signal, alebo ak dopočíta register počítadla do konca. Prerušenie môže vyvolať viacero nezávyslích registrov. &lt;br /&gt;
&lt;br /&gt;
'''CompareType '''&lt;br /&gt;
&lt;br /&gt;
Tento parameter určuje typ porovnávacej funkcie &amp;quot;Menší ako&amp;quot; alebo &amp;quot;Menší alebo rovný ako&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''InvertEnable '''&lt;br /&gt;
&lt;br /&gt;
Tento parameter mení spôsob akým blok reaguje na povolovací signál. Ak je hodnota nastavená na &amp;quot;Normal&amp;quot; ,povolovací vstup reaguje na high úroveň signálu. Ak však nastavíme hodnotu na &amp;quot;Invert&amp;quot; vstup reaguje na hodnotu low.. &lt;br /&gt;
&lt;br /&gt;
'''Interrupt Generation Control '''&lt;br /&gt;
&lt;br /&gt;
Nasledujúce 2 parametre “InterruptAPI” a “IntDispatchMode” sú prístupné iba ak povolíme ”Interrupt Generation Control” v PSoC Designeri. Toto je možné nájsť v menu: Project &amp;gt;&amp;gt; Settings... &amp;gt;&amp;gt; Device Editor. &lt;br /&gt;
&lt;br /&gt;
'''Application Programming Interface '''&lt;br /&gt;
&lt;br /&gt;
Application Programming Interface (API) funkcie sú súčasťou uživateľského modulu pre designer na spoluprácu s modulom na vyššej úrovni. Tieto sekcie špecifikujú interface pre každú fukciu spolu s konštantami a priloženými súbormi.&lt;br /&gt;
&lt;br /&gt;
==Použitá literatúra==&lt;br /&gt;
&lt;br /&gt;
CYPRESS, Semiconductor Corporation. PSoC Programmable System-on-Chip : Technical Reference Manual (TRM). San Jose, USA , c2008. 572 s. Document No. 001-14463 Rev. *C. Dostupný z WWW: &amp;lt;[http://www.cypress.com]&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:3.jpg&amp;diff=5520</id>
		<title>Súbor:3.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:3.jpg&amp;diff=5520"/>
		<updated>2010-06-22T20:25:10Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:1.jpg&amp;diff=5514</id>
		<title>Súbor:1.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:1.jpg&amp;diff=5514"/>
		<updated>2010-06-22T20:08:18Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=%C5%A0%C3%ADrkov%C3%BD_modul%C3%A1tor_PWM&amp;diff=5513</id>
		<title>Šírkový modulátor PWM</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=%C5%A0%C3%ADrkov%C3%BD_modul%C3%A1tor_PWM&amp;diff=5513"/>
		<updated>2010-06-22T19:57:20Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#09367a;border:none;padding:0.079cm;&amp;quot;| '''Šírkový modulátor signálu (PWM) '''[[Image:]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#09367a;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
'''Vlastnosti'''&lt;br /&gt;
&lt;br /&gt;
* 8 a 16 bitový univerzálny šírkový modulator používajúci jeden alebo dva PSoC bloky.&lt;br /&gt;
* Frekvencia hodinového signal do 48 MHz.&lt;br /&gt;
* Automatické znovunačítanie šírky pulzu, pri každom cykle.&lt;br /&gt;
* Programovateľná šírka impulzu.&lt;br /&gt;
* Vstup povolujúci/zakazujúci nepretržitý beh čítača.&lt;br /&gt;
* Možnosť vyvolať prerušenie na nábežnú hranu výstupu.&lt;br /&gt;
&lt;br /&gt;
8 a 16 bitové PWM bloky sú šírkové modulátory s programovateľnou periódou a šírkou impulzu. Hodinový signal a povolovacie signály je možné privádzať z viacerých zdrojov. Výstupný signál je možné vyviesť na jeden konkrétny pin alebo na vnútornú zbernicu, ktorú využívajú ostatné používateľské moduly. Vyvolanie preušenia môže byť naprogramované na nábežnú hranu výstupu alebo keď čítač dosiahne konečný stav. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:1.jpg|center|framed|Obr.1 Bloková schema PWM bloku, dátová šírka n = 8 alebo 16 bitov]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Bloková schema PWM bloku, dátová šírka n = 8 alebo 16 bitov'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Popis Funkcionality'''&lt;br /&gt;
&lt;br /&gt;
Používateľský modul PWM zaberá jeden až dva digitálne PSoC bloky, každý prispieva ôsmimi bitmi k celkovému rozlíšeniu. Na vytvorenie 16bitového modulátora je potrebné spojiť dva za sebou idúce bloky takže tie medzi sebou zdielajú svoje parametre a sú medzi sebou prepojené. Taktiež sú zlúčené countre, perióda a porovávacie registre (dátové registre DR0, DR1 a DR2). Toto všetko je potrebné pre dosiahnutie 16bitového rozlíšenia. &lt;br /&gt;
&lt;br /&gt;
PWM API poskytuje funkcie ktoré je možné volať pomocou C a assemblera na zastevenie alebo spustenie countera a na čítanie a zápis rôznych dátových registrov. Hodnoty dátových registrov môžu byť nastavené taktiež pomocou Device editora. Po štarte cyklu sa s každou nábežnou hranou pri ktorej je nastavený povolovací signál hodinového cyklu, dekrementuje register počítadla. Register počítadla je obnovený na hodnotu z registra periódy keď dosiahne terminal count (hodnotu 0). &lt;br /&gt;
&lt;br /&gt;
Register periódy môže byť modifikovaný novou hodnotou v akomkoľvek okamihu. Ak je PWM zastavené, zapisovanie do registra periódy zmení taktiež hodnotu registra počítadla. Ak je PWM v chode, zapisovanie do registra periódy nezmení hodnotu v registri počítadla, pokiaľ sa nenačíta PWM odznova pomocou terminal countu. Pretože terminal count nastane ak je počítadlo na nule, perióda výstupného signálu je o jedna väčšia ako hodnota uložená v registry periódy. Nasledujúce rovnice hovoria o výstupe na základe vstupného hodinového signálu a hodnoty v registry periódy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| T&amp;lt;sub&amp;gt;''OUT''&amp;lt;/sub&amp;gt; = (PeriodValue+1)/F&amp;lt;sub&amp;gt;''CLOCK''&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| '''  Rovnica 1'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| F&amp;lt;sub&amp;gt;''OUT''&amp;lt;/sub&amp;gt; = F&amp;lt;sub&amp;gt;''CLOCK''&amp;lt;/sub&amp;gt;/(PeriodValue+1)&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| '''  Rovnica 2'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Kde ''F&amp;lt;sub&amp;gt;OUT''&amp;lt;/sub&amp;gt; je výstupná frekvencia PWM, ''T&amp;lt;sub&amp;gt;OUT''&amp;lt;/sub&amp;gt; je výstupná perióda PWM, ''F&amp;lt;sub&amp;gt;CLOCK''&amp;lt;/sub&amp;gt; je frekvencia vstupného hodinového impulzu a ''PeriodValue'' je zadaná hodnota požadovanej periódy.&lt;br /&gt;
&lt;br /&gt;
PWM udržiava svoj výstup na hodnote low ak je zastavený. Počas behu komparátor kontroluje cyklus výstupného signálu. Počas každého hodinového cyklu, tento komparátor porovnáva hodnoty počítadla a registra šírky pulzu, vykonáva &amp;quot;menší&amp;quot; alebo &amp;quot;menší alebo rovný&amp;quot; test na základe možnosti vybratej v Device Editore. PWM udržiava hodnotu “high” porovnania na nábežnú hranu periódy v ktorej je vykonávané porovnanie. Pomer medzi šírkou pulzu a periódou určuje operačný cyklus výstupného signálu. Pomer operačného cyklu môže byť vypočítaný podľa tejto rovnice: &lt;br /&gt;
&lt;br /&gt;
Pre &amp;lt;nowiki&amp;gt;Šírka pulzu &amp;lt; &amp;lt;/nowiki&amp;gt;Hodnota periódy &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| [[Image:]]&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| '''Rovnica 3'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Pre Šírka pulzu &amp;gt;= Hodnota periódy&lt;br /&gt;
&lt;br /&gt;
Operačný cyklus = 100% &lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka sumarizuje niektoré špeciálne stavy výst. signalu na základe periódy, šírky pulzu a porovnávacej operácie. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Hodnota registra periódy '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Typ porovnávania '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Hodnota registra šírky pulzu '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Pomer '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;Nezáleží &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;gt; 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;≤&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt; &amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;0.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;gt; 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;≤&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1/(Perioda+1) &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;gt; 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt; &amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;0.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda =šírka pulzu &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;≤&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda= šírka pulzu&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda= šírka pulzu&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt; &amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda= šírka pulzu&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;Perioda/(Perioda+1) &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| PulseWidth Value &amp;gt; Period &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;Nezáleží &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| PulseWidth Value &amp;gt; Period &lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Hodnota registra šírky pulzu môže byť nastavená pomocou Device Editora alebo počas chodu pomocou API. Nie je poskytnutá žiadna možnosť bufferovania registra šírky pulzu.Bufferuje sa iba register počítadla pred dopočítaním. Preto sa zmeny vykonané v registry šírky pulzu prejavia na porovnávacom výstupe až v ďaľšom hodinovom cykle. Tímto sa dajú vytvárať periódy z viacerími pulzami. &lt;br /&gt;
&lt;br /&gt;
Prerušenie je možné naprogramovať tak aby sa vyvolalo na dopočítanie countera alebo keĎ sa porovnanie stane pravdivým. Prerušenie vyvolané na základe komparátora nastane pri nábežnej hrane výst. signálu a preuršenie vyvolané na základe dopočítani countera sa vyvolá pol hodinového impulzu pred dobežnou hranou výstupu. Tieto možnosti sa dajú nastaviť v Device Editore. Povolenie alebo zakázanie prerušenia sa nastavuje pomocou APi countera. Globálne prerušenie musí byť povolené pred tým ako sa spustí prerušenie od countera. &lt;br /&gt;
&lt;br /&gt;
Je potrebné dávať pozor pri modifikovaní registra šírky pulzu, pretože spolu s aktuálnou hodnotou čítača určuje výstupný stav PWM.Aby sme predišli možným defektom vo výstupnom signále, register šírky pulzu musí byť modifikovaný až po detekovaní dopočítania pomocou prerušenia. &lt;br /&gt;
&lt;br /&gt;
Pre aplikácie ktoré si vyžadujú rýchlejšie aktualizovanie cyklu, môže byť PWM vyvedené na pin, kde je výstup neustále sledovaný. A može byť aktualizovaný hneď ako sa zaznamená zmena signálu z high na low alebo opačne. Acquiring the Count register value must be done very carefully. Reading the Count register causes its contents to latch into the PulseWidth register. This causes the output duty cycle to change. &lt;br /&gt;
&lt;br /&gt;
Ak je potrebné čítať register počítdla za chodu, je možné využiť funkciu z API s názvom ReadCounter(). Táto funkcia dočasne zastaví hodinový signál, uloží register šírky pulzu, načíta počítadlo, obnoví register šírky pulzu a nakoniec znova pustí hodinový signál.&lt;br /&gt;
&lt;br /&gt;
'''Časovanie'''&lt;br /&gt;
&lt;br /&gt;
[[Image:]]&lt;br /&gt;
&lt;br /&gt;
'''Časový diagram PWM'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jednosmerné a striedavé elektrické charakteristiky'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Parameter '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Typicky '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Limit '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Jednotky'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Podmienky a poznámky '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| FOutput&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;-- &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;24&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;MHz &amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 5.0V and 48 MHz input clock &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| FInput&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;-- &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;48 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;MHz &amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 5.0V and 48 MHz Input clock &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
'''Poznámky k el. charakteristikám'''&lt;br /&gt;
&lt;br /&gt;
# Najrýchlejší hodinový signal ktorý je možné použiť, je 24 MHz pri 3.3 V.&lt;br /&gt;
# Ak je výstup vedený cez globálne zbernice, potom je hodnota výstupnej frekvencie maximálne 5 MHz.&lt;br /&gt;
&lt;br /&gt;
'''Umiestnenie'''&lt;br /&gt;
&lt;br /&gt;
PWM zeberá jeden digitálny blok pri každom 8 bitovom rozlíšení. Ak je použitých viac ako jeden blok, všetky sú umiestnené za sebou v Device Editore v poradí zvyšovania čísla jednotky os posledného byteu (LSB) k prvému byteu (the MSB). Každému bloku je priradené symbolické meno zobrazené v device editore počas a po umiestnení. API priradí menám všetkých registrov uživateľské mená a mená blokov pre priamy prístup do PWM registrov pomocou API. Mená blokov pužité pri rôznych presnostiach sú v nasledujúcej tabuľke.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''PSoC Bloky'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''8-Bit PWM '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''16-Bit PWM '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;PWM8 &amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;PWM16_LSB &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;2 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;-- &amp;lt;/center&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;0&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;PWM16_MSB &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
'''Parametre, použité výrazy a možnosti nastavenia '''&lt;br /&gt;
&lt;br /&gt;
'''Clock '''&lt;br /&gt;
&lt;br /&gt;
Hodinový signále je možné brať z jedného z 16 zdrojov. Tieto zdroje obsahujú 48 MHz oscilátor (pri 5.0V), nižšie frekvencie (VC1, VC2, a VC3) sú delené z 24 MHz systémových hodín, ostatných PSoC blokov, a externých vstupov prepojených cez globálne vstupy a výstupy. &lt;br /&gt;
&lt;br /&gt;
'''Enable '''&lt;br /&gt;
&lt;br /&gt;
Povolovací parameter je vyberaný z jedného z 16 zdrojov. Hodnota high signal enable zapína počítadlo, zatialčo hodnota low ho vypína pokial sa counter resetuje. Výstup nie je ovplivnený stavom enable signálu. &lt;br /&gt;
&lt;br /&gt;
'''CompareOut '''&lt;br /&gt;
&lt;br /&gt;
Porovnávací výstup je možné vypnúť (bez ovplivnenia operácií prerušenia) alebo pripojiť na hociktorú výstupnú zbernicu. Vždy je dostupný ako vstup pre ďaľší nadradený digitalny PSoC blok. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''TerminalCountOut '''&lt;br /&gt;
&lt;br /&gt;
Je externý výstup počítadla. Tento parameter môže byť zakázaný, alebo pripojený na hociktorý rad výstupných zberníc. &lt;br /&gt;
&lt;br /&gt;
'''Period '''&lt;br /&gt;
&lt;br /&gt;
Tento parameter nastavuje period počítadla. Povolené hodnoty pre PWM8 sú medzi 0 - 255. Allowed Povolené hodnoty pre PWM16 sú medzi 0 - 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt;-1. Perioda je nahraná do registra periody. Efektívna hodnota výstupnej periody pre PWM16 je period count + 1. Hodnotu je možné editovať pomocou API. &lt;br /&gt;
&lt;br /&gt;
'''PulseWidth '''&lt;br /&gt;
&lt;br /&gt;
Nastauje šírku pulzu výstupného signálu. Povolené hodnoty sú medzi 0 a hodnotou periody. Hodnotu je možné editovať pomocou API.&lt;br /&gt;
&lt;br /&gt;
'''InterruptType '''&lt;br /&gt;
&lt;br /&gt;
Tento parameter určuje spôsob vyvolania prerušenia. Prerušenie môže nastať na nábežnú hranu signal, alebo ak dopočíta register počítadla do konca. Prerušenie môže vyvolať viacero nezávyslích registrov. &lt;br /&gt;
&lt;br /&gt;
'''CompareType '''&lt;br /&gt;
&lt;br /&gt;
Tento parameter určuje typ porovnávacej funkcie &amp;quot;Menší ako&amp;quot; alebo &amp;quot;Menší alebo rovný ako&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''InvertEnable '''&lt;br /&gt;
&lt;br /&gt;
Tento parameter mení spôsob akým blok reaguje na povolovací signál. Ak je hodnota nastavená na &amp;quot;Normal&amp;quot; ,povolovací vstup reaguje na high úroveň signálu. Ak však nastavíme hodnotu na &amp;quot;Invert&amp;quot; vstup reaguje na hodnotu low.. &lt;br /&gt;
&lt;br /&gt;
'''Interrupt Generation Control '''&lt;br /&gt;
&lt;br /&gt;
Nasledujúce 2 parametre “InterruptAPI” a “IntDispatchMode” sú prístupné iba ak povolíme ”Interrupt Generation Control” v PSoC Designeri. Toto je možné nájsť v menu: Project &amp;gt;&amp;gt; Settings... &amp;gt;&amp;gt; Device Editor. &lt;br /&gt;
&lt;br /&gt;
'''Application Programming Interface '''&lt;br /&gt;
&lt;br /&gt;
Application Programming Interface (API) funkcie sú súčasťou uživateľského modulu pre designer na spoluprácu s modulom na vyššej úrovni. Tieto sekcie špecifikujú interface pre každú fukciu spolu s konštantami a priloženými súbormi.&lt;br /&gt;
&lt;br /&gt;
'''Použitá literatúra'''&lt;br /&gt;
&lt;br /&gt;
CYPRESS, Semiconductor Corporation. PSoC Programmable System-on-Chip : Technical Reference Manual (TRM). San Jose, USA , c2008. 572 s. Document No. 001-14463 Rev. *C. Dostupný z WWW: &amp;lt;[http://www.cypress.com]&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=%C5%A0%C3%ADrkov%C3%BD_modul%C3%A1tor_PWM&amp;diff=5190</id>
		<title>Šírkový modulátor PWM</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=%C5%A0%C3%ADrkov%C3%BD_modul%C3%A1tor_PWM&amp;diff=5190"/>
		<updated>2010-06-20T16:45:35Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: Vytvorená stránka „42. 16-Bit Pulse Width Modulator   {| style=&amp;quot;border-spacing:0;&amp;quot; | style=&amp;quot;background-color:#09367a;border:none;padding:0.079cm;&amp;quot;| '''Šírkový modulátor signálu (PWM) '''…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;42. 16-Bit Pulse Width Modulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#09367a;border:none;padding:0.079cm;&amp;quot;| '''Šírkový modulátor signálu (PWM) '''[[Image:]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#09367a;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
'''Vlastnosti'''&lt;br /&gt;
&lt;br /&gt;
* 8 a 16 bitový univerzálny šírkový modulator používajúci jeden alebo dva PSoC bloky.&lt;br /&gt;
* Frekvencia hodinového signal do 48 MHz.&lt;br /&gt;
* Automatické znovunačítanie šírky pulzu, pri každom cykle.&lt;br /&gt;
* Programovateľná šírka impulzu.&lt;br /&gt;
* Vstup povolujúci/zakazujúci nepretržitý beh čítača.&lt;br /&gt;
* Možnosť vyvolať prerušenie na nábežnú hranu výstupu.&lt;br /&gt;
&lt;br /&gt;
8 a 16 bitové PWM bloky sú šírkové modulátory s programovateľnou periódou a šírkou impulzu. Hodinový signal a povolovacie signály je možné privádzať z viacerých zdrojov. Výstupný signál je možné vyviesť na jeden konkrétny pin alebo na vnútornú zbernicu, ktorú využívajú ostatné používateľské moduly. Vyvolanie preušenia môže byť naprogramované na nábežnú hranu výstupu alebo keď čítač dosiahne konečný stav. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Bloková schema PWM bloku, dátová šírka n = 8 alebo 16 bitov'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Popis Funkcionality'''&lt;br /&gt;
&lt;br /&gt;
Používateľský modul PWM zaberá jeden až dva digitálne PSoC bloky, každý prispieva ôsmimi bitmi k celkovému rozlíšeniu. Na vytvorenie 16bitového modulátora je potrebné spojiť dva za sebou idúce bloky takže tie medzi sebou zdielajú svoje parametre a sú medzi sebou prepojené. Taktiež sú zlúčené countre, perióda a porovávacie registre (dátové registre DR0, DR1 a DR2). Toto všetko je potrebné pre dosiahnutie 16bitového rozlíšenia. &lt;br /&gt;
&lt;br /&gt;
PWM API poskytuje funkcie ktoré je možné volať pomocou C a assemblera na zastevenie alebo spustenie countera a na čítanie a zápis rôznych dátových registrov. Hodnoty dátových registrov môžu byť nastavené taktiež pomocou Device editora. Po štarte cyklu sa s každou nábežnou hranou pri ktorej je nastavený povolovací signál hodinového cyklu, dekrementuje register počítadla. Register počítadla je obnovený na hodnotu z registra periódy keď dosiahne terminal count (hodnotu 0). &lt;br /&gt;
&lt;br /&gt;
Register periódy môže byť modifikovaný novou hodnotou v akomkoľvek okamihu. Ak je PWM zastavené, zapisovanie do registra periódy zmení taktiež hodnotu registra počítadla. Ak je PWM v chode, zapisovanie do registra periódy nezmení hodnotu v registri počítadla, pokiaľ sa nenačíta PWM odznova pomocou terminal countu. Pretože terminal count nastane ak je počítadlo na nule, perióda výstupného signálu je o jedna väčšia ako hodnota uložená v registry periódy. Nasledujúce rovnice hovoria o výstupe na základe vstupného hodinového signálu a hodnoty v registry periódy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| T&amp;lt;sub&amp;gt;''OUT''&amp;lt;/sub&amp;gt; = (PeriodValue+1)/F&amp;lt;sub&amp;gt;''CLOCK''&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| '''Rovnica 1'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| F&amp;lt;sub&amp;gt;''OUT''&amp;lt;/sub&amp;gt; = F&amp;lt;sub&amp;gt;''CLOCK''&amp;lt;/sub&amp;gt;/(PeriodValue+1)&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| '''Rovnica 2'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Kde ''F&amp;lt;sub&amp;gt;OUT''&amp;lt;/sub&amp;gt; je výstupná frekvencia PWM, ''T&amp;lt;sub&amp;gt;OUT''&amp;lt;/sub&amp;gt; je výstupná perióda PWM, ''F&amp;lt;sub&amp;gt;CLOCK''&amp;lt;/sub&amp;gt; je frekvencia vstupného hodinového impulzu a ''PeriodValue'' je zadaná hodnota požadovanej periódy.&lt;br /&gt;
&lt;br /&gt;
PWM udržiava svoj výstup na hodnote low ak je zastavený. Počas behu komparátor kontroluje cyklus výstupného signálu. Počas každého hodinového cyklu, tento komparátor porovnáva hodnoty počítadla a registra šírky pulzu, vykonáva &amp;quot;menší&amp;quot; alebo &amp;quot;menší alebo rovný&amp;quot; test na základe možnosti vybratej v Device Editore. PWM udržiava hodnotu “high” porovnania na nábežnú hranu periódy v ktorej je vykonávané porovnanie. Pomer medzi šírkou pulzu a periódou určuje operačný cyklus výstupného signálu. Pomer operačného cyklu môže byť vypočítaný podľa tejto rovnice: &lt;br /&gt;
&lt;br /&gt;
Pre &amp;lt;nowiki&amp;gt;Šírka pulzu &amp;lt; &amp;lt;/nowiki&amp;gt;Hodnota periódy &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| [[Image:]]&lt;br /&gt;
| style=&amp;quot;border:none;padding:0.026cm;&amp;quot;| '''Rovnica 3'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Pre Šírka pulzu &amp;gt;= Hodnota periódy&lt;br /&gt;
&lt;br /&gt;
Operačný cyklus = 100% &lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka sumarizuje niektoré špeciálne stavy výst. signalu na základe periódy, šírky pulzu a porovnávacej operácie. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;  style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Hodnota registra periódy '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Typ porovnávania '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Hodnota registra šírky pulzu '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Pomer '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;nezáleží &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;gt; 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;0.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;gt; 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1/(Perioda+1) &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;gt; 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 0 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;0.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda =šírka pulzu &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda= šírka pulzu&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda= šírka pulzu&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Perioda= šírka pulzu&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;Perioda/(Perioda+1) &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| PulseWidth Value &amp;gt; Period &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;Don't Care &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| PulseWidth Value &amp;gt; Period &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1.0 &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Hodnota registra šírky pulzu môže byť nastavená pomocou Device Editora alebo počas chodu pomocou API. Nie je poskytnutá žiadna možnosť bufferovania registra šírky pulzu.Bufferuje sa iba register počítadla pred dopočítaním. Preto sa zmeny vykonané v registry šírky pulzu prejavia na porovnávacom výstupe až v ďaľšom hodinovom cykle. Tímto sa dajú vytvárať periódy z viacerími pulzami. &lt;br /&gt;
&lt;br /&gt;
Prerušenie je možné naprogramovať tak aby sa vyvolalo na dopočítanie countera alebo keĎ sa porovnanie stane pravdivým. Prerušenie vyvolané na základe komparátora nastane pri nábežnej hrane výst. signálu a preuršenie vyvolané na základe dopočítani countera sa vyvolá pol hodinového impulzu pred dobežnou hranou výstupu. Tieto možnosti sa dajú nastaviť v Device Editore. Povolenie alebo zakázanie prerušenia sa nastavuje pomocou APi countera. Globálne prerušenie musí byť povolené pred tým ako sa spustí prerušenie od countera. &lt;br /&gt;
&lt;br /&gt;
Je potrebné dávať pozor pri modifikovaní registra šírky pulzu, pretože spolu s aktuálnou hodnotou čítača určuje výstupný stav PWM.Aby sme predišli možným defektom vo výstupnom signále, register šírky pulzu musí byť modifikovaný až po detekovaní dopočítania pomocou prerušenia. &lt;br /&gt;
&lt;br /&gt;
Pre aplikácie ktoré si vyžadujú rýchlejšie aktualizovanie cyklu, môže byť PWM vyvedené na pin, kde je výstup neustále sledovaný. A može byť aktualizovaný hneď ako sa zaznamená zmena signálu z high na low alebo opačne. Acquiring the Count register value must be done very carefully. Reading the Count register causes its contents to latch into the PulseWidth register. This causes the output duty cycle to change. &lt;br /&gt;
&lt;br /&gt;
Ak je potrebné čítať register počítdla za chodu, je možné využiť funkciu z API s názvom ReadCounter(). Táto funkcia dočasne zastaví hodinový signál, uloží register šírky pulzu, načíta počítadlo, obnoví register šírky pulzu a nakoniec znova pustí hodinový signál.&lt;br /&gt;
&lt;br /&gt;
'''Časovanie'''&lt;br /&gt;
&lt;br /&gt;
[[Image:]]&lt;br /&gt;
&lt;br /&gt;
'''Časový diagram PWM'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jednosmerné a striedavé alektrické charakteristiky'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Parameter '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Typicky '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Limit '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Jednotky'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Podmienky a poznámky '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| FOutput&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;-- &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;24&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;MHz &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 5.0V and 48 MHz input clock &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| FInput&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;-- &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;48 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;MHz &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| 5.0V and 48 MHz Input clock &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
'''Poznámky k el. charakteristikám'''&lt;br /&gt;
&lt;br /&gt;
# Najrýchlejší hodinový signal ktorý je možné použiť, je 24 MHz pri 3.3 V.&lt;br /&gt;
# Ak je výstup vedený cez globálne zbernice, potom je hodnota výstupnej frekvencie maximálne 5 MHz.&lt;br /&gt;
&lt;br /&gt;
'''Umiestnenie'''&lt;br /&gt;
&lt;br /&gt;
PWM zeberá jeden digitálny blok pri každom 8 bitovom rozlíšení. Ak je použitých viac ako jeden blok, všetky sú umiestnené za sebou v Device Editore v poradí zvyšovania čísla jednotky os posledného byteu (LSB) k prvému byteu (the MSB). Každému bloku je priradené symbolické meno zobrazené v device editore počas a po umiestnení. API priradí menám všetkých registrov uživateľské mená a mená blokov pre priamy prístup do PWM registrov pomocou API. Mená blokov pužité pri rôznych presnostiach sú v nasledujúcej tabuľke.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;  style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''PSoC Bloky'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''8-Bit PWM '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''16-Bit PWM '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;1 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;PWM8 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;PWM16_LSB &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;2 &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;-- &amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;PWM16_MSB &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
'''Parametre a Možnosti '''&lt;br /&gt;
&lt;br /&gt;
'''Clock '''&lt;br /&gt;
&lt;br /&gt;
Hodinový signále je možné brať z jedného z 16 zdrojov. Tieto zdroje obsahujú 48 MHz oscilátor (pri 5.0V), nižšie frekvencie (VC1, VC2, a VC3) sú delené z 24 MHz systémových hodín, ostatných PSoC blokov, a externých vstupov prepojených cez globálne vstupy a výstupy. &lt;br /&gt;
&lt;br /&gt;
'''Enable '''&lt;br /&gt;
&lt;br /&gt;
Povolovací parameter je vyberaný z jedného z 16 zdrojov. Hodnota high signal enable zapína počítadlo, zatialčo hodnota low ho vypína pokial sa counter resetuje. Výstup nie je ovplivnený stavom enable signálu. &lt;br /&gt;
&lt;br /&gt;
'''CompareOut '''&lt;br /&gt;
&lt;br /&gt;
Porovnávací výstup je možné vypnúť (bez ovplivnenia operácií prerušenia) alebo pripojiť na hociktorú výstupnú zbernicu. Vždy je dostupný ako vstup pre ďaľší nadradený digitalny PSoC blok. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''TerminalCountOut '''&lt;br /&gt;
&lt;br /&gt;
Je externý výstup počítadla. Tento parameter môže byť zakázaný, alebo pripojený na hociktorý rad výstupných zberníc. &lt;br /&gt;
&lt;br /&gt;
'''Period '''&lt;br /&gt;
&lt;br /&gt;
Tento parameter nastavuje period počítadla. Allowed values for PWM8 are between zero and 255. Allowed values for PWM16 are between zero and 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt;-1. The period is loaded into the Period register. The effective output waveform period of the PWM16 is the period count + 1. The value may be modified using the API. &lt;br /&gt;
&lt;br /&gt;
'''PulseWidth '''&lt;br /&gt;
&lt;br /&gt;
Sets the pulse width of the PWM output. Allowed values are between zero and the period value. The value may be modified using the API. &lt;br /&gt;
&lt;br /&gt;
'''InterruptType '''&lt;br /&gt;
&lt;br /&gt;
This parameter sets the interrupt trigger type. The interrupt can be set so that it triggers on the rising edge of the output signal or on the terminal count of the Counter register. A separate register independently enables the interrupt. &lt;br /&gt;
&lt;br /&gt;
'''CompareType '''&lt;br /&gt;
&lt;br /&gt;
This parameter sets the compare function type &amp;quot;Less Than&amp;quot; or &amp;quot;Less Than or Equal To.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''ClockSync '''&lt;br /&gt;
&lt;br /&gt;
In the PSoC devices, digital blocks may provide clock sources in addition to the system clocks. Digital clock sources may even be chained in ripple fashion. This introduces skew with respect to the system clocks. These skews are more critical in the CY8C29/27/24/22/21xxx and CY8CLED04/08/16 PSoC device families because of various data-path optimizations, particularly those applied to the system busses. This parameter may be used to control clock skew and ensure proper operation when reading and writing PSoC block register values. Appropriate values for this parameter must be determined from the following table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''ClockSync Value '''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#d1d1d1;border:none;padding:0.079cm;&amp;quot;| &amp;lt;center&amp;gt;'''Use '''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Sync to SysClk &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Use this setting for any 24 MHz (SysClk) derived input clock source less than 24 MHz. Examples include VC1, VC2, VC3 (when VC3 is driven by SysClk), 32KHz, and digital PSoC blocks with SysClk-based sources. Externally generated clock sources must also use this value to ensure that proper synchronization occurs. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Sync to SysClk*2 &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Use this setting for any 48 MHz (SysClk*2) based input clock less than 48 MHz. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Use SysClk Direct &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Use when a 24 MHz (SysClk/1) clock is desired. This does not actually perform synchronization but provides low-skew access to the system clock itself. If selected, this option overrides the setting of the Clock parameter, above. It must always be used instead of VC1, VC2, VC3 or digital blocks where the net result of all dividers in combination produces a 24 MHz output. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Unsynchronized &lt;br /&gt;
| style=&amp;quot;background-color:#eaeaea;border:none;padding:0.079cm;&amp;quot;| Use when the 48 MHz (SysClk*2) input is selected. &lt;br /&gt;
&lt;br /&gt;
Use when unsynchronized inputs are desired. In general this use is advisable only when interrupt generation is the sole application of the Counter. This setting is required for blocks that remain active during sleep. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
'''InvertEnable '''&lt;br /&gt;
&lt;br /&gt;
This parameter determines the sense of the enable input signal. When &amp;quot;Normal&amp;quot; is selected, the enable input is active-high. Selecting &amp;quot;Invert&amp;quot; causes the sense to be interpreted as active-low. InvertEnable applies only to the CY8C29/27/24/22/21xxx and CY8CLED04/08/16 families of PSoC devices. &lt;br /&gt;
&lt;br /&gt;
'''Interrupt Generation Control '''&lt;br /&gt;
&lt;br /&gt;
The following two parameters InterruptAPI and IntDispatchMode are only accessible by setting the Enable Interrupt Generation Control check box in PSoC Designer. This is available under Project &amp;gt;&amp;gt; Settings... &amp;gt;&amp;gt; Device Editor. &lt;br /&gt;
&lt;br /&gt;
'''InterruptAPI '''&lt;br /&gt;
&lt;br /&gt;
The InterruptAPI parameter allows conditional generation of a User Module's interrupt handler and interrupt vector table entry. Select &amp;quot;Enable&amp;quot; to generate the interrupt handler and interrupt vector table entry. Select &amp;quot;Disable&amp;quot; to bypass the generation of the interrupt handler and interrupt vector table entry. Properly selecting whether an Interrupt API is to be generated is recommended particularly with projects that have multiple overlays where a single block resource is used by the different overlays. By selecting only Interrupt API generation when it is necessary the need to generate an interrupt dispatch code might be eliminated, thereby reducing overhead. &lt;br /&gt;
&lt;br /&gt;
'''IntDispatchMode '''&lt;br /&gt;
&lt;br /&gt;
The IntDispatchMode parameter is used to specify how an interrupt request is handled for interrupts shared by multiple user modules existing in the same block but in different overlays. Selecting &amp;quot;ActiveStatus&amp;quot; causes firmware to test which overlay is active before servicing the shared interrupt request. This test occurs every time the shared interrupt is requested. This adds latency and also produces a nondeterministic procedure of servicing shared interrupt requests, but does not require any RAM. Selecting &amp;quot;OffsetPreCalc&amp;quot; causes firmware to calculate the source of a shared interrupt request only when an overlay is initially loaded. This calculation decreases interrupt latency and produces a deterministic procedure for servicing shared interrupt requests, but at the expense of a byte of RAM. &lt;br /&gt;
&lt;br /&gt;
'''Application Programming Interface '''&lt;br /&gt;
&lt;br /&gt;
The Application Programming Interface (API) routines are provided as part of the user module to allow the designer to deal with the module at a higher level. This sections specifies the interface to each function together with related constants provided by the &amp;quot;include&amp;quot; files. &lt;br /&gt;
&lt;br /&gt;
'''Note '''In this, as in all user module APIs, the values of the A and X register may be altered by calling an API function. It is the responsibility of the calling function to preserve the values of A and X before the call if those values are required after the call. This &amp;quot;registers are volatile&amp;quot; policy was selected for efficiency reasons and has been in force since version 1.0 of PSoC Designer. The C compiler automatically takes care of this requirement. Assembly language programmers must ensure their code observes the policy, too. Though some user module API function may leave A and X unchanged, there is no guarantee they will do so in the future. &lt;br /&gt;
&lt;br /&gt;
Start/Stop indicates that the PWM16 is enabled when set. It is modified by using the PWM16 API. &lt;br /&gt;
&lt;br /&gt;
# Start/Stop is controlled by the LSB Control register in chained PSoC blocks and is set to zero.&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Konfigurovate%C4%BEn%C3%A9_mikroprocesorov%C3%A9_syst%C3%A9my&amp;diff=3917</id>
		<title>Konfigurovateľné mikroprocesorové systémy</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Konfigurovate%C4%BEn%C3%A9_mikroprocesorov%C3%A9_syst%C3%A9my&amp;diff=3917"/>
		<updated>2010-05-05T08:11:58Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Obsah prednášok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Mikroprocesorové systémy]]&lt;br /&gt;
[[Kategória:Študijné materiály]]&lt;br /&gt;
&amp;lt;properties&amp;gt;&lt;br /&gt;
Názov=Konfigurovateľné mikroprocesorové systémy&lt;br /&gt;
Forma=Prednáška a praktické cvičenia&lt;br /&gt;
Abstrakt=Všeobecnej architektúra počítača a mikrokontroléra, rozdiely a porovnanie. Návrh a tvorb hybridných elektronických systémov na báze mikrokontrolérov PSoC. Komunikácia mikrokontroléra s prostredím. Komunikačné protokoly a štandardy. Pripájanie a riadenie periférií.  &lt;br /&gt;
Rozvrh=3/0/2&lt;br /&gt;
Hodnotenie=Spracovanie projektu a skúška&lt;br /&gt;
Poznámky=Predmetom projektu môže byť téma podľa vlastného výberu z oblasti prednášky a/alebo cvičení spracovaná v písomnej elektronickej podobe a verejne publikovaná na serveri KiWiKi. Hodnotenie a poznámky k projektu budú verejné a zverejnené v diskusii k práci. &lt;br /&gt;
&amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Obsah prednášok ==&lt;br /&gt;
* Všeobecný úvod&lt;br /&gt;
** [[Od počítača k mikrokontroléru]]&lt;br /&gt;
*** Architektúra všeobecného počítača&lt;br /&gt;
*** Architektúra mikrokontrolera&lt;br /&gt;
*** Prehľad aktuálneho stavu technológie&lt;br /&gt;
* [[Úvod do technológie PSoC]] &lt;br /&gt;
** Prehľad architektúry &lt;br /&gt;
** Elektrické a mechanické parametre&lt;br /&gt;
** Vývojové prostredie&lt;br /&gt;
* Assembler M8C&lt;br /&gt;
** Štruktúra assembleru&lt;br /&gt;
** Pseudoinštrukcie assembleru&lt;br /&gt;
** Makrá&lt;br /&gt;
* Inštrukcie procesora M8C&lt;br /&gt;
** Inštrukcie presunu dát&lt;br /&gt;
** Aritmetické inštrukcie&lt;br /&gt;
** Logické inštrukcie&lt;br /&gt;
** Inštrukcie pre prácu zo zásobníkom&lt;br /&gt;
** Skoky a podprogramy&lt;br /&gt;
** Špeciálne inštrukcie&lt;br /&gt;
** Prerušenia&lt;br /&gt;
* Základné programové konštrukcie&lt;br /&gt;
** Konštrukcia IF-ELSE&lt;br /&gt;
** Konštrukcia SWITCH-CASE&lt;br /&gt;
** Cykly DO-WHILE, FOR-LOOP&lt;br /&gt;
* GPIO - Všeobecne použiteľné vstupy a výstupy &lt;br /&gt;
** Popis GPIO&lt;br /&gt;
** Konfigurácia GPIO pomocou designera obvodu&lt;br /&gt;
** Programová konfigurácia GPIO&lt;br /&gt;
** Módy portov &lt;br /&gt;
** Pripojenie periférnych obvodov&lt;br /&gt;
** Pripojenie tlačítok a ošetrenie zákmitov&lt;br /&gt;
* Sériová asynchrónna komunikácia - UART&lt;br /&gt;
** Historický vývoj&lt;br /&gt;
** Štandard RS232&lt;br /&gt;
*** Rozhranie TTL/RS232 &lt;br /&gt;
** Štandard RS485&lt;br /&gt;
*** Rozhranie TTL/RS485&lt;br /&gt;
** [[Blok UART]]&lt;br /&gt;
** API UART&lt;br /&gt;
** Protokol MODBUS/uBUS&lt;br /&gt;
*** Popis&lt;br /&gt;
*** Implementácia&lt;br /&gt;
* Synchrónna komunikácia I2C&lt;br /&gt;
** Meranie teploty pomocou LM92&lt;br /&gt;
** Hodiny reálneho času &lt;br /&gt;
* [[Synchrónna komunikácia SPI]]&lt;br /&gt;
* Distribuovaný systém zber dát 1-Wire&lt;br /&gt;
** Meranie teploty pomocou teplomera DS18S20&lt;br /&gt;
* Čítače a časovače&lt;br /&gt;
** Blok čítača a časovača&lt;br /&gt;
** API Čítača a časovača&lt;br /&gt;
** Generovanie časových intervalov&lt;br /&gt;
** Meranie času a frekvencie&lt;br /&gt;
** Presné meranie kapacity&lt;br /&gt;
** Meranie polohy pomocou magnetostrikčného senzoru&lt;br /&gt;
[[* Šírkový modulátor PWM]]&lt;br /&gt;
** Blok čítača a časovača&lt;br /&gt;
** API PWM&lt;br /&gt;
** Riadenie modelárskeho serva pomocou PWM&lt;br /&gt;
* Prevodníky ADC&lt;br /&gt;
** Aproximačné prevodníky&lt;br /&gt;
** Delta-Sigma prevodníky&lt;br /&gt;
* Prevodníky DAC&lt;br /&gt;
* Analógové spracovanie signálov&lt;br /&gt;
** Zosilňovače&lt;br /&gt;
** Komparátor&lt;br /&gt;
*** Spracovanie prerušenia od komparátora&lt;br /&gt;
** Filtre&lt;br /&gt;
*** Návrh a realizácia filtrov&lt;br /&gt;
* Všeobecné zásady tvorby programov&lt;br /&gt;
** Analýza&lt;br /&gt;
** Návrh &lt;br /&gt;
** Implementácia&lt;br /&gt;
** Testovanie a ladenie programu&lt;br /&gt;
&lt;br /&gt;
== Podklady k cvičeniam ==&lt;br /&gt;
# Binárne čísla&lt;br /&gt;
## Reprezentácia a formáty zobrazenia čísel&lt;br /&gt;
## Prevody medzi číselnými sústavami&lt;br /&gt;
## Matematické operácie s binárnymi číslami&lt;br /&gt;
# Vývojové prostredie PSoC&lt;br /&gt;
## Tvorba programov v PSoC Designer&lt;br /&gt;
## Vývojový kit CY3210&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Aplik%C3%A1cia_pre_prezeranie_dokumentov_OO_XML&amp;diff=2589</id>
		<title>Aplikácia pre prezeranie dokumentov OO XML</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Aplik%C3%A1cia_pre_prezeranie_dokumentov_OO_XML&amp;diff=2589"/>
		<updated>2010-03-12T11:04:04Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Záver */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Bakalárske práce]][[Kategória:Informatika]][[Kategória:web]]&lt;br /&gt;
{{Praca_uvod|3|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
= =&lt;br /&gt;
Pre potreby prezeranie spomínaných dokumentov vytvoríme webovú aplikáciu s&amp;amp;nbsp;názvom „Office Open Document Viewer“&lt;br /&gt;
==Požiadavky na výslednú aplikáciu==&lt;br /&gt;
* Jednoduché užívateľské rozhranie&lt;br /&gt;
* Schopnosť rozpoznať a&amp;amp;nbsp;zobraziť dokumenty tabuľkového procesora a&amp;amp;nbsp;textového editora kancelárskych balíkov&lt;br /&gt;
* Možnosť práce na viacerých platformách&lt;br /&gt;
* Dočasné uchovanie zdrojového dokumentu na serveri&lt;br /&gt;
* Dostatočná presnosť zobrazenia zdrojového dokumentu (zachovanie štýlov, vzorcov atď.)&lt;br /&gt;
&lt;br /&gt;
==Návrh aplikácie Office Open Document Viewer==&lt;br /&gt;
&lt;br /&gt;
=Záver=&lt;br /&gt;
Cieľom práce bolo vytvoriť webovú aplikáciu na prezeranie dokumentov kancelárskych balíkov v prostredí webového prehliadača. V prvej kapitole boli popísané technológie a štandardy použité v práci. Druhá časť podrobne vysvetľuje princípy a spôsoby ukladania dát v otvorených formátoch súborov, kancelárskych balíkov. V tretej časti je opísaný vývoj samotnej aplikácie. Aplikácia ešte ani zďaleka nie je hotová a prezentovaná časť aplikácie je len zlomkom toho, čo všetko ešte treba navrhnúť a vytvoriť.&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Kompletna_strukturaa.jpg&amp;diff=2588</id>
		<title>Súbor:Kompletna strukturaa.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Kompletna_strukturaa.jpg&amp;diff=2588"/>
		<updated>2010-03-12T11:01:52Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Aplik%C3%A1cia_pre_prezeranie_dokumentov_OO_XML&amp;diff=2587</id>
		<title>Aplikácia pre prezeranie dokumentov OO XML</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Aplik%C3%A1cia_pre_prezeranie_dokumentov_OO_XML&amp;diff=2587"/>
		<updated>2010-03-11T11:05:26Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Požiadavky na výslednú aplikáciu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Bakalárske práce]][[Kategória:Informatika]][[Kategória:web]]&lt;br /&gt;
{{Praca_uvod|3|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
= =&lt;br /&gt;
Pre potreby prezeranie spomínaných dokumentov vytvoríme webovú aplikáciu s&amp;amp;nbsp;názvom „Office Open Document Viewer“&lt;br /&gt;
==Požiadavky na výslednú aplikáciu==&lt;br /&gt;
* Jednoduché užívateľské rozhranie&lt;br /&gt;
* Schopnosť rozpoznať a&amp;amp;nbsp;zobraziť dokumenty tabuľkového procesora a&amp;amp;nbsp;textového editora kancelárskych balíkov&lt;br /&gt;
* Možnosť práce na viacerých platformách&lt;br /&gt;
* Dočasné uchovanie zdrojového dokumentu na serveri&lt;br /&gt;
* Dostatočná presnosť zobrazenia zdrojového dokumentu (zachovanie štýlov, vzorcov atď.)&lt;br /&gt;
&lt;br /&gt;
==Návrh aplikácie Office Open Document Viewer==&lt;br /&gt;
&lt;br /&gt;
=Záver=&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Aplik%C3%A1cia_pre_prezeranie_dokumentov_OO_XML&amp;diff=2586</id>
		<title>Aplikácia pre prezeranie dokumentov OO XML</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Aplik%C3%A1cia_pre_prezeranie_dokumentov_OO_XML&amp;diff=2586"/>
		<updated>2010-03-11T11:04:03Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Bakalárske práce]][[Kategória:Informatika]][[Kategória:web]]&lt;br /&gt;
{{Praca_uvod|3|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
= =&lt;br /&gt;
Pre potreby prezeranie spomínaných dokumentov vytvoríme webovú aplikáciu s&amp;amp;nbsp;názvom „Office Open Document Viewer“&lt;br /&gt;
==Požiadavky na výslednú aplikáciu==&lt;br /&gt;
==Návrh aplikácie Office Open Document Viewer==&lt;br /&gt;
&lt;br /&gt;
=Záver=&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Omg.jpg&amp;diff=2585</id>
		<title>Súbor:Omg.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Omg.jpg&amp;diff=2585"/>
		<updated>2010-03-11T11:01:58Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Struktura.jpg&amp;diff=2584</id>
		<title>Súbor:Struktura.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Struktura.jpg&amp;diff=2584"/>
		<updated>2010-03-11T11:01:49Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2583</id>
		<title>Otvorené formáty kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2583"/>
		<updated>2010-03-11T11:01:40Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Open Document Format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Bakalárske práce]][[Kategória:Informatika]][[Kategória:web]]&lt;br /&gt;
{{Praca_uvod|2|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
= =&lt;br /&gt;
== Office Open XML (OOXML) ==&lt;br /&gt;
S&amp;amp;nbsp;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&amp;amp;nbsp;balíka Office 2003 príponu predĺženú o&amp;amp;nbsp;písmeno „x“ (docx, xlsx, pptx…) a&amp;amp;nbsp;úplne odlišnú vnútornú štruktúru. Písmeno „x“ značí použitie XML v&amp;amp;nbsp;súboroch popisujúcich dokument. Celý súbor tohto balíka je v&amp;amp;nbsp;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&amp;amp;nbsp;dokumente a&amp;amp;nbsp;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&amp;amp;nbsp;skomprimované technológiu ZIP. To znamená, že ak prepíšeme príponu súboru na *.zip a&amp;amp;nbsp;otvoríme tento súbor v&amp;amp;nbsp;ľubovoľnom programe na otváranie komprimovaných súborov (WinRAR, 7Zip, Total Commander...) uvidíme vnútornú štruktúru dokumentu OOXML.&lt;br /&gt;
&lt;br /&gt;
Výhody ukladania do formátu OOXML:&lt;br /&gt;
&lt;br /&gt;
* Menšia veľkosť výsledného dokumentu vďaka komprimácii&lt;br /&gt;
* Väčšia bezpečnosť &lt;br /&gt;
* Menšia náchylnosť na poškodenie dokumentu&lt;br /&gt;
* Väčšia kompatibilita a&amp;amp;nbsp;prenesitelnosť dokumentu&lt;br /&gt;
&lt;br /&gt;
=== Vnútorná štruktúra súboru OOXML ===&lt;br /&gt;
Pre popísanie a&amp;amp;nbsp;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&amp;amp;nbsp;otvorení súboru môžeme vidieť nasledovnú stromovú štruktúru:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:kompletna_strukturaa.jpg|center|framed|Obrázok 2.1 Vnútorná štruktúra XLSX dokumentu]]&lt;br /&gt;
&lt;br /&gt;
Táto štruktúra, ako aj názvy adresárov a&amp;amp;nbsp;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&amp;amp;nbsp;dátam z&amp;amp;nbsp;narušenej časti štruktúry.&lt;br /&gt;
&lt;br /&gt;
=== Obsah jednotlivých adresárov a podadresárov ===&lt;br /&gt;
Koreňový adresár dokumentu obsahuje súbor &amp;lt;nowiki&amp;gt;[Content_types].xml&amp;lt;/nowiki&amp;gt;, 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&amp;amp;nbsp;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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;Default Extension=&amp;quot;xml&amp;quot; ContentType=&amp;quot;application/xml&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;koreňovom adresári sa ďalej nachádza adresár s&amp;amp;nbsp;názvom _RELS v&amp;amp;nbsp;tomto adresári je umiestnený súbor s&amp;amp;nbsp;názvom .rels tento súbor taktiež využíva špeciálne menné priestory a&amp;amp;nbsp;definuje vzťahy medzi hlavnými časťami dokumentu. Každý vzťah je tvorený tromi časťami informácie.&lt;br /&gt;
&lt;br /&gt;
* Unikátne identifikačné čislo v&amp;amp;nbsp;rámci dokumentu (Relationship ID)&lt;br /&gt;
* Typ vzťahu (Relationship Type)&lt;br /&gt;
* Ukazateľ na cieľ daného vzťahu&lt;br /&gt;
&lt;br /&gt;
Ukážka zadefinovania vzťahu v&amp;amp;nbsp;súbore .rels:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Relationship Id&amp;lt;nowiki&amp;gt;=&amp;quot;&amp;lt;/nowiki&amp;gt;rId1&amp;quot; Type&amp;lt;nowiki&amp;gt;=&amp;quot;&amp;lt;/nowiki&amp;gt;http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument&amp;quot; Target&amp;lt;nowiki&amp;gt;=&amp;quot;&amp;lt;/nowiki&amp;gt;xl/workbook.xml&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vo vnútronej štruktúre dokumentu môže byť viac súborov ktoré definujú vzťahy medzi časťami dokumentu, a&amp;amp;nbsp;vždy sú v&amp;amp;nbsp;danej časti dokumentu, v&amp;amp;nbsp;ktorej určujú vzťahy, uložené v&amp;amp;nbsp;adresári s&amp;amp;nbsp;názvom _RELS.&lt;br /&gt;
&lt;br /&gt;
Ďalej nasleduje adresár s&amp;amp;nbsp;názvom „XL“ názov tohto adresára je jedinečný, pre každý typ dokumentu balíka Microsoft Office je iný a&amp;amp;nbsp;podľa neho môžeme spoznať o&amp;amp;nbsp;aký typ dokumentu sa jedná. V&amp;amp;nbsp;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&amp;amp;nbsp;v&amp;amp;nbsp;ň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&amp;amp;nbsp;ň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&amp;amp;nbsp;pod. ďalší v&amp;amp;nbsp;poradí je adresár „WORKSHEETS“, ktorý obsahuje pre každý hárok dokumentu jeden XML súbor. Tzn. že v&amp;amp;nbsp;našom prípade dokument obsahuje 3 hárky, čo je minimum ktoré Microsoft Excel vytvorí pri vytváraní dokumentu. V&amp;amp;nbsp;súboroch sheetx.xml je v&amp;amp;nbsp;XML štruktúre uložený obsah daného dokumentu (hodnoty buniek, vzorce a&amp;amp;nbsp;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&amp;amp;nbsp;adresári „XL“. Súbor calcChain.xml obsahuje zoznam všetkých buniek v&amp;amp;nbsp;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&amp;amp;nbsp;vzhľade dokumentu ako predvolený font, farebné schémy, veľkosti buniek a&amp;amp;nbsp;pod a&amp;amp;nbsp;súbor workbook.xml obsahuje základné informácie o&amp;amp;nbsp;celom dokumente, ako verzie programov ktorými bol dokument editovaný, pohľad na dokument (veľkosť okna) a&amp;amp;nbsp;jednotlivé hárky obsiahnuté v&amp;amp;nbsp;dokumente aj s&amp;amp;nbsp;identifikačnými číslami.&lt;br /&gt;
=== Detailný popis najdôležitejších súborov ===&lt;br /&gt;
Vnútornú štruktúru niektorých súborov vysvetlíme na nasledujúcom jednoduchom dokumente programu Microsoft Excel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:excel.jpg|center|framed|Obrázok 2.2 Jednoduchý dokument XLSX]]&lt;br /&gt;
&lt;br /&gt;
Po rozbalení balíčka tohto dokumentu, a&amp;amp;nbsp;otvorení súboru sheet1.xml si ukážeme na príklade, ako sa dáta jednotlivých buniek ukladajú do tohto súboru:&lt;br /&gt;
&lt;br /&gt;
[[Image:row2.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;&amp;lt;row&amp;gt;&amp;lt;/nowiki&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Atribút „r“ elementu označuje číselné poradie riadka, čo je v&amp;amp;nbsp;našom prípade 2. Atribút „spans“ označuje rozsah daného riadka čo je v&amp;amp;nbsp;našom prípade prvá až šiesta bunka v&amp;amp;nbsp;riadku (1:6). Ďalej si môžeme v&amp;amp;nbsp;hierarchii XML dokumentu všimnúť, že element &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;row&amp;gt; obsahuje práve 6 elementov &amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/nowiki&amp;gt; ktoré reprezentujú našich 6 buniek. Každý element &amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/nowiki&amp;gt; má atribút „r“ ktorý označuje index danej bunky (A2, B2, C2…) a&amp;amp;nbsp;atribút „s“ označuje index štýlu aplikovaného na bunku a&amp;amp;nbsp;v&amp;amp;nbsp;niektorých elementoch sa vyskytuje aj atribút “t” ktorý obsahuje označenie dátového typu uloženého v&amp;amp;nbsp;danej bunke. V&amp;amp;nbsp;riedku 2 sú 3 bunky obsahujúce text, preto majú aj práve 3 elementy &amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/nowiki&amp;gt; atribút „t“, ktorý má hodnotu „s“, ktorá značí že v&amp;amp;nbsp;daných bunkách sa nachádzajú textové reťazce zo zoznamu sharedstrings.xml. &amp;lt;nowiki&amp;gt;Dátový typ bunky môže byť aj iný napr: boolean(b), error(e) atď. Ďalej každý element obsahuje element &amp;lt;v&amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v ktorom je uložená buď číselná hodnota zapísaná priamo v&amp;amp;nbsp;bunke, alebo index daného textového reťazca uloženého v&amp;amp;nbsp;súbore „sharedstrings.xml“. Ak je hodnota bunky vypočítaná podľa vzorca, tento vzorec je uložený v&amp;amp;nbsp;elemente &amp;lt;nowiki&amp;gt;&amp;lt;f&amp;gt;, ako je mo&amp;lt;/nowiki&amp;gt;žné vidieť pri bunke D2.&lt;br /&gt;
&lt;br /&gt;
Teraz si ukážeme štruktúru spomínaného súboru sharedstrings.xml:&lt;br /&gt;
&lt;br /&gt;
[[Image:shared strings.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Ako môžeme vidieť, sú tu za sebou v&amp;amp;nbsp;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&amp;amp;nbsp;balíka OOXML a&amp;amp;nbsp;poskladanie nie úplne presnej, ale postačujúcej kópie dokumentu.&lt;br /&gt;
&lt;br /&gt;
=== Vnútorná štruktúra súboru ODF ===&lt;br /&gt;
ODF funguje na rovnakom princípe ako OOXML takže uložený súbor s&amp;amp;nbsp;príponou *.ods si môžeme bez problémov otvoriť v&amp;amp;nbsp;akomkoľvek prehliadači komprimovaných archívov, a&amp;amp;nbsp;uvidíme nasledovnú štruktúru adresárov a&amp;amp;nbsp;súborov:&lt;br /&gt;
&lt;br /&gt;
[[Súbor:struktura.jpg|center|framed|Obrázok 2.4 Stromová štruktúra ODS dokumentu]]&lt;br /&gt;
&lt;br /&gt;
Každý ODF dokument by mal obsahovať adresár s&amp;amp;nbsp;názvom META-INF a&amp;amp;nbsp;v&amp;amp;nbsp;ň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&amp;amp;nbsp;balíčku, okrem tých ktoré sú výslovne vyňaté z&amp;amp;nbsp;manifestu. Ďalej popisuje MIME typy médií všetkých súborov obsiahnutých v&amp;amp;nbsp;dokumente a&amp;amp;nbsp;ak sú niektoré súbory v&amp;amp;nbsp;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&amp;amp;nbsp;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&amp;amp;nbsp;dokumente a&amp;amp;nbsp;súbor settings.xml obsahuje všetky nastavenia ktoré sa majú v&amp;amp;nbsp;aplikácia ktorá bude otvárať dokument vykonať pred otvorením, napr. hodnota priblíženia pohľadu na dokument (zoom) v&amp;amp;nbsp;percentách a&amp;amp;nbsp;pod. V&amp;amp;nbsp;súbore mimetype je uložená informácia o&amp;amp;nbsp;aký typ dokumentu sa jedná. V&amp;amp;nbsp;našom prípade je v&amp;amp;nbsp;súbore mimetype uložený nasledovný reťazec: application/vnd.oasis.opendocument.spreadsheet&lt;br /&gt;
&lt;br /&gt;
Toto značí že sa jedná o&amp;amp;nbsp;dokument tabuľkového procesora, uloženého vo formáte ODF. Súbor meta.xml zasa obsahuje informácie o&amp;amp;nbsp;tvorcovi dokumentu, dátume a&amp;amp;nbsp;č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&amp;amp;nbsp;buniek, z&amp;amp;nbsp;čoho vyplýva že je pre nás najdôležitejší a&amp;amp;nbsp;tak si popíšeme aj jeho vnútornú štruktúru.&lt;br /&gt;
&lt;br /&gt;
=== Detailný popis najdôležitejšieho súboru ===&lt;br /&gt;
[[Image:omg.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Znova si popíšeme štruktúru jedného riadka dokumentu. Každý riadok začína elementom &amp;lt;nowiki&amp;gt;&amp;lt;table:table-row&amp;gt;&amp;lt;/nowiki&amp;gt; tento element má atribút s&amp;amp;nbsp;názvom table:style-name ktorý definuje akým štýlom bude celý riadok formátovaný. Názvy a&amp;amp;nbsp;parametre štýlov sú určené na začiatku súboru content.xml. Element &amp;lt;nowiki&amp;gt;&amp;lt;table:table-row&amp;gt;&amp;lt;/nowiki&amp;gt; obsahuje 6 elementov s názvom &amp;lt;nowiki&amp;gt;&amp;lt;table:table-cell&amp;gt;&amp;lt;/nowiki&amp;gt;, ktoré reprezentujú 6 buniek v&amp;amp;nbsp;riadku. Elementy majú atribúty office:value-type v&amp;amp;nbsp;ktorom je uložený dátový typ danej bunky a&amp;amp;nbsp;office:value v&amp;amp;nbsp;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&amp;amp;nbsp;názvom table:formula. Každý s&amp;amp;nbsp;elementov &amp;lt;nowiki&amp;gt;&amp;lt;table:table-cell&amp;gt;&amp;lt;/nowiki&amp;gt; obsahuje ešte element &amp;lt;nowiki&amp;gt;&amp;lt;text:p&amp;gt;&amp;lt;/nowiki&amp;gt; v ktorom je uložená hodnota bunky ako textový reťazec. Podľa tohto popisu je možné napísať program ktorý vyberie z&amp;amp;nbsp;dokumentu potrebné informácie a&amp;amp;nbsp;vytvorí výsledný dokument s&amp;amp;nbsp;dostatočnou presnosťou.&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Shared_strings.jpg&amp;diff=2582</id>
		<title>Súbor:Shared strings.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Shared_strings.jpg&amp;diff=2582"/>
		<updated>2010-03-11T10:49:52Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Row2.jpg&amp;diff=2581</id>
		<title>Súbor:Row2.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Row2.jpg&amp;diff=2581"/>
		<updated>2010-03-11T10:49:40Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Excel.jpg&amp;diff=2580</id>
		<title>Súbor:Excel.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Excel.jpg&amp;diff=2580"/>
		<updated>2010-03-11T10:49:30Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2579</id>
		<title>Otvorené formáty kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2579"/>
		<updated>2010-03-11T10:49:19Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Obsah jednotlivých adresárov a podadresárov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Bakalárske práce]][[Kategória:Informatika]][[Kategória:web]]&lt;br /&gt;
{{Praca_uvod|2|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
= =&lt;br /&gt;
== Office Open XML (OOXML) ==&lt;br /&gt;
S&amp;amp;nbsp;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&amp;amp;nbsp;balíka Office 2003 príponu predĺženú o&amp;amp;nbsp;písmeno „x“ (docx, xlsx, pptx…) a&amp;amp;nbsp;úplne odlišnú vnútornú štruktúru. Písmeno „x“ značí použitie XML v&amp;amp;nbsp;súboroch popisujúcich dokument. Celý súbor tohto balíka je v&amp;amp;nbsp;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&amp;amp;nbsp;dokumente a&amp;amp;nbsp;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&amp;amp;nbsp;skomprimované technológiu ZIP. To znamená, že ak prepíšeme príponu súboru na *.zip a&amp;amp;nbsp;otvoríme tento súbor v&amp;amp;nbsp;ľubovoľnom programe na otváranie komprimovaných súborov (WinRAR, 7Zip, Total Commander...) uvidíme vnútornú štruktúru dokumentu OOXML.&lt;br /&gt;
&lt;br /&gt;
Výhody ukladania do formátu OOXML:&lt;br /&gt;
&lt;br /&gt;
* Menšia veľkosť výsledného dokumentu vďaka komprimácii&lt;br /&gt;
* Väčšia bezpečnosť &lt;br /&gt;
* Menšia náchylnosť na poškodenie dokumentu&lt;br /&gt;
* Väčšia kompatibilita a&amp;amp;nbsp;prenesitelnosť dokumentu&lt;br /&gt;
&lt;br /&gt;
=== Vnútorná štruktúra súboru OOXML ===&lt;br /&gt;
Pre popísanie a&amp;amp;nbsp;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&amp;amp;nbsp;otvorení súboru môžeme vidieť nasledovnú stromovú štruktúru:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:kompletna_strukturaa.jpg|center|framed|Obrázok 2.1 Vnútorná štruktúra XLSX dokumentu]]&lt;br /&gt;
&lt;br /&gt;
Táto štruktúra, ako aj názvy adresárov a&amp;amp;nbsp;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&amp;amp;nbsp;dátam z&amp;amp;nbsp;narušenej časti štruktúry.&lt;br /&gt;
&lt;br /&gt;
=== Obsah jednotlivých adresárov a podadresárov ===&lt;br /&gt;
Koreňový adresár dokumentu obsahuje súbor &amp;lt;nowiki&amp;gt;[Content_types].xml&amp;lt;/nowiki&amp;gt;, 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&amp;amp;nbsp;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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;Default Extension=&amp;quot;xml&amp;quot; ContentType=&amp;quot;application/xml&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;koreňovom adresári sa ďalej nachádza adresár s&amp;amp;nbsp;názvom _RELS v&amp;amp;nbsp;tomto adresári je umiestnený súbor s&amp;amp;nbsp;názvom .rels tento súbor taktiež využíva špeciálne menné priestory a&amp;amp;nbsp;definuje vzťahy medzi hlavnými časťami dokumentu. Každý vzťah je tvorený tromi časťami informácie.&lt;br /&gt;
&lt;br /&gt;
* Unikátne identifikačné čislo v&amp;amp;nbsp;rámci dokumentu (Relationship ID)&lt;br /&gt;
* Typ vzťahu (Relationship Type)&lt;br /&gt;
* Ukazateľ na cieľ daného vzťahu&lt;br /&gt;
&lt;br /&gt;
Ukážka zadefinovania vzťahu v&amp;amp;nbsp;súbore .rels:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Relationship Id&amp;lt;nowiki&amp;gt;=&amp;quot;&amp;lt;/nowiki&amp;gt;rId1&amp;quot; Type&amp;lt;nowiki&amp;gt;=&amp;quot;&amp;lt;/nowiki&amp;gt;http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument&amp;quot; Target&amp;lt;nowiki&amp;gt;=&amp;quot;&amp;lt;/nowiki&amp;gt;xl/workbook.xml&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vo vnútronej štruktúre dokumentu môže byť viac súborov ktoré definujú vzťahy medzi časťami dokumentu, a&amp;amp;nbsp;vždy sú v&amp;amp;nbsp;danej časti dokumentu, v&amp;amp;nbsp;ktorej určujú vzťahy, uložené v&amp;amp;nbsp;adresári s&amp;amp;nbsp;názvom _RELS.&lt;br /&gt;
&lt;br /&gt;
Ďalej nasleduje adresár s&amp;amp;nbsp;názvom „XL“ názov tohto adresára je jedinečný, pre každý typ dokumentu balíka Microsoft Office je iný a&amp;amp;nbsp;podľa neho môžeme spoznať o&amp;amp;nbsp;aký typ dokumentu sa jedná. V&amp;amp;nbsp;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&amp;amp;nbsp;v&amp;amp;nbsp;ň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&amp;amp;nbsp;ň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&amp;amp;nbsp;pod. ďalší v&amp;amp;nbsp;poradí je adresár „WORKSHEETS“, ktorý obsahuje pre každý hárok dokumentu jeden XML súbor. Tzn. že v&amp;amp;nbsp;našom prípade dokument obsahuje 3 hárky, čo je minimum ktoré Microsoft Excel vytvorí pri vytváraní dokumentu. V&amp;amp;nbsp;súboroch sheetx.xml je v&amp;amp;nbsp;XML štruktúre uložený obsah daného dokumentu (hodnoty buniek, vzorce a&amp;amp;nbsp;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&amp;amp;nbsp;adresári „XL“. Súbor calcChain.xml obsahuje zoznam všetkých buniek v&amp;amp;nbsp;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&amp;amp;nbsp;vzhľade dokumentu ako predvolený font, farebné schémy, veľkosti buniek a&amp;amp;nbsp;pod a&amp;amp;nbsp;súbor workbook.xml obsahuje základné informácie o&amp;amp;nbsp;celom dokumente, ako verzie programov ktorými bol dokument editovaný, pohľad na dokument (veľkosť okna) a&amp;amp;nbsp;jednotlivé hárky obsiahnuté v&amp;amp;nbsp;dokumente aj s&amp;amp;nbsp;identifikačnými číslami.&lt;br /&gt;
=== Detailný popis najdôležitejších súborov ===&lt;br /&gt;
Vnútornú štruktúru niektorých súborov vysvetlíme na nasledujúcom jednoduchom dokumente programu Microsoft Excel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:excel.jpg|center|framed|Obrázok 2.2 Jednoduchý dokument XLSX]]&lt;br /&gt;
&lt;br /&gt;
Po rozbalení balíčka tohto dokumentu, a&amp;amp;nbsp;otvorení súboru sheet1.xml si ukážeme na príklade, ako sa dáta jednotlivých buniek ukladajú do tohto súboru:&lt;br /&gt;
&lt;br /&gt;
[[Image:row2.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;&amp;lt;row&amp;gt;&amp;lt;/nowiki&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Atribút „r“ elementu označuje číselné poradie riadka, čo je v&amp;amp;nbsp;našom prípade 2. Atribút „spans“ označuje rozsah daného riadka čo je v&amp;amp;nbsp;našom prípade prvá až šiesta bunka v&amp;amp;nbsp;riadku (1:6). Ďalej si môžeme v&amp;amp;nbsp;hierarchii XML dokumentu všimnúť, že element &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;row&amp;gt; obsahuje práve 6 elementov &amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/nowiki&amp;gt; ktoré reprezentujú našich 6 buniek. Každý element &amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/nowiki&amp;gt; má atribút „r“ ktorý označuje index danej bunky (A2, B2, C2…) a&amp;amp;nbsp;atribút „s“ označuje index štýlu aplikovaného na bunku a&amp;amp;nbsp;v&amp;amp;nbsp;niektorých elementoch sa vyskytuje aj atribút “t” ktorý obsahuje označenie dátového typu uloženého v&amp;amp;nbsp;danej bunke. V&amp;amp;nbsp;riedku 2 sú 3 bunky obsahujúce text, preto majú aj práve 3 elementy &amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/nowiki&amp;gt; atribút „t“, ktorý má hodnotu „s“, ktorá značí že v&amp;amp;nbsp;daných bunkách sa nachádzajú textové reťazce zo zoznamu sharedstrings.xml. &amp;lt;nowiki&amp;gt;Dátový typ bunky môže byť aj iný napr: boolean(b), error(e) atď. Ďalej každý element obsahuje element &amp;lt;v&amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v ktorom je uložená buď číselná hodnota zapísaná priamo v&amp;amp;nbsp;bunke, alebo index daného textového reťazca uloženého v&amp;amp;nbsp;súbore „sharedstrings.xml“. Ak je hodnota bunky vypočítaná podľa vzorca, tento vzorec je uložený v&amp;amp;nbsp;elemente &amp;lt;nowiki&amp;gt;&amp;lt;f&amp;gt;, ako je mo&amp;lt;/nowiki&amp;gt;žné vidieť pri bunke D2.&lt;br /&gt;
&lt;br /&gt;
Teraz si ukážeme štruktúru spomínaného súboru sharedstrings.xml:&lt;br /&gt;
&lt;br /&gt;
[[Image:shared strings.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Ako môžeme vidieť, sú tu za sebou v&amp;amp;nbsp;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&amp;amp;nbsp;balíka OOXML a&amp;amp;nbsp;poskladanie nie úplne presnej, ale postačujúcej kópie dokumentu.&lt;br /&gt;
&lt;br /&gt;
==Open Document Format==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2578</id>
		<title>Otvorené formáty kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2578"/>
		<updated>2010-03-11T10:35:18Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Office Open XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Bakalárske práce]][[Kategória:Informatika]][[Kategória:web]]&lt;br /&gt;
{{Praca_uvod|2|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
= =&lt;br /&gt;
== Office Open XML (OOXML) ==&lt;br /&gt;
S&amp;amp;nbsp;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&amp;amp;nbsp;balíka Office 2003 príponu predĺženú o&amp;amp;nbsp;písmeno „x“ (docx, xlsx, pptx…) a&amp;amp;nbsp;úplne odlišnú vnútornú štruktúru. Písmeno „x“ značí použitie XML v&amp;amp;nbsp;súboroch popisujúcich dokument. Celý súbor tohto balíka je v&amp;amp;nbsp;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&amp;amp;nbsp;dokumente a&amp;amp;nbsp;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&amp;amp;nbsp;skomprimované technológiu ZIP. To znamená, že ak prepíšeme príponu súboru na *.zip a&amp;amp;nbsp;otvoríme tento súbor v&amp;amp;nbsp;ľubovoľnom programe na otváranie komprimovaných súborov (WinRAR, 7Zip, Total Commander...) uvidíme vnútornú štruktúru dokumentu OOXML.&lt;br /&gt;
&lt;br /&gt;
Výhody ukladania do formátu OOXML:&lt;br /&gt;
&lt;br /&gt;
* Menšia veľkosť výsledného dokumentu vďaka komprimácii&lt;br /&gt;
* Väčšia bezpečnosť &lt;br /&gt;
* Menšia náchylnosť na poškodenie dokumentu&lt;br /&gt;
* Väčšia kompatibilita a&amp;amp;nbsp;prenesitelnosť dokumentu&lt;br /&gt;
&lt;br /&gt;
=== Vnútorná štruktúra súboru OOXML ===&lt;br /&gt;
Pre popísanie a&amp;amp;nbsp;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&amp;amp;nbsp;otvorení súboru môžeme vidieť nasledovnú stromovú štruktúru:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:kompletna_strukturaa.jpg|center|framed|Obrázok 2.1 Vnútorná štruktúra XLSX dokumentu]]&lt;br /&gt;
&lt;br /&gt;
Táto štruktúra, ako aj názvy adresárov a&amp;amp;nbsp;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&amp;amp;nbsp;dátam z&amp;amp;nbsp;narušenej časti štruktúry.&lt;br /&gt;
&lt;br /&gt;
=== Obsah jednotlivých adresárov a podadresárov ===&lt;br /&gt;
Koreňový adresár dokumentu obsahuje súbor &amp;lt;nowiki&amp;gt;[Content_types].xml&amp;lt;/nowiki&amp;gt;, 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&amp;amp;nbsp;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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;Default Extension=&amp;quot;xml&amp;quot; ContentType=&amp;quot;application/xml&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;koreňovom adresári sa ďalej nachádza adresár s&amp;amp;nbsp;názvom _RELS v&amp;amp;nbsp;tomto adresári je umiestnený súbor s&amp;amp;nbsp;názvom .rels tento súbor taktiež využíva špeciálne menné priestory a&amp;amp;nbsp;definuje vzťahy medzi hlavnými časťami dokumentu. Každý vzťah je tvorený tromi časťami informácie.&lt;br /&gt;
&lt;br /&gt;
* Unikátne identifikačné čislo v&amp;amp;nbsp;rámci dokumentu (Relationship ID)&lt;br /&gt;
* Typ vzťahu (Relationship Type)&lt;br /&gt;
* Ukazateľ na cieľ daného vzťahu&lt;br /&gt;
&lt;br /&gt;
Ukážka zadefinovania vzťahu v&amp;amp;nbsp;súbore .rels:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Relationship Id&amp;lt;nowiki&amp;gt;=&amp;quot;&amp;lt;/nowiki&amp;gt;rId1&amp;quot; Type&amp;lt;nowiki&amp;gt;=&amp;quot;&amp;lt;/nowiki&amp;gt;http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument&amp;quot; Target&amp;lt;nowiki&amp;gt;=&amp;quot;&amp;lt;/nowiki&amp;gt;xl/workbook.xml&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vo vnútronej štruktúre dokumentu môže byť viac súborov ktoré definujú vzťahy medzi časťami dokumentu, a&amp;amp;nbsp;vždy sú v&amp;amp;nbsp;danej časti dokumentu, v&amp;amp;nbsp;ktorej určujú vzťahy, uložené v&amp;amp;nbsp;adresári s&amp;amp;nbsp;názvom _RELS.&lt;br /&gt;
&lt;br /&gt;
Ďalej nasleduje adresár s&amp;amp;nbsp;názvom „XL“ názov tohto adresára je jedinečný, pre každý typ dokumentu balíka Microsoft Office je iný a&amp;amp;nbsp;podľa neho môžeme spoznať o&amp;amp;nbsp;aký typ dokumentu sa jedná. V&amp;amp;nbsp;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&amp;amp;nbsp;v&amp;amp;nbsp;ň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&amp;amp;nbsp;ň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&amp;amp;nbsp;pod. ďalší v&amp;amp;nbsp;poradí je adresár „WORKSHEETS“, ktorý obsahuje pre každý hárok dokumentu jeden XML súbor. Tzn. že v&amp;amp;nbsp;našom prípade dokument obsahuje 3 hárky, čo je minimum ktoré Microsoft Excel vytvorí pri vytváraní dokumentu. V&amp;amp;nbsp;súboroch sheetx.xml je v&amp;amp;nbsp;XML štruktúre uložený obsah daného dokumentu (hodnoty buniek, vzorce a&amp;amp;nbsp;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&amp;amp;nbsp;adresári „XL“. Súbor calcChain.xml obsahuje zoznam všetkých buniek v&amp;amp;nbsp;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&amp;amp;nbsp;vzhľade dokumentu ako predvolený font, farebné schémy, veľkosti buniek a&amp;amp;nbsp;pod a&amp;amp;nbsp;súbor workbook.xml obsahuje základné informácie o&amp;amp;nbsp;celom dokumente, ako verzie programov ktorými bol dokument editovaný, pohľad na dokument (veľkosť okna) a&amp;amp;nbsp;jednotlivé hárky obsiahnuté v&amp;amp;nbsp;dokumente aj s&amp;amp;nbsp;identifikačnými číslami.&lt;br /&gt;
&lt;br /&gt;
==Open Document Format==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2577</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2577"/>
		<updated>2010-03-11T10:22:00Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XQuery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg|center|framed|Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML]]&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
[[Image:strukturaxml.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Tento text je tučný a kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Tento text je tučný a kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených (“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
|-&lt;br /&gt;
! '''Špeciálny znak'''&lt;br /&gt;
! '''HTML entita'''&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;amp;lt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;&lt;br /&gt;
| &amp;amp;amp&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;amp;gt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;‘&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;amp;apos&lt;br /&gt;
|-&lt;br /&gt;
| “&lt;br /&gt;
| &amp;amp;quot&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
[[Image:pict.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabuľka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
Xpath (XML Path Language) vo verzii 1.0 definuje organizáciou W3C schválenú syntax popisu adries častí XML dokumentu. XPath výrazy sa vyhodnotia podľa logického stromu dokumentu a&amp;amp;nbsp;tak sa nájdu odpovedajúce uzly ( elementy, atribúty, text atd.). Spomínaná úroveň abstrakcie chráni vývojára pred zložitosťou fyzickej štruktúry dokumentu a&amp;amp;nbsp;výrazne zjednodušuje prácu. &lt;br /&gt;
&lt;br /&gt;
XPath definuje stromový model podľa ktorého sa vyhodnocujú všetky výrazy. Tento model zodpovedá logickej štruktúre XML dokumentu, ktorá je formálne definovaná ako XML Infoset (XML Information set). Obrázok 1.2 ilustruje stromový model XPath&lt;br /&gt;
&lt;br /&gt;
[[Image:xpath1.jpg|center|framed|Obrázok 1.2 Stromový model XPath]]&lt;br /&gt;
&lt;br /&gt;
Väčšina XPath výrazov popisuje množinu uzlov stromu. Napríklad nasledujúcemu výrazu zodpovedajú 2 elementy cena: /faktura/predmet/cena. Tomuto typu výrazu sa hovorí cesta (location path). XPath cesty vyzerajú podobne ako cesty v&amp;amp;nbsp;súborovom systéme, akurát navigujú v&amp;amp;nbsp;rámci stromového modelu, kde identifikujú množinu uzlov(node-set).&lt;br /&gt;
&lt;br /&gt;
XPath je abstraktný jazyk, preto môže byť implementovaný v&amp;amp;nbsp;mnohých rôznych prostrediach. Intenzívne sa používa pri XSL transformáciách (XSLT) k&amp;amp;nbsp;identifikácii uzlov vstupného dokumentu. Taktiež sa používa vo väčšine implementácií štandardu DOM, kvôli bohatším možnostiam vyhľadávania v&amp;amp;nbsp;dokumente. XPath sa dokonca využíva v&amp;amp;nbsp;niektorých moderných technológiách pre sprístupnenie dát, aby sa úložisko dát prezentovalo užívateľovi ako XML. Treba si uvedomiť že XPath výrazy iba definujú ako prechádzať logickou XML štruktúrou a&amp;amp;nbsp;nachádzať odpovedajúcu množinu uzlov, odkiaľ sa však táto logická štruktúra zoberie, to už záleží iba na implementácii.&lt;br /&gt;
&lt;br /&gt;
XPath prechádza strom uzlov v&amp;amp;nbsp;poradí dokumentu(document order). Poradie dokumentu je poradie v ktorom by sa uzly nachádzali v&amp;amp;nbsp;serializovanom XML dokumente(uzly sa prechádzajú zhora dole, z ľava do prava).&lt;br /&gt;
&lt;br /&gt;
Spolu s&amp;amp;nbsp;množinami uzlov, podporuje XPath ešte ďalšie tri dátové typy: logické hodnoty(Boolean), čísla(number) a textové reťazce(string). XPath definuje, ako sa množiny uzlov porovnávajú s&amp;amp;nbsp;každým z&amp;amp;nbsp;týchto typov a&amp;amp;nbsp;ako sa vynúti potrebný dátový typ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|+'''Tabuľka 1.2 '''Dátové typy&lt;br /&gt;
|-&lt;br /&gt;
! Dátový typ&lt;br /&gt;
! Popis&lt;br /&gt;
|-&lt;br /&gt;
| Množina uzlov (node-set)&lt;br /&gt;
| Množina uzlov bez násobného výskytu&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logická hodnota&lt;br /&gt;
| True (Pravda) alebo False (nepravda)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číslo(number)&lt;br /&gt;
| Číslo s&amp;amp;nbsp;plávajúcou desatinnou čiarkou&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Textový reťazec&lt;br /&gt;
| Postupnosť UCS znakov&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Každý XPath výraz vráti objekt jedného z&amp;amp;nbsp;možných typov. Konkrétny typ tohto objektu je možné vynútiť použitím odpovedajúcej funkcie boolean( ), number( ), alebo string( ). Ak je to potrebné vykoná sa implicitná konverzia objektu na iný dátový typ (napr. ak sa predáva množina uzlov funkcii, ktorá očakáva parameter typu textový reťazec). K porovnaniu a prevodu medzi množinami uzlov a&amp;amp;nbsp;ostatnými dátovými typmi je potrebné uzly zo stromového modelu previesť späť na textový reťazec. XPath definuje, ako v&amp;amp;nbsp;tomto prípade odpovedajúcu reťazcovú hodnotu (string value) získať. Prevádzaním uzlov späť na textové reťazce uľahčuje ich prevod na iné dátové typy a&amp;amp;nbsp;vzájomné porovnávanie medzi rôznymi typmi. Taktiež umožňuje tvorbu veľkého množstva ďalších výrazov.&lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka zhrňuje typy výrazov podporovaných štandardom XPath. Operátory ktoré sa používajú k&amp;amp;nbsp;tvorbe výrazov sú uvedené od najmenej dôležitých po operátory s&amp;amp;nbsp;najvyššou prioritou. Ku kontrole prednosti operátorov je možné použiť zátvorky.&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|+'''Tabuľka 1.3 '''Operátory&lt;br /&gt;
|-&lt;br /&gt;
! '''Typ výrazu'''&lt;br /&gt;
! '''Operátory'''&lt;br /&gt;
|-&lt;br /&gt;
| Cesta&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;/ , //, |&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logický výraz&lt;br /&gt;
| or, and&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Rovnosť&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;=, !=&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Relácie&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;=, &amp;lt;, &amp;gt;=, &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číselný výraz&lt;br /&gt;
| +, -, div, mod, *, -(unárne)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Atribút&lt;br /&gt;
| @&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
XPath sa uplatní všade tam, kde je potrebné vyberať z&amp;amp;nbsp;XML dokumentu len určité elementy, na základe vopred daných kritérií. Na XPath sú založené technológie ako XSLT a&amp;amp;nbsp;XQuery.&lt;br /&gt;
&lt;br /&gt;
==XSLT==&lt;br /&gt;
Dokument vo formáte XML prináša vo všeobecnosti formu, v&amp;amp;nbsp;ktorej je možné uložiť informácie rôzneho charakteru. Čo však v&amp;amp;nbsp;prípade, že forma nie je pre aktuálnu potrebu práve najvhodnejšia? Iste, XML parser nie je problém a stačí&amp;amp;nbsp;už len zapísať výsledok podľa potrebnej štruktúry. XSLT je práve o&amp;amp;nbsp;tom, ako to&amp;amp;nbsp;urobiť elegantne a&amp;amp;nbsp;efektívne. Samotný štandard eXtensible Stylesheet Language Transformations, akceptovaný konzorciom W3C, má predchodcu Extensible Stylesheet Language (XSL). Z&amp;amp;nbsp;pohľadu programátora tento „programovací jazyk transformácií“ XML údajov je, opäť a&amp;amp;nbsp;znova XML dokumentom, štruktúrou xsl tagov. &lt;br /&gt;
&lt;br /&gt;
Podporuje:&lt;br /&gt;
&lt;br /&gt;
* Flexibilné dátové typy: boolean, number, string, node-set&lt;br /&gt;
* Množinu operácií: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:template&amp;gt;, &amp;lt;xsl:apply-templates&amp;gt;, &amp;lt;xsl:sort&amp;gt;, …&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Vetvenia a cykly: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:if&amp;gt;, &amp;lt;xsl:choose&amp;gt;, &amp;lt;xsl:for-each&amp;gt;, ...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jednoduchú, ale kompletnú transformáciu dokumentu si ukážeme na príklade „Hello World“. Na začiatku je zdrojový súbor pozdrav.xml:&lt;br /&gt;
&lt;br /&gt;
[[Image:pict3.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Dokument obsahuje okrem povinných častí procesnú inštrukciu,:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;pozdrav.xsl&amp;quot;?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ktorá definuje odkaz na transformačný súbor pozdrav.xsl. Ten obsahuje jednoduchú kostru a&amp;amp;nbsp;xsl inštrukcie pre transformáciu zdrojového súboru do HTML dokumentu.&lt;br /&gt;
&lt;br /&gt;
[[Image:pict4.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Výsledkom transformácie je kód jednoduchej HTML stránky:&lt;br /&gt;
&lt;br /&gt;
[[Image:pict8.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Prvá použitá xsl inštrukcia definuje menný priestor týchto inštrukcií.&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform version=&amp;quot;1.0&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samozrejme, je možné doplniť aj ďalšie, momentálne sa ale obmedzíme na štandard W3C konzorcia. Jadro prevodu stojí na inštrukcii&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:template match=&amp;quot;/pozdrav&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;''.''&amp;amp;nbsp;Tá, zjednodušene povedané, definuje šablónu na prevod. Do výsledného dokumentu sa vloží len to, čo je obsiahnuté v&amp;amp;nbsp;rámci šablóny vzťahujúcej sa na koreňový uzol zdrojového súboru. V&amp;amp;nbsp;našom prípade to ale znamená aj informáciu, od koho pochádza pozdrav. Docielili sme to inštrukciou&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:apply-templates select=&amp;quot;od-koho&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;'',''&amp;amp;nbsp;ktorá v&amp;amp;nbsp;mieste svojho volania aplikuje našu druhú definovanú šablónu. Tento jednoduchý spôsob vnárania je synonymom volania procedúr a funkcií. Poslednou inštrukciou je &amp;lt;nowiki&amp;gt;&amp;lt;xsl:value-of&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;vkladajúca hodnotu uzla definovaného v&amp;amp;nbsp;atribúte select do miesta svojho volania. Bodka je pritom ekvivalentom názvu uzla, v&amp;amp;nbsp;ktorom je inštrukcia volaná. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:XSLT schema.jpg|center|framed|Obrázok 1.3 Schéma princípu XSLT]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tento príklad vystihuje dôležitú vlastnosť XSLT transformácií - je deklaratívna a založená na pravidlách. Pravidlá sa nazývajú šablóny. Sú to inštrukcie definujúce spôsob prenosu zdrojového elementu do výsledného dokumentu. Pre kompletnú transformáciu musia byť aplikované všetky šablóny.&amp;amp;nbsp;Sú však nezávislé jedna od druhej, a tak poradie spracovania nie je dôležité. V&amp;amp;nbsp;tomto bode je XSLT výrazne odlišné od procedurálneho programovania. Zo zápisu je zrejmé, že ak by sa v&amp;amp;nbsp;xml dokumente vyskytovali nejaké atribúty elementov, pri transformácii sa stratia. Toto sa dá vyriešiť pomocou XPath. Znak @ definuje odkaz na atribút uzla. Inštrukcia &amp;lt;xsl:value-of select=”@meno”/&amp;gt; použije hodnotu Peter z uzla&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;osoba meno=”Peter”/&amp;gt;&amp;lt;/nowiki&amp;gt;''.&amp;amp;nbsp;''Ak chcem atribúty aj vo výslednom dokumente, zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;uzol atribut=&amp;lt;xsl:value-of select=”.”/&amp;gt;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;''odmietne spracovať akýkoľvek XML parser. XSLT používa konštrukciu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;xsl:attribute name=”meno_atribútu”&amp;gt;hodnota_atribútu&amp;lt;/xsl:attribute&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Príklady vetvenia a&amp;amp;nbsp;cyklov v&amp;amp;nbsp;XSLT:&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
&lt;br /&gt;
[[Image:pict5.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SWITCH, SELECT, a&amp;amp;nbsp;podobne&lt;br /&gt;
&lt;br /&gt;
[[Image:pict6.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
FOR EACH&lt;br /&gt;
&lt;br /&gt;
[[Image:pict7.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
==XQuery==&lt;br /&gt;
XQuery je jazyk pre dotazovanie dát z XML dokumentov. XQuery 1.0 je jazyk veľmi podobný jazyku XPath 2.0, používa rovnaké funkcie a rovnaké operátory. Každý syntakticky správny výraz, ktorý sa vykoná v obidvoch jazykoch, vráti rovnaký výsledok aj v XPath aj v XQuery. XQuery používa rovnaký model dát (a rovnakú terminológiu) ako XPath. XQuery sa dá prirovnať k jazyku SQL a relačným databázam svojím významom a užitočnosťou pre XML súbory. Jeho špecifikácia a možnosti sú veľmi rozsiahle a keďže tento jazyk vo svojej práci nebudem využívať, nebudem sa mu ďalej venovať.&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict7.jpg&amp;diff=2576</id>
		<title>Súbor:Pict7.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict7.jpg&amp;diff=2576"/>
		<updated>2010-03-11T10:21:17Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict6.jpg&amp;diff=2575</id>
		<title>Súbor:Pict6.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict6.jpg&amp;diff=2575"/>
		<updated>2010-03-11T10:21:08Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict5.jpg&amp;diff=2574</id>
		<title>Súbor:Pict5.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict5.jpg&amp;diff=2574"/>
		<updated>2010-03-11T10:20:59Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:XSLT_schema.jpg&amp;diff=2573</id>
		<title>Súbor:XSLT schema.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:XSLT_schema.jpg&amp;diff=2573"/>
		<updated>2010-03-11T10:20:44Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict8.jpg&amp;diff=2572</id>
		<title>Súbor:Pict8.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict8.jpg&amp;diff=2572"/>
		<updated>2010-03-11T10:20:34Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict4.jpg&amp;diff=2571</id>
		<title>Súbor:Pict4.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict4.jpg&amp;diff=2571"/>
		<updated>2010-03-11T10:20:18Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict3.jpg&amp;diff=2570</id>
		<title>Súbor:Pict3.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict3.jpg&amp;diff=2570"/>
		<updated>2010-03-11T10:19:38Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2569</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2569"/>
		<updated>2010-03-11T10:18:57Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XSLT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg|center|framed|Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML]]&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
[[Image:strukturaxml.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Tento text je tučný a kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Tento text je tučný a kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených (“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
|-&lt;br /&gt;
! '''Špeciálny znak'''&lt;br /&gt;
! '''HTML entita'''&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;amp;lt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;&lt;br /&gt;
| &amp;amp;amp&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;amp;gt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;‘&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;amp;apos&lt;br /&gt;
|-&lt;br /&gt;
| “&lt;br /&gt;
| &amp;amp;quot&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
[[Image:pict.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabuľka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
Xpath (XML Path Language) vo verzii 1.0 definuje organizáciou W3C schválenú syntax popisu adries častí XML dokumentu. XPath výrazy sa vyhodnotia podľa logického stromu dokumentu a&amp;amp;nbsp;tak sa nájdu odpovedajúce uzly ( elementy, atribúty, text atd.). Spomínaná úroveň abstrakcie chráni vývojára pred zložitosťou fyzickej štruktúry dokumentu a&amp;amp;nbsp;výrazne zjednodušuje prácu. &lt;br /&gt;
&lt;br /&gt;
XPath definuje stromový model podľa ktorého sa vyhodnocujú všetky výrazy. Tento model zodpovedá logickej štruktúre XML dokumentu, ktorá je formálne definovaná ako XML Infoset (XML Information set). Obrázok 1.2 ilustruje stromový model XPath&lt;br /&gt;
&lt;br /&gt;
[[Image:xpath1.jpg|center|framed|Obrázok 1.2 Stromový model XPath]]&lt;br /&gt;
&lt;br /&gt;
Väčšina XPath výrazov popisuje množinu uzlov stromu. Napríklad nasledujúcemu výrazu zodpovedajú 2 elementy cena: /faktura/predmet/cena. Tomuto typu výrazu sa hovorí cesta (location path). XPath cesty vyzerajú podobne ako cesty v&amp;amp;nbsp;súborovom systéme, akurát navigujú v&amp;amp;nbsp;rámci stromového modelu, kde identifikujú množinu uzlov(node-set).&lt;br /&gt;
&lt;br /&gt;
XPath je abstraktný jazyk, preto môže byť implementovaný v&amp;amp;nbsp;mnohých rôznych prostrediach. Intenzívne sa používa pri XSL transformáciách (XSLT) k&amp;amp;nbsp;identifikácii uzlov vstupného dokumentu. Taktiež sa používa vo väčšine implementácií štandardu DOM, kvôli bohatším možnostiam vyhľadávania v&amp;amp;nbsp;dokumente. XPath sa dokonca využíva v&amp;amp;nbsp;niektorých moderných technológiách pre sprístupnenie dát, aby sa úložisko dát prezentovalo užívateľovi ako XML. Treba si uvedomiť že XPath výrazy iba definujú ako prechádzať logickou XML štruktúrou a&amp;amp;nbsp;nachádzať odpovedajúcu množinu uzlov, odkiaľ sa však táto logická štruktúra zoberie, to už záleží iba na implementácii.&lt;br /&gt;
&lt;br /&gt;
XPath prechádza strom uzlov v&amp;amp;nbsp;poradí dokumentu(document order). Poradie dokumentu je poradie v ktorom by sa uzly nachádzali v&amp;amp;nbsp;serializovanom XML dokumente(uzly sa prechádzajú zhora dole, z ľava do prava).&lt;br /&gt;
&lt;br /&gt;
Spolu s&amp;amp;nbsp;množinami uzlov, podporuje XPath ešte ďalšie tri dátové typy: logické hodnoty(Boolean), čísla(number) a textové reťazce(string). XPath definuje, ako sa množiny uzlov porovnávajú s&amp;amp;nbsp;každým z&amp;amp;nbsp;týchto typov a&amp;amp;nbsp;ako sa vynúti potrebný dátový typ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|+'''Tabuľka 1.2 '''Dátové typy&lt;br /&gt;
|-&lt;br /&gt;
! Dátový typ&lt;br /&gt;
! Popis&lt;br /&gt;
|-&lt;br /&gt;
| Množina uzlov (node-set)&lt;br /&gt;
| Množina uzlov bez násobného výskytu&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logická hodnota&lt;br /&gt;
| True (Pravda) alebo False (nepravda)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číslo(number)&lt;br /&gt;
| Číslo s&amp;amp;nbsp;plávajúcou desatinnou čiarkou&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Textový reťazec&lt;br /&gt;
| Postupnosť UCS znakov&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Každý XPath výraz vráti objekt jedného z&amp;amp;nbsp;možných typov. Konkrétny typ tohto objektu je možné vynútiť použitím odpovedajúcej funkcie boolean( ), number( ), alebo string( ). Ak je to potrebné vykoná sa implicitná konverzia objektu na iný dátový typ (napr. ak sa predáva množina uzlov funkcii, ktorá očakáva parameter typu textový reťazec). K porovnaniu a prevodu medzi množinami uzlov a&amp;amp;nbsp;ostatnými dátovými typmi je potrebné uzly zo stromového modelu previesť späť na textový reťazec. XPath definuje, ako v&amp;amp;nbsp;tomto prípade odpovedajúcu reťazcovú hodnotu (string value) získať. Prevádzaním uzlov späť na textové reťazce uľahčuje ich prevod na iné dátové typy a&amp;amp;nbsp;vzájomné porovnávanie medzi rôznymi typmi. Taktiež umožňuje tvorbu veľkého množstva ďalších výrazov.&lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka zhrňuje typy výrazov podporovaných štandardom XPath. Operátory ktoré sa používajú k&amp;amp;nbsp;tvorbe výrazov sú uvedené od najmenej dôležitých po operátory s&amp;amp;nbsp;najvyššou prioritou. Ku kontrole prednosti operátorov je možné použiť zátvorky.&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|+'''Tabuľka 1.3 '''Operátory&lt;br /&gt;
|-&lt;br /&gt;
! '''Typ výrazu'''&lt;br /&gt;
! '''Operátory'''&lt;br /&gt;
|-&lt;br /&gt;
| Cesta&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;/ , //, |&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logický výraz&lt;br /&gt;
| or, and&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Rovnosť&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;=, !=&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Relácie&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;=, &amp;lt;, &amp;gt;=, &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číselný výraz&lt;br /&gt;
| +, -, div, mod, *, -(unárne)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Atribút&lt;br /&gt;
| @&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
XPath sa uplatní všade tam, kde je potrebné vyberať z&amp;amp;nbsp;XML dokumentu len určité elementy, na základe vopred daných kritérií. Na XPath sú založené technológie ako XSLT a&amp;amp;nbsp;XQuery.&lt;br /&gt;
&lt;br /&gt;
==XSLT==&lt;br /&gt;
Dokument vo formáte XML prináša vo všeobecnosti formu, v&amp;amp;nbsp;ktorej je možné uložiť informácie rôzneho charakteru. Čo však v&amp;amp;nbsp;prípade, že forma nie je pre aktuálnu potrebu práve najvhodnejšia? Iste, XML parser nie je problém a stačí&amp;amp;nbsp;už len zapísať výsledok podľa potrebnej štruktúry. XSLT je práve o&amp;amp;nbsp;tom, ako to&amp;amp;nbsp;urobiť elegantne a&amp;amp;nbsp;efektívne. Samotný štandard eXtensible Stylesheet Language Transformations, akceptovaný konzorciom W3C, má predchodcu Extensible Stylesheet Language (XSL). Z&amp;amp;nbsp;pohľadu programátora tento „programovací jazyk transformácií“ XML údajov je, opäť a&amp;amp;nbsp;znova XML dokumentom, štruktúrou xsl tagov. &lt;br /&gt;
&lt;br /&gt;
Podporuje:&lt;br /&gt;
&lt;br /&gt;
* Flexibilné dátové typy: boolean, number, string, node-set&lt;br /&gt;
* Množinu operácií: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:template&amp;gt;, &amp;lt;xsl:apply-templates&amp;gt;, &amp;lt;xsl:sort&amp;gt;, …&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Vetvenia a cykly: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:if&amp;gt;, &amp;lt;xsl:choose&amp;gt;, &amp;lt;xsl:for-each&amp;gt;, ...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jednoduchú, ale kompletnú transformáciu dokumentu si ukážeme na príklade „Hello World“. Na začiatku je zdrojový súbor pozdrav.xml:&lt;br /&gt;
&lt;br /&gt;
[[Image:pict3.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Dokument obsahuje okrem povinných častí procesnú inštrukciu,:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;pozdrav.xsl&amp;quot;?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ktorá definuje odkaz na transformačný súbor pozdrav.xsl. Ten obsahuje jednoduchú kostru a&amp;amp;nbsp;xsl inštrukcie pre transformáciu zdrojového súboru do HTML dokumentu.&lt;br /&gt;
&lt;br /&gt;
[[Image:pict4.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Výsledkom transformácie je kód jednoduchej HTML stránky:&lt;br /&gt;
&lt;br /&gt;
[[Image:pict8.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Prvá použitá xsl inštrukcia definuje menný priestor týchto inštrukcií.&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform version=&amp;quot;1.0&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samozrejme, je možné doplniť aj ďalšie, momentálne sa ale obmedzíme na štandard W3C konzorcia. Jadro prevodu stojí na inštrukcii&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:template match=&amp;quot;/pozdrav&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;''.''&amp;amp;nbsp;Tá, zjednodušene povedané, definuje šablónu na prevod. Do výsledného dokumentu sa vloží len to, čo je obsiahnuté v&amp;amp;nbsp;rámci šablóny vzťahujúcej sa na koreňový uzol zdrojového súboru. V&amp;amp;nbsp;našom prípade to ale znamená aj informáciu, od koho pochádza pozdrav. Docielili sme to inštrukciou&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:apply-templates select=&amp;quot;od-koho&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;'',''&amp;amp;nbsp;ktorá v&amp;amp;nbsp;mieste svojho volania aplikuje našu druhú definovanú šablónu. Tento jednoduchý spôsob vnárania je synonymom volania procedúr a funkcií. Poslednou inštrukciou je &amp;lt;nowiki&amp;gt;&amp;lt;xsl:value-of&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;vkladajúca hodnotu uzla definovaného v&amp;amp;nbsp;atribúte select do miesta svojho volania. Bodka je pritom ekvivalentom názvu uzla, v&amp;amp;nbsp;ktorom je inštrukcia volaná. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:XSLT schema.jpg|center|framed|Obrázok 1.3 Schéma princípu XSLT]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tento príklad vystihuje dôležitú vlastnosť XSLT transformácií - je deklaratívna a založená na pravidlách. Pravidlá sa nazývajú šablóny. Sú to inštrukcie definujúce spôsob prenosu zdrojového elementu do výsledného dokumentu. Pre kompletnú transformáciu musia byť aplikované všetky šablóny.&amp;amp;nbsp;Sú však nezávislé jedna od druhej, a tak poradie spracovania nie je dôležité. V&amp;amp;nbsp;tomto bode je XSLT výrazne odlišné od procedurálneho programovania. Zo zápisu je zrejmé, že ak by sa v&amp;amp;nbsp;xml dokumente vyskytovali nejaké atribúty elementov, pri transformácii sa stratia. Toto sa dá vyriešiť pomocou XPath. Znak @ definuje odkaz na atribút uzla. Inštrukcia &amp;lt;xsl:value-of select=”@meno”/&amp;gt; použije hodnotu Peter z uzla&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;osoba meno=”Peter”/&amp;gt;&amp;lt;/nowiki&amp;gt;''.&amp;amp;nbsp;''Ak chcem atribúty aj vo výslednom dokumente, zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;uzol atribut=&amp;lt;xsl:value-of select=”.”/&amp;gt;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;''odmietne spracovať akýkoľvek XML parser. XSLT používa konštrukciu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;xsl:attribute name=”meno_atribútu”&amp;gt;hodnota_atribútu&amp;lt;/xsl:attribute&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Príklady vetvenia a&amp;amp;nbsp;cyklov v&amp;amp;nbsp;XSLT:&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
&lt;br /&gt;
[[Image:pict5.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SWITCH, SELECT, a&amp;amp;nbsp;podobne&lt;br /&gt;
&lt;br /&gt;
[[Image:pict6.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
FOR EACH&lt;br /&gt;
&lt;br /&gt;
[[Image:pict7.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Bakal%C3%A1rske_pr%C3%A1ce&amp;diff=2155</id>
		<title>Bakalárske práce</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Bakal%C3%A1rske_pr%C3%A1ce&amp;diff=2155"/>
		<updated>2010-02-16T14:30:01Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* 2009/2010 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==2009/2010==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;  border=1 cellpadding=5 cellspacing=0&lt;br /&gt;
|+ Zoznam bakalárskych prác&lt;br /&gt;
|- style=&amp;quot;background-color:yellow&amp;quot;&lt;br /&gt;
!Autor&lt;br /&gt;
!Názov práce&lt;br /&gt;
!Stav práce&lt;br /&gt;
!Zadanie&lt;br /&gt;
|-&lt;br /&gt;
|Milan Porubský&lt;br /&gt;
|[[Systém tvorby rozvrhu]]&lt;br /&gt;
|{{stav_prace|50}}&lt;br /&gt;
|[[Systém tvorby rozvrhu (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Dušan Pagáč&lt;br /&gt;
|[[Off-line funkcionalita on-line web aplikácií]]&lt;br /&gt;
|{{stav_prace|10}}&lt;br /&gt;
|[[Off-line funkcionalita on-line web aplikácií (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Dávid Ďurika&lt;br /&gt;
|[[Štatistický modul v systéme rozvrhu FM]]&lt;br /&gt;
|{{stav_prace|10}}&lt;br /&gt;
|[[Štatistický modul v systéme rozvrhu FM (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Gabriel Gašpar, Bc.&lt;br /&gt;
|[[Autonómny systém pre zber teplotných dát z pôdneho profilu]]&lt;br /&gt;
|{{stav_prace|44.57}}&lt;br /&gt;
|[[Autonómny systém pre zber teplotných dát z pôdneho profilu (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Lukáš Krajči&lt;br /&gt;
|[[Otvorené formáty súborov kancelárskych softvérov]]&lt;br /&gt;
|{{stav_prace|66.6}}&lt;br /&gt;
|[[Otvorené formáty súborov kancelárskych softvérov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Martin Pilař&lt;br /&gt;
|[[Poloautomatický parkovací systém]]&lt;br /&gt;
|{{stav_prace|70}}&lt;br /&gt;
|[[Poloautomatický parkovací systém (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Ľubomír Milko&lt;br /&gt;
|[[Aplikácie teórie grafov a teórie hier v rozhodovacích problémoch]]&lt;br /&gt;
|{{stav_prace|70}}&lt;br /&gt;
|[[Aplikácie teórie grafov a teórie hier v rozhodovacích problémoch (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Peter Magala&lt;br /&gt;
|[[Bezpečnosť webových aplikácií]]&lt;br /&gt;
|{{stav_prace|10}}&lt;br /&gt;
|[[Bezpečnosť webových aplikácií (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Ján Čižmárik&lt;br /&gt;
|[[Metódy riešenia optimalizačných problémov]]&lt;br /&gt;
|{{stav_prace|80}}&lt;br /&gt;
|[[Metódy riešenia optimalizačných problémov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Martin Cibulka&lt;br /&gt;
|[[Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme]]&lt;br /&gt;
|{{stav_prace|40}}&lt;br /&gt;
|[[Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Lukáš Ronec&lt;br /&gt;
|[[Generátor náhľadov fotografií umiestnených na webe]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
|[[Generátor náhľadov fotografií umiestnených na webe (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Július Jančo&lt;br /&gt;
|[[Spektrálna nedeštruktívna diagnostika mechatronického podsystému]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
|[[Spektrálna nedeštruktívna diagnostika mechatronického podsystému (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Juraj Prívara&lt;br /&gt;
|[[Použitie mikrouchopovačov MEMS]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
|[[Použitie mikrouchopovačov MEMS (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Emanuel Dubovan&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dušan Vojsovič&lt;br /&gt;
|[[Porovnanie výkonnosti virtualizačných softvérových produktov]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
||[[Porovnanie výkonnosti virtualizačných softvérových produktov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==2008/2009==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;  border=1 cellpadding=5 cellspacing=0&lt;br /&gt;
|+ Zoznam bakalárskych prác&lt;br /&gt;
|- style=&amp;quot;background-color:yellow&amp;quot;&lt;br /&gt;
! Autor&lt;br /&gt;
! Názov práce&lt;br /&gt;
! Stav práce&lt;br /&gt;
|- &lt;br /&gt;
|Ivana Zuzinová&lt;br /&gt;
|[[Pokročilé vlastnosti skiptovacích jazykov]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|}&lt;br /&gt;
Staršie práce budú pridané.&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Študentské práce]]&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2009</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=2009"/>
		<updated>2010-02-15T20:05:54Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XPath */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg|center|framed|Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML]]&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
[[Image:strukturaxml.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Tento text je tučný a kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Tento text je tučný a kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených (“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|+'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
! &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
[[Image:pict.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabuľka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
Xpath (XML Path Language) vo verzii 1.0 definuje organizáciou W3C schválenú syntax popisu adries častí XML dokumentu. XPath výrazy sa vyhodnotia podľa logického stromu dokumentu a&amp;amp;nbsp;tak sa nájdu odpovedajúce uzly ( elementy, atribúty, text atd.). Spomínaná úroveň abstrakcie chráni vývojára pred zložitosťou fyzickej štruktúry dokumentu a&amp;amp;nbsp;výrazne zjednodušuje prácu. &lt;br /&gt;
&lt;br /&gt;
XPath definuje stromový model podľa ktorého sa vyhodnocujú všetky výrazy. Tento model zodpovedá logickej štruktúre XML dokumentu, ktorá je formálne definovaná ako XML Infoset (XML Information set). Obrázok 1.2 ilustruje stromový model XPath&lt;br /&gt;
&lt;br /&gt;
[[Image:xpath1.jpg|center|framed|Obrázok 1.2 Stromový model XPath]]&lt;br /&gt;
&lt;br /&gt;
Väčšina XPath výrazov popisuje množinu uzlov stromu. Napríklad nasledujúcemu výrazu zodpovedajú 2 elementy cena: /faktura/predmet/cena. Tomuto typu výrazu sa hovorí cesta (location path). XPath cesty vyzerajú podobne ako cesty v&amp;amp;nbsp;súborovom systéme, akurát navigujú v&amp;amp;nbsp;rámci stromového modelu, kde identifikujú množinu uzlov(node-set).&lt;br /&gt;
&lt;br /&gt;
XPath je abstraktný jazyk, preto môže byť implementovaný v&amp;amp;nbsp;mnohých rôznych prostrediach. Intenzívne sa používa pri XSL transformáciách (XSLT) k&amp;amp;nbsp;identifikácii uzlov vstupného dokumentu. Taktiež sa používa vo väčšine implementácií štandardu DOM, kvôli bohatším možnostiam vyhľadávania v&amp;amp;nbsp;dokumente. XPath sa dokonca využíva v&amp;amp;nbsp;niektorých moderných technológiách pre sprístupnenie dát, aby sa úložisko dát prezentovalo užívateľovi ako XML. Treba si uvedomiť že XPath výrazy iba definujú ako prechádzať logickou XML štruktúrou a&amp;amp;nbsp;nachádzať odpovedajúcu množinu uzlov, odkiaľ sa však táto logická štruktúra zoberie, to už záleží iba na implementácii.&lt;br /&gt;
&lt;br /&gt;
XPath prechádza strom uzlov v&amp;amp;nbsp;poradí dokumentu(document order). Poradie dokumentu je poradie v ktorom by sa uzly nachádzali v&amp;amp;nbsp;serializovanom XML dokumente(uzly sa prechádzajú zhora dole, z ľava do prava).&lt;br /&gt;
&lt;br /&gt;
Spolu s&amp;amp;nbsp;množinami uzlov, podporuje XPath ešte ďalšie tri dátové typy: logické hodnoty(Boolean), čísla(number) a textové reťazce(string). XPath definuje, ako sa množiny uzlov porovnávajú s&amp;amp;nbsp;každým z&amp;amp;nbsp;týchto typov a&amp;amp;nbsp;ako sa vynúti potrebný dátový typ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|+'''Tabuľka 1.2 '''Dátové typy&lt;br /&gt;
|-&lt;br /&gt;
! Dátový typ&lt;br /&gt;
! Popis&lt;br /&gt;
|-&lt;br /&gt;
| Množina uzlov (node-set)&lt;br /&gt;
| Množina uzlov bez násobného výskytu&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logická hodnota&lt;br /&gt;
| True (Pravda) alebo False (nepravda)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číslo(number)&lt;br /&gt;
| Číslo s&amp;amp;nbsp;plávajúcou desatinnou čiarkou&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Textový reťazec&lt;br /&gt;
| Postupnosť UCS znakov&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Každý XPath výraz vráti objekt jedného z&amp;amp;nbsp;možných typov. Konkrétny typ tohto objektu je možné vynútiť použitím odpovedajúcej funkcie boolean( ), number( ), alebo string( ). Ak je to potrebné vykoná sa implicitná konverzia objektu na iný dátový typ (napr. ak sa predáva množina uzlov funkcii, ktorá očakáva parameter typu textový reťazec). K porovnaniu a prevodu medzi množinami uzlov a&amp;amp;nbsp;ostatnými dátovými typmi je potrebné uzly zo stromového modelu previesť späť na textový reťazec. XPath definuje, ako v&amp;amp;nbsp;tomto prípade odpovedajúcu reťazcovú hodnotu (string value) získať. Prevádzaním uzlov späť na textové reťazce uľahčuje ich prevod na iné dátové typy a&amp;amp;nbsp;vzájomné porovnávanie medzi rôznymi typmi. Taktiež umožňuje tvorbu veľkého množstva ďalších výrazov.&lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka zhrňuje typy výrazov podporovaných štandardom XPath. Operátory ktoré sa používajú k&amp;amp;nbsp;tvorbe výrazov sú uvedené od najmenej dôležitých po operátory s&amp;amp;nbsp;najvyššou prioritou. Ku kontrole prednosti operátorov je možné použiť zátvorky.&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|+'''Tabuľka 1.3 '''Operátory&lt;br /&gt;
|-&lt;br /&gt;
! '''Typ výrazu'''&lt;br /&gt;
! '''Operátory'''&lt;br /&gt;
|-&lt;br /&gt;
| Cesta&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;/ , //, |&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logický výraz&lt;br /&gt;
| or, and&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Rovnosť&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;=, !=&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Relácie&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;=, &amp;lt;, &amp;gt;=, &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číselný výraz&lt;br /&gt;
| +, -, div, mod, *, -(unárne)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Atribút&lt;br /&gt;
| @&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
XPath sa uplatní všade tam, kde je potrebné vyberať z&amp;amp;nbsp;XML dokumentu len určité elementy, na základe vopred daných kritérií. Na XPath sú založené technológie ako XSLT a&amp;amp;nbsp;XQuery.&lt;br /&gt;
&lt;br /&gt;
==XSLT==&lt;br /&gt;
Dokument vo formáte XML prináša vo všeobecnosti formu, v&amp;amp;nbsp;ktorej je možné uložiť informácie rôzneho charakteru. Čo však v&amp;amp;nbsp;prípade, že forma nie je pre aktuálnu potrebu práve najvhodnejšia? Iste, XML parser nie je problém a stačí&amp;amp;nbsp;už len zapísať výsledok podľa potrebnej štruktúry. XSLT je práve o&amp;amp;nbsp;tom, ako to&amp;amp;nbsp;urobiť elegantne a&amp;amp;nbsp;efektívne. Samotný štandard eXtensible Stylesheet Language Transformations, akceptovaný konzorciom W3C, má predchodcu Extensible Stylesheet Language (XSL). Z&amp;amp;nbsp;pohľadu programátora tento „programovací jazyk transformácií“ XML údajov je, opäť a&amp;amp;nbsp;znova XML dokumentom, štruktúrou xsl tagov. &lt;br /&gt;
&lt;br /&gt;
Podporuje:&lt;br /&gt;
&lt;br /&gt;
* Flexibilné dátové typy: boolean, number, string, node-set&lt;br /&gt;
* Množinu operácií: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:template&amp;gt;, &amp;lt;xsl:apply-templates&amp;gt;, &amp;lt;xsl:sort&amp;gt;, …&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Vetvenia a cykly: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:if&amp;gt;, &amp;lt;xsl:choose&amp;gt;, &amp;lt;xsl:for-each&amp;gt;, ...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jednoduchú, ale kompletnú transformáciu dokumentu si ukážeme na príklade „Hello World“. Na začiatku je zdrojový súbor pozdrav.xml:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dokument obsahuje okrem povinných častí procesnú inštrukciu,:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;pozdrav.xsl&amp;quot;?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ktorá definuje odkaz na transformačný súbor pozdrav.xsl. Ten obsahuje jednoduchú kostru a&amp;amp;nbsp;xsl inštrukcie pre transformáciu zdrojového súboru do HTML dokumentu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Výsledkom transformácie je kód jednoduchej HTML stránky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prvá použitá xsl inštrukcia definuje menný priestor týchto inštrukcií.&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform version=&amp;quot;1.0&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samozrejme, je možné doplniť aj ďalšie, momentálne sa ale obmedzíme na štandard W3C konzorcia. Jadro prevodu stojí na inštrukcii&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:template match=&amp;quot;/pozdrav&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;''.''&amp;amp;nbsp;Tá, zjednodušene povedané, definuje šablónu na prevod. Do výsledného dokumentu sa vloží len to, čo je obsiahnuté v&amp;amp;nbsp;rámci šablóny vzťahujúcej sa na koreňový uzol zdrojového súboru. V&amp;amp;nbsp;našom prípade to ale znamená aj informáciu, od koho pochádza pozdrav. Docielili sme to inštrukciou&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:apply-templates select=&amp;quot;od-koho&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;'',''&amp;amp;nbsp;ktorá v&amp;amp;nbsp;mieste svojho volania aplikuje našu druhú definovanú šablónu. Tento jednoduchý spôsob vnárania je synonymom volania procedúr a funkcií. Poslednou inštrukciou je &amp;lt;nowiki&amp;gt;&amp;lt;xsl:value-of&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;vkladajúca hodnotu uzla definovaného v&amp;amp;nbsp;atribúte select do miesta svojho volania. Bodka je pritom ekvivalentom názvu uzla, v&amp;amp;nbsp;ktorom je inštrukcia volaná. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:|center|framed|Obrázok 1.3 Schéma princípu XSLT]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tento príklad vystihuje dôležitú vlastnosť XSLT transformácií - je deklaratívna a založená na pravidlách. Pravidlá sa nazývajú šablóny. Sú to inštrukcie definujúce spôsob prenosu zdrojového elementu do výsledného dokumentu. Pre kompletnú transformáciu musia byť aplikované všetky šablóny.&amp;amp;nbsp;Sú však nezávislé jedna od druhej, a tak poradie spracovania nie je dôležité. V&amp;amp;nbsp;tomto bode je XSLT výrazne odlišné od procedurálneho programovania. Zo zápisu je zrejmé, že ak by sa v&amp;amp;nbsp;xml dokumente vyskytovali nejaké atribúty elementov, pri transformácii sa stratia. Toto sa dá vyriešiť pomocou XPath. Znak @ definuje odkaz na atribút uzla. Inštrukcia &amp;lt;xsl:value-of select=”@meno”/&amp;gt; použije hodnotu Peter z uzla&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;osoba meno=”Peter”/&amp;gt;&amp;lt;/nowiki&amp;gt;''.&amp;amp;nbsp;''Ak chcem atribúty aj vo výslednom dokumente, zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;uzol atribut=&amp;lt;xsl:value-of select=”.”/&amp;gt;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;''odmietne spracovať akýkoľvek XML parser. XSLT používa konštrukciu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;xsl:attribute name=”meno_atribútu”&amp;gt;hodnota_atribútu&amp;lt;/xsl:attribute&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Príklady vetvenia a&amp;amp;nbsp;cyklov v&amp;amp;nbsp;XSLT:&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SWITCH, SELECT, a&amp;amp;nbsp;podobne&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOR EACH&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Xpath1.jpg&amp;diff=2008</id>
		<title>Súbor:Xpath1.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Xpath1.jpg&amp;diff=2008"/>
		<updated>2010-02-15T20:03:19Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict.jpg&amp;diff=2007</id>
		<title>Súbor:Pict.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pict.jpg&amp;diff=2007"/>
		<updated>2010-02-15T19:49:30Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1965</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1965"/>
		<updated>2010-02-14T17:09:42Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Syntaktické pravidlá XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:strukturaxml.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.1 '''Špeciálne znaky&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:pict.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
Xpath (XML Path Language) vo verzii 1.0 definuje organizáciou W3C schválenú syntax popisu adries častí XML dokumentu. XPath výrazy sa vyhodnotia podľa logického stromu dokumentu a&amp;amp;nbsp;tak sa nájdu odpovedajúce uzly ( elementy, atribúty, text atd.). Spomínaná úroveň abstrakcie chráni vývojára pred zložitosťou fyzickej štruktúry dokumentu a&amp;amp;nbsp;výrazne zjednodušuje prácu. &lt;br /&gt;
&lt;br /&gt;
XPath definuje stromový model podľa ktorého sa vyhodnocujú všetky výrazy. Tento model zodpovedá logickej štruktúre XML dokumentu, ktorá je formálne definovaná ako XML Infoset (XML Information set). Obrázok 1.2 ilustruje stromový model XPath&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:xpath1.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Obrázok 1.2''' Stromový model XPath&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väčšina XPath výrazov popisuje množinu uzlov stromu. Napríklad nasledujúcemu výrazu zodpovedajú 2 elementy cena: /faktura/predmet/cena. Tomuto typu výrazu sa hovorí cesta (location path). XPath cesty vyzerajú podobne ako cesty v&amp;amp;nbsp;súborovom systéme, akurát navigujú v&amp;amp;nbsp;rámci stromového modelu, kde identifikujú množinu uzlov(node-set).&lt;br /&gt;
&lt;br /&gt;
XPath je abstraktný jazyk, preto môže byť implementovaný v&amp;amp;nbsp;mnohých rôznych prostrediach. Intenzívne sa používa pri XSL transformáciách (XSLT) k&amp;amp;nbsp;identifikácii uzlov vstupného dokumentu. Taktiež sa používa vo väčšine implementácií štandardu DOM, kvôli bohatším možnostiam vyhľadávania v&amp;amp;nbsp;dokumente. XPath sa dokonca využíva v&amp;amp;nbsp;niektorých moderných technológiách pre sprístupnenie dát, aby sa úložisko dát prezentovalo užívateľovi ako XML. Treba si uvedomiť že XPath výrazy iba definujú ako prechádzať logickou XML štruktúrou a&amp;amp;nbsp;nachádzať odpovedajúcu množinu uzlov, odkiaľ sa však táto logická štruktúra zoberie, to už záleží iba na implementácii.&lt;br /&gt;
&lt;br /&gt;
XPath prechádza strom uzlov v&amp;amp;nbsp;poradí dokumentu(document order). Poradie dokumentu je poradie v ktorom by sa uzly nachádzali v&amp;amp;nbsp;serializovanom XML dokumente(uzly sa prechádzajú zhora dole, z ľava do prava).&lt;br /&gt;
&lt;br /&gt;
Spolu s&amp;amp;nbsp;množinami uzlov, podporuje XPath ešte ďalšie tri dátové typy: logické hodnoty(Boolean), čísla(number) a textové reťazce(string). XPath definuje, ako sa množiny uzlov porovnávajú s&amp;amp;nbsp;každým z&amp;amp;nbsp;týchto typov a&amp;amp;nbsp;ako sa vynúti potrebný dátový typ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.2 '''Dátové typy&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Dátový typ'''&lt;br /&gt;
| '''Popis'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Množina uzlov (node-set)&lt;br /&gt;
| Množina uzlov bez násobného výskytu&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logická hodnota&lt;br /&gt;
| True (Pravda) alebo False (nepravda)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číslo(number)&lt;br /&gt;
| Číslo s&amp;amp;nbsp;plávajúcou desatinnou čiarkou&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Textový reťazec&lt;br /&gt;
| Postupnosť UCS znakov&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
Každý XPath výraz vráti objekt jedného z&amp;amp;nbsp;možných typov. Konkrétny typ tohto objektu je možné vynútiť použitím odpovedajúcej funkcie boolean( ), number( ), alebo string( ). Ak je to potrebné vykoná sa implicitná konverzia objektu na iný dátový typ (napr. ak sa predáva množina uzlov funkcii, ktorá očakáva parameter typu textový reťazec). K porovnaniu a prevodu medzi množinami uzlov a&amp;amp;nbsp;ostatnými dátovými typmi je potrebné uzly zo stromového modelu previesť späť na textový reťazec. XPath definuje, ako v&amp;amp;nbsp;tomto prípade odpovedajúcu reťazcovú hodnotu (string value) získať. Prevádzaním uzlov späť na textové reťazce uľahčuje ich prevod na iné dátové typy a&amp;amp;nbsp;vzájomné porovnávanie medzi rôznymi typmi. Taktiež umožňuje tvorbu veľkého množstva ďalších výrazov.&lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka zhrňuje typy výrazov podporovaných štandardom XPath. Operátory ktoré sa používajú k&amp;amp;nbsp;tvorbe výrazov sú uvedené od najmenej dôležitých po operátory s&amp;amp;nbsp;najvyššou prioritou. Ku kontrole prednosti operátorov je možné použiť zátvorky.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.3 '''Operátory&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Typ výrazu'''&lt;br /&gt;
| '''Operátory'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Cesta&lt;br /&gt;
| / , //, |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logický výraz&lt;br /&gt;
| or, and&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Rovnosť&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;=, !=&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Relácie&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;=, &amp;lt;, &amp;gt;=, &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číselný výraz&lt;br /&gt;
| +, -, div, mod, *, -(unárne)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Atribút&lt;br /&gt;
| @&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
XPath sa uplatní všade tam, kde je potrebné vyberať z&amp;amp;nbsp;XML dokumentu len určité elementy, na základe vopred daných kritérií. Na XPath sú založené technológie ako XSLT a&amp;amp;nbsp;XQuery.&lt;br /&gt;
&lt;br /&gt;
==XSLT==&lt;br /&gt;
Dokument vo formáte XML prináša vo všeobecnosti formu, v&amp;amp;nbsp;ktorej je možné uložiť informácie rôzneho charakteru. Čo však v&amp;amp;nbsp;prípade, že forma nie je pre aktuálnu potrebu práve najvhodnejšia? Iste, XML parser nie je problém a stačí&amp;amp;nbsp;už len zapísať výsledok podľa potrebnej štruktúry. XSLT je práve o&amp;amp;nbsp;tom, ako to&amp;amp;nbsp;urobiť elegantne a&amp;amp;nbsp;efektívne. Samotný štandard eXtensible Stylesheet Language Transformations, akceptovaný konzorciom W3C, má predchodcu Extensible Stylesheet Language (XSL). Z&amp;amp;nbsp;pohľadu programátora tento „programovací jazyk transformácií“ XML údajov je, opäť a&amp;amp;nbsp;znova XML dokumentom, štruktúrou xsl tagov. &lt;br /&gt;
&lt;br /&gt;
Podporuje:&lt;br /&gt;
&lt;br /&gt;
* Flexibilné dátové typy: boolean, number, string, node-set&lt;br /&gt;
* Množinu operácií: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:template&amp;gt;, &amp;lt;xsl:apply-templates&amp;gt;, &amp;lt;xsl:sort&amp;gt;, …&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Vetvenia a cykly: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:if&amp;gt;, &amp;lt;xsl:choose&amp;gt;, &amp;lt;xsl:for-each&amp;gt;, ...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jednoduchú, ale kompletnú transformáciu dokumentu si ukážeme na príklade „Hello World“. Na začiatku je zdrojový súbor pozdrav.xml:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dokument obsahuje okrem povinných častí procesnú inštrukciu,:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;pozdrav.xsl&amp;quot;?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ktorá definuje odkaz na transformačný súbor pozdrav.xsl. Ten obsahuje jednoduchú kostru a&amp;amp;nbsp;xsl inštrukcie pre transformáciu zdrojového súboru do HTML dokumentu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Výsledkom transformácie je kód jednoduchej HTML stránky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prvá použitá xsl inštrukcia definuje menný priestor týchto inštrukcií.&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform version=&amp;quot;1.0&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samozrejme, je možné doplniť aj ďalšie, momentálne sa ale obmedzíme na štandard W3C konzorcia. Jadro prevodu stojí na inštrukcii&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:template match=&amp;quot;/pozdrav&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;''.''&amp;amp;nbsp;Tá, zjednodušene povedané, definuje šablónu na prevod. Do výsledného dokumentu sa vloží len to, čo je obsiahnuté v&amp;amp;nbsp;rámci šablóny vzťahujúcej sa na koreňový uzol zdrojového súboru. V&amp;amp;nbsp;našom prípade to ale znamená aj informáciu, od koho pochádza pozdrav. Docielili sme to inštrukciou&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:apply-templates select=&amp;quot;od-koho&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;'',''&amp;amp;nbsp;ktorá v&amp;amp;nbsp;mieste svojho volania aplikuje našu druhú definovanú šablónu. Tento jednoduchý spôsob vnárania je synonymom volania procedúr a funkcií. Poslednou inštrukciou je &amp;lt;nowiki&amp;gt;&amp;lt;xsl:value-of&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;vkladajúca hodnotu uzla definovaného v&amp;amp;nbsp;atribúte select do miesta svojho volania. Bodka je pritom ekvivalentom názvu uzla, v&amp;amp;nbsp;ktorom je inštrukcia volaná. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Obrázok 1.3''' Schéma princípu XSLT&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tento príklad vystihuje dôležitú vlastnosť XSLT transformácií - je deklaratívna a založená na pravidlách. Pravidlá sa nazývajú šablóny. Sú to inštrukcie definujúce spôsob prenosu zdrojového elementu do výsledného dokumentu. Pre kompletnú transformáciu musia byť aplikované všetky šablóny.&amp;amp;nbsp;Sú však nezávislé jedna od druhej, a tak poradie spracovania nie je dôležité. V&amp;amp;nbsp;tomto bode je XSLT výrazne odlišné od procedurálneho programovania. Zo zápisu je zrejmé, že ak by sa v&amp;amp;nbsp;xml dokumente vyskytovali nejaké atribúty elementov, pri transformácii sa stratia. Toto sa dá vyriešiť pomocou XPath. Znak @ definuje odkaz na atribút uzla. Inštrukcia &amp;lt;xsl:value-of select=”@meno”/&amp;gt; použije hodnotu Peter z uzla&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;osoba meno=”Peter”/&amp;gt;&amp;lt;/nowiki&amp;gt;''.&amp;amp;nbsp;''Ak chcem atribúty aj vo výslednom dokumente, zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;uzol atribut=&amp;lt;xsl:value-of select=”.”/&amp;gt;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;''odmietne spracovať akýkoľvek XML parser. XSLT používa konštrukciu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;xsl:attribute name=”meno_atribútu”&amp;gt;hodnota_atribútu&amp;lt;/xsl:attribute&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Príklady vetvenia a&amp;amp;nbsp;cyklov v&amp;amp;nbsp;XSLT:&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SWITCH, SELECT, a&amp;amp;nbsp;podobne&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOR EACH&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1964</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1964"/>
		<updated>2010-02-14T17:07:46Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Syntaktické pravidlá XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:strukturaxml.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.1 '''Špeciálne znaky&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:pict.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
Xpath (XML Path Language) vo verzii 1.0 definuje organizáciou W3C schválenú syntax popisu adries častí XML dokumentu. XPath výrazy sa vyhodnotia podľa logického stromu dokumentu a&amp;amp;nbsp;tak sa nájdu odpovedajúce uzly ( elementy, atribúty, text atd.). Spomínaná úroveň abstrakcie chráni vývojára pred zložitosťou fyzickej štruktúry dokumentu a&amp;amp;nbsp;výrazne zjednodušuje prácu. &lt;br /&gt;
&lt;br /&gt;
XPath definuje stromový model podľa ktorého sa vyhodnocujú všetky výrazy. Tento model zodpovedá logickej štruktúre XML dokumentu, ktorá je formálne definovaná ako XML Infoset (XML Information set). Obrázok 1.2 ilustruje stromový model XPath&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:xpath1.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Obrázok 1.2''' Stromový model XPath&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väčšina XPath výrazov popisuje množinu uzlov stromu. Napríklad nasledujúcemu výrazu zodpovedajú 2 elementy cena: /faktura/predmet/cena. Tomuto typu výrazu sa hovorí cesta (location path). XPath cesty vyzerajú podobne ako cesty v&amp;amp;nbsp;súborovom systéme, akurát navigujú v&amp;amp;nbsp;rámci stromového modelu, kde identifikujú množinu uzlov(node-set).&lt;br /&gt;
&lt;br /&gt;
XPath je abstraktný jazyk, preto môže byť implementovaný v&amp;amp;nbsp;mnohých rôznych prostrediach. Intenzívne sa používa pri XSL transformáciách (XSLT) k&amp;amp;nbsp;identifikácii uzlov vstupného dokumentu. Taktiež sa používa vo väčšine implementácií štandardu DOM, kvôli bohatším možnostiam vyhľadávania v&amp;amp;nbsp;dokumente. XPath sa dokonca využíva v&amp;amp;nbsp;niektorých moderných technológiách pre sprístupnenie dát, aby sa úložisko dát prezentovalo užívateľovi ako XML. Treba si uvedomiť že XPath výrazy iba definujú ako prechádzať logickou XML štruktúrou a&amp;amp;nbsp;nachádzať odpovedajúcu množinu uzlov, odkiaľ sa však táto logická štruktúra zoberie, to už záleží iba na implementácii.&lt;br /&gt;
&lt;br /&gt;
XPath prechádza strom uzlov v&amp;amp;nbsp;poradí dokumentu(document order). Poradie dokumentu je poradie v ktorom by sa uzly nachádzali v&amp;amp;nbsp;serializovanom XML dokumente(uzly sa prechádzajú zhora dole, z ľava do prava).&lt;br /&gt;
&lt;br /&gt;
Spolu s&amp;amp;nbsp;množinami uzlov, podporuje XPath ešte ďalšie tri dátové typy: logické hodnoty(Boolean), čísla(number) a textové reťazce(string). XPath definuje, ako sa množiny uzlov porovnávajú s&amp;amp;nbsp;každým z&amp;amp;nbsp;týchto typov a&amp;amp;nbsp;ako sa vynúti potrebný dátový typ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.2 '''Dátové typy&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Dátový typ'''&lt;br /&gt;
| '''Popis'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Množina uzlov (node-set)&lt;br /&gt;
| Množina uzlov bez násobného výskytu&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logická hodnota&lt;br /&gt;
| True (Pravda) alebo False (nepravda)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číslo(number)&lt;br /&gt;
| Číslo s&amp;amp;nbsp;plávajúcou desatinnou čiarkou&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Textový reťazec&lt;br /&gt;
| Postupnosť UCS znakov&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
Každý XPath výraz vráti objekt jedného z&amp;amp;nbsp;možných typov. Konkrétny typ tohto objektu je možné vynútiť použitím odpovedajúcej funkcie boolean( ), number( ), alebo string( ). Ak je to potrebné vykoná sa implicitná konverzia objektu na iný dátový typ (napr. ak sa predáva množina uzlov funkcii, ktorá očakáva parameter typu textový reťazec). K porovnaniu a prevodu medzi množinami uzlov a&amp;amp;nbsp;ostatnými dátovými typmi je potrebné uzly zo stromového modelu previesť späť na textový reťazec. XPath definuje, ako v&amp;amp;nbsp;tomto prípade odpovedajúcu reťazcovú hodnotu (string value) získať. Prevádzaním uzlov späť na textové reťazce uľahčuje ich prevod na iné dátové typy a&amp;amp;nbsp;vzájomné porovnávanie medzi rôznymi typmi. Taktiež umožňuje tvorbu veľkého množstva ďalších výrazov.&lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka zhrňuje typy výrazov podporovaných štandardom XPath. Operátory ktoré sa používajú k&amp;amp;nbsp;tvorbe výrazov sú uvedené od najmenej dôležitých po operátory s&amp;amp;nbsp;najvyššou prioritou. Ku kontrole prednosti operátorov je možné použiť zátvorky.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.3 '''Operátory&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Typ výrazu'''&lt;br /&gt;
| '''Operátory'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Cesta&lt;br /&gt;
| / , //, |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logický výraz&lt;br /&gt;
| or, and&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Rovnosť&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;=, !=&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Relácie&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;=, &amp;lt;, &amp;gt;=, &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číselný výraz&lt;br /&gt;
| +, -, div, mod, *, -(unárne)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Atribút&lt;br /&gt;
| @&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
XPath sa uplatní všade tam, kde je potrebné vyberať z&amp;amp;nbsp;XML dokumentu len určité elementy, na základe vopred daných kritérií. Na XPath sú založené technológie ako XSLT a&amp;amp;nbsp;XQuery.&lt;br /&gt;
&lt;br /&gt;
==XSLT==&lt;br /&gt;
Dokument vo formáte XML prináša vo všeobecnosti formu, v&amp;amp;nbsp;ktorej je možné uložiť informácie rôzneho charakteru. Čo však v&amp;amp;nbsp;prípade, že forma nie je pre aktuálnu potrebu práve najvhodnejšia? Iste, XML parser nie je problém a stačí&amp;amp;nbsp;už len zapísať výsledok podľa potrebnej štruktúry. XSLT je práve o&amp;amp;nbsp;tom, ako to&amp;amp;nbsp;urobiť elegantne a&amp;amp;nbsp;efektívne. Samotný štandard eXtensible Stylesheet Language Transformations, akceptovaný konzorciom W3C, má predchodcu Extensible Stylesheet Language (XSL). Z&amp;amp;nbsp;pohľadu programátora tento „programovací jazyk transformácií“ XML údajov je, opäť a&amp;amp;nbsp;znova XML dokumentom, štruktúrou xsl tagov. &lt;br /&gt;
&lt;br /&gt;
Podporuje:&lt;br /&gt;
&lt;br /&gt;
* Flexibilné dátové typy: boolean, number, string, node-set&lt;br /&gt;
* Množinu operácií: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:template&amp;gt;, &amp;lt;xsl:apply-templates&amp;gt;, &amp;lt;xsl:sort&amp;gt;, …&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Vetvenia a cykly: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:if&amp;gt;, &amp;lt;xsl:choose&amp;gt;, &amp;lt;xsl:for-each&amp;gt;, ...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jednoduchú, ale kompletnú transformáciu dokumentu si ukážeme na príklade „Hello World“. Na začiatku je zdrojový súbor pozdrav.xml:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dokument obsahuje okrem povinných častí procesnú inštrukciu,:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;pozdrav.xsl&amp;quot;?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ktorá definuje odkaz na transformačný súbor pozdrav.xsl. Ten obsahuje jednoduchú kostru a&amp;amp;nbsp;xsl inštrukcie pre transformáciu zdrojového súboru do HTML dokumentu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Výsledkom transformácie je kód jednoduchej HTML stránky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prvá použitá xsl inštrukcia definuje menný priestor týchto inštrukcií.&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform version=&amp;quot;1.0&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samozrejme, je možné doplniť aj ďalšie, momentálne sa ale obmedzíme na štandard W3C konzorcia. Jadro prevodu stojí na inštrukcii&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:template match=&amp;quot;/pozdrav&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;''.''&amp;amp;nbsp;Tá, zjednodušene povedané, definuje šablónu na prevod. Do výsledného dokumentu sa vloží len to, čo je obsiahnuté v&amp;amp;nbsp;rámci šablóny vzťahujúcej sa na koreňový uzol zdrojového súboru. V&amp;amp;nbsp;našom prípade to ale znamená aj informáciu, od koho pochádza pozdrav. Docielili sme to inštrukciou&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:apply-templates select=&amp;quot;od-koho&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;'',''&amp;amp;nbsp;ktorá v&amp;amp;nbsp;mieste svojho volania aplikuje našu druhú definovanú šablónu. Tento jednoduchý spôsob vnárania je synonymom volania procedúr a funkcií. Poslednou inštrukciou je &amp;lt;nowiki&amp;gt;&amp;lt;xsl:value-of&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;vkladajúca hodnotu uzla definovaného v&amp;amp;nbsp;atribúte select do miesta svojho volania. Bodka je pritom ekvivalentom názvu uzla, v&amp;amp;nbsp;ktorom je inštrukcia volaná. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Obrázok 1.3''' Schéma princípu XSLT&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tento príklad vystihuje dôležitú vlastnosť XSLT transformácií - je deklaratívna a založená na pravidlách. Pravidlá sa nazývajú šablóny. Sú to inštrukcie definujúce spôsob prenosu zdrojového elementu do výsledného dokumentu. Pre kompletnú transformáciu musia byť aplikované všetky šablóny.&amp;amp;nbsp;Sú však nezávislé jedna od druhej, a tak poradie spracovania nie je dôležité. V&amp;amp;nbsp;tomto bode je XSLT výrazne odlišné od procedurálneho programovania. Zo zápisu je zrejmé, že ak by sa v&amp;amp;nbsp;xml dokumente vyskytovali nejaké atribúty elementov, pri transformácii sa stratia. Toto sa dá vyriešiť pomocou XPath. Znak @ definuje odkaz na atribút uzla. Inštrukcia &amp;lt;xsl:value-of select=”@meno”/&amp;gt; použije hodnotu Peter z uzla&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;osoba meno=”Peter”/&amp;gt;&amp;lt;/nowiki&amp;gt;''.&amp;amp;nbsp;''Ak chcem atribúty aj vo výslednom dokumente, zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;uzol atribut=&amp;lt;xsl:value-of select=”.”/&amp;gt;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;''odmietne spracovať akýkoľvek XML parser. XSLT používa konštrukciu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;xsl:attribute name=”meno_atribútu”&amp;gt;hodnota_atribútu&amp;lt;/xsl:attribute&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Príklady vetvenia a&amp;amp;nbsp;cyklov v&amp;amp;nbsp;XSLT:&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SWITCH, SELECT, a&amp;amp;nbsp;podobne&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOR EACH&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1963</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1963"/>
		<updated>2010-02-14T16:50:41Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XSLT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:strukturaxml.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:pict.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
Xpath (XML Path Language) vo verzii 1.0 definuje organizáciou W3C schválenú syntax popisu adries častí XML dokumentu. XPath výrazy sa vyhodnotia podľa logického stromu dokumentu a&amp;amp;nbsp;tak sa nájdu odpovedajúce uzly ( elementy, atribúty, text atd.). Spomínaná úroveň abstrakcie chráni vývojára pred zložitosťou fyzickej štruktúry dokumentu a&amp;amp;nbsp;výrazne zjednodušuje prácu. &lt;br /&gt;
&lt;br /&gt;
XPath definuje stromový model podľa ktorého sa vyhodnocujú všetky výrazy. Tento model zodpovedá logickej štruktúre XML dokumentu, ktorá je formálne definovaná ako XML Infoset (XML Information set). Obrázok 1.2 ilustruje stromový model XPath&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:xpath1.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Obrázok 1.2''' Stromový model XPath&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väčšina XPath výrazov popisuje množinu uzlov stromu. Napríklad nasledujúcemu výrazu zodpovedajú 2 elementy cena: /faktura/predmet/cena. Tomuto typu výrazu sa hovorí cesta (location path). XPath cesty vyzerajú podobne ako cesty v&amp;amp;nbsp;súborovom systéme, akurát navigujú v&amp;amp;nbsp;rámci stromového modelu, kde identifikujú množinu uzlov(node-set).&lt;br /&gt;
&lt;br /&gt;
XPath je abstraktný jazyk, preto môže byť implementovaný v&amp;amp;nbsp;mnohých rôznych prostrediach. Intenzívne sa používa pri XSL transformáciách (XSLT) k&amp;amp;nbsp;identifikácii uzlov vstupného dokumentu. Taktiež sa používa vo väčšine implementácií štandardu DOM, kvôli bohatším možnostiam vyhľadávania v&amp;amp;nbsp;dokumente. XPath sa dokonca využíva v&amp;amp;nbsp;niektorých moderných technológiách pre sprístupnenie dát, aby sa úložisko dát prezentovalo užívateľovi ako XML. Treba si uvedomiť že XPath výrazy iba definujú ako prechádzať logickou XML štruktúrou a&amp;amp;nbsp;nachádzať odpovedajúcu množinu uzlov, odkiaľ sa však táto logická štruktúra zoberie, to už záleží iba na implementácii.&lt;br /&gt;
&lt;br /&gt;
XPath prechádza strom uzlov v&amp;amp;nbsp;poradí dokumentu(document order). Poradie dokumentu je poradie v ktorom by sa uzly nachádzali v&amp;amp;nbsp;serializovanom XML dokumente(uzly sa prechádzajú zhora dole, z ľava do prava).&lt;br /&gt;
&lt;br /&gt;
Spolu s&amp;amp;nbsp;množinami uzlov, podporuje XPath ešte ďalšie tri dátové typy: logické hodnoty(Boolean), čísla(number) a textové reťazce(string). XPath definuje, ako sa množiny uzlov porovnávajú s&amp;amp;nbsp;každým z&amp;amp;nbsp;týchto typov a&amp;amp;nbsp;ako sa vynúti potrebný dátový typ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.2 '''Dátové typy&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Dátový typ'''&lt;br /&gt;
| '''Popis'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Množina uzlov (node-set)&lt;br /&gt;
| Množina uzlov bez násobného výskytu&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logická hodnota&lt;br /&gt;
| True (Pravda) alebo False (nepravda)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číslo(number)&lt;br /&gt;
| Číslo s&amp;amp;nbsp;plávajúcou desatinnou čiarkou&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Textový reťazec&lt;br /&gt;
| Postupnosť UCS znakov&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
Každý XPath výraz vráti objekt jedného z&amp;amp;nbsp;možných typov. Konkrétny typ tohto objektu je možné vynútiť použitím odpovedajúcej funkcie boolean( ), number( ), alebo string( ). Ak je to potrebné vykoná sa implicitná konverzia objektu na iný dátový typ (napr. ak sa predáva množina uzlov funkcii, ktorá očakáva parameter typu textový reťazec). K porovnaniu a prevodu medzi množinami uzlov a&amp;amp;nbsp;ostatnými dátovými typmi je potrebné uzly zo stromového modelu previesť späť na textový reťazec. XPath definuje, ako v&amp;amp;nbsp;tomto prípade odpovedajúcu reťazcovú hodnotu (string value) získať. Prevádzaním uzlov späť na textové reťazce uľahčuje ich prevod na iné dátové typy a&amp;amp;nbsp;vzájomné porovnávanie medzi rôznymi typmi. Taktiež umožňuje tvorbu veľkého množstva ďalších výrazov.&lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka zhrňuje typy výrazov podporovaných štandardom XPath. Operátory ktoré sa používajú k&amp;amp;nbsp;tvorbe výrazov sú uvedené od najmenej dôležitých po operátory s&amp;amp;nbsp;najvyššou prioritou. Ku kontrole prednosti operátorov je možné použiť zátvorky.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.3 '''Operátory&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Typ výrazu'''&lt;br /&gt;
| '''Operátory'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Cesta&lt;br /&gt;
| / , //, |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logický výraz&lt;br /&gt;
| or, and&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Rovnosť&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;=, !=&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Relácie&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;=, &amp;lt;, &amp;gt;=, &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číselný výraz&lt;br /&gt;
| +, -, div, mod, *, -(unárne)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Atribút&lt;br /&gt;
| @&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
XPath sa uplatní všade tam, kde je potrebné vyberať z&amp;amp;nbsp;XML dokumentu len určité elementy, na základe vopred daných kritérií. Na XPath sú založené technológie ako XSLT a&amp;amp;nbsp;XQuery.&lt;br /&gt;
&lt;br /&gt;
==XSLT==&lt;br /&gt;
Dokument vo formáte XML prináša vo všeobecnosti formu, v&amp;amp;nbsp;ktorej je možné uložiť informácie rôzneho charakteru. Čo však v&amp;amp;nbsp;prípade, že forma nie je pre aktuálnu potrebu práve najvhodnejšia? Iste, XML parser nie je problém a stačí&amp;amp;nbsp;už len zapísať výsledok podľa potrebnej štruktúry. XSLT je práve o&amp;amp;nbsp;tom, ako to&amp;amp;nbsp;urobiť elegantne a&amp;amp;nbsp;efektívne. Samotný štandard eXtensible Stylesheet Language Transformations, akceptovaný konzorciom W3C, má predchodcu Extensible Stylesheet Language (XSL). Z&amp;amp;nbsp;pohľadu programátora tento „programovací jazyk transformácií“ XML údajov je, opäť a&amp;amp;nbsp;znova XML dokumentom, štruktúrou xsl tagov. &lt;br /&gt;
&lt;br /&gt;
Podporuje:&lt;br /&gt;
&lt;br /&gt;
* Flexibilné dátové typy: boolean, number, string, node-set&lt;br /&gt;
* Množinu operácií: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:template&amp;gt;, &amp;lt;xsl:apply-templates&amp;gt;, &amp;lt;xsl:sort&amp;gt;, …&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Vetvenia a cykly: &amp;lt;nowiki&amp;gt;&amp;lt;xsl:if&amp;gt;, &amp;lt;xsl:choose&amp;gt;, &amp;lt;xsl:for-each&amp;gt;, ...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jednoduchú, ale kompletnú transformáciu dokumentu si ukážeme na príklade „Hello World“. Na začiatku je zdrojový súbor pozdrav.xml:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dokument obsahuje okrem povinných častí procesnú inštrukciu,:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;pozdrav.xsl&amp;quot;?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ktorá definuje odkaz na transformačný súbor pozdrav.xsl. Ten obsahuje jednoduchú kostru a&amp;amp;nbsp;xsl inštrukcie pre transformáciu zdrojového súboru do HTML dokumentu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Výsledkom transformácie je kód jednoduchej HTML stránky:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prvá použitá xsl inštrukcia definuje menný priestor týchto inštrukcií.&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform version=&amp;quot;1.0&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samozrejme, je možné doplniť aj ďalšie, momentálne sa ale obmedzíme na štandard W3C konzorcia. Jadro prevodu stojí na inštrukcii&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:template match=&amp;quot;/pozdrav&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;''.''&amp;amp;nbsp;Tá, zjednodušene povedané, definuje šablónu na prevod. Do výsledného dokumentu sa vloží len to, čo je obsiahnuté v&amp;amp;nbsp;rámci šablóny vzťahujúcej sa na koreňový uzol zdrojového súboru. V&amp;amp;nbsp;našom prípade to ale znamená aj informáciu, od koho pochádza pozdrav. Docielili sme to inštrukciou&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;xsl:apply-templates select=&amp;quot;od-koho&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;'',''&amp;amp;nbsp;ktorá v&amp;amp;nbsp;mieste svojho volania aplikuje našu druhú definovanú šablónu. Tento jednoduchý spôsob vnárania je synonymom volania procedúr a funkcií. Poslednou inštrukciou je &amp;lt;nowiki&amp;gt;&amp;lt;xsl:value-of&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;vkladajúca hodnotu uzla definovaného v&amp;amp;nbsp;atribúte select do miesta svojho volania. Bodka je pritom ekvivalentom názvu uzla, v&amp;amp;nbsp;ktorom je inštrukcia volaná. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Obrázok 1.3''' Schéma princípu XSLT&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tento príklad vystihuje dôležitú vlastnosť XSLT transformácií - je deklaratívna a založená na pravidlách. Pravidlá sa nazývajú šablóny. Sú to inštrukcie definujúce spôsob prenosu zdrojového elementu do výsledného dokumentu. Pre kompletnú transformáciu musia byť aplikované všetky šablóny.&amp;amp;nbsp;Sú však nezávislé jedna od druhej, a tak poradie spracovania nie je dôležité. V&amp;amp;nbsp;tomto bode je XSLT výrazne odlišné od procedurálneho programovania. Zo zápisu je zrejmé, že ak by sa v&amp;amp;nbsp;xml dokumente vyskytovali nejaké atribúty elementov, pri transformácii sa stratia. Toto sa dá vyriešiť pomocou XPath. Znak @ definuje odkaz na atribút uzla. Inštrukcia &amp;lt;xsl:value-of select=”@meno”/&amp;gt; použije hodnotu Peter z uzla&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;osoba meno=”Peter”/&amp;gt;&amp;lt;/nowiki&amp;gt;''.&amp;amp;nbsp;''Ak chcem atribúty aj vo výslednom dokumente, zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;uzol atribut=&amp;lt;xsl:value-of select=”.”/&amp;gt;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;''odmietne spracovať akýkoľvek XML parser. XSLT používa konštrukciu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;xsl:attribute name=”meno_atribútu”&amp;gt;hodnota_atribútu&amp;lt;/xsl:attribute&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Príklady vetvenia a&amp;amp;nbsp;cyklov v&amp;amp;nbsp;XSLT:&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SWITCH, SELECT, a&amp;amp;nbsp;podobne&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOR EACH&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1955</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1955"/>
		<updated>2010-02-14T16:20:51Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XPath */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:strukturaxml.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:pict.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
Xpath (XML Path Language) vo verzii 1.0 definuje organizáciou W3C schválenú syntax popisu adries častí XML dokumentu. XPath výrazy sa vyhodnotia podľa logického stromu dokumentu a&amp;amp;nbsp;tak sa nájdu odpovedajúce uzly ( elementy, atribúty, text atd.). Spomínaná úroveň abstrakcie chráni vývojára pred zložitosťou fyzickej štruktúry dokumentu a&amp;amp;nbsp;výrazne zjednodušuje prácu. &lt;br /&gt;
&lt;br /&gt;
XPath definuje stromový model podľa ktorého sa vyhodnocujú všetky výrazy. Tento model zodpovedá logickej štruktúre XML dokumentu, ktorá je formálne definovaná ako XML Infoset (XML Information set). Obrázok 1.2 ilustruje stromový model XPath&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:xpath1.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Obrázok 1.2''' Stromový model XPath&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väčšina XPath výrazov popisuje množinu uzlov stromu. Napríklad nasledujúcemu výrazu zodpovedajú 2 elementy cena: /faktura/predmet/cena. Tomuto typu výrazu sa hovorí cesta (location path). XPath cesty vyzerajú podobne ako cesty v&amp;amp;nbsp;súborovom systéme, akurát navigujú v&amp;amp;nbsp;rámci stromového modelu, kde identifikujú množinu uzlov(node-set).&lt;br /&gt;
&lt;br /&gt;
XPath je abstraktný jazyk, preto môže byť implementovaný v&amp;amp;nbsp;mnohých rôznych prostrediach. Intenzívne sa používa pri XSL transformáciách (XSLT) k&amp;amp;nbsp;identifikácii uzlov vstupného dokumentu. Taktiež sa používa vo väčšine implementácií štandardu DOM, kvôli bohatším možnostiam vyhľadávania v&amp;amp;nbsp;dokumente. XPath sa dokonca využíva v&amp;amp;nbsp;niektorých moderných technológiách pre sprístupnenie dát, aby sa úložisko dát prezentovalo užívateľovi ako XML. Treba si uvedomiť že XPath výrazy iba definujú ako prechádzať logickou XML štruktúrou a&amp;amp;nbsp;nachádzať odpovedajúcu množinu uzlov, odkiaľ sa však táto logická štruktúra zoberie, to už záleží iba na implementácii.&lt;br /&gt;
&lt;br /&gt;
XPath prechádza strom uzlov v&amp;amp;nbsp;poradí dokumentu(document order). Poradie dokumentu je poradie v ktorom by sa uzly nachádzali v&amp;amp;nbsp;serializovanom XML dokumente(uzly sa prechádzajú zhora dole, z ľava do prava).&lt;br /&gt;
&lt;br /&gt;
Spolu s&amp;amp;nbsp;množinami uzlov, podporuje XPath ešte ďalšie tri dátové typy: logické hodnoty(Boolean), čísla(number) a textové reťazce(string). XPath definuje, ako sa množiny uzlov porovnávajú s&amp;amp;nbsp;každým z&amp;amp;nbsp;týchto typov a&amp;amp;nbsp;ako sa vynúti potrebný dátový typ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.2 '''Dátové typy&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Dátový typ'''&lt;br /&gt;
| '''Popis'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Množina uzlov (node-set)&lt;br /&gt;
| Množina uzlov bez násobného výskytu&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logická hodnota&lt;br /&gt;
| True (Pravda) alebo False (nepravda)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číslo(number)&lt;br /&gt;
| Číslo s&amp;amp;nbsp;plávajúcou desatinnou čiarkou&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Textový reťazec&lt;br /&gt;
| Postupnosť UCS znakov&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
Každý XPath výraz vráti objekt jedného z&amp;amp;nbsp;možných typov. Konkrétny typ tohto objektu je možné vynútiť použitím odpovedajúcej funkcie boolean( ), number( ), alebo string( ). Ak je to potrebné vykoná sa implicitná konverzia objektu na iný dátový typ (napr. ak sa predáva množina uzlov funkcii, ktorá očakáva parameter typu textový reťazec). K porovnaniu a prevodu medzi množinami uzlov a&amp;amp;nbsp;ostatnými dátovými typmi je potrebné uzly zo stromového modelu previesť späť na textový reťazec. XPath definuje, ako v&amp;amp;nbsp;tomto prípade odpovedajúcu reťazcovú hodnotu (string value) získať. Prevádzaním uzlov späť na textové reťazce uľahčuje ich prevod na iné dátové typy a&amp;amp;nbsp;vzájomné porovnávanie medzi rôznymi typmi. Taktiež umožňuje tvorbu veľkého množstva ďalších výrazov.&lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka zhrňuje typy výrazov podporovaných štandardom XPath. Operátory ktoré sa používajú k&amp;amp;nbsp;tvorbe výrazov sú uvedené od najmenej dôležitých po operátory s&amp;amp;nbsp;najvyššou prioritou. Ku kontrole prednosti operátorov je možné použiť zátvorky.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.3 '''Operátory&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Typ výrazu'''&lt;br /&gt;
| '''Operátory'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Cesta&lt;br /&gt;
| / , //, |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logický výraz&lt;br /&gt;
| or, and&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Rovnosť&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;=, !=&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Relácie&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;=, &amp;lt;, &amp;gt;=, &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číselný výraz&lt;br /&gt;
| +, -, div, mod, *, -(unárne)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Atribút&lt;br /&gt;
| @&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
XPath sa uplatní všade tam, kde je potrebné vyberať z&amp;amp;nbsp;XML dokumentu len určité elementy, na základe vopred daných kritérií. Na XPath sú založené technológie ako XSLT a&amp;amp;nbsp;XQuery.&lt;br /&gt;
&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1953</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1953"/>
		<updated>2010-02-14T16:18:10Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XPath */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:strukturaxml.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:pict.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
Xpath (XML Path Language) vo verzii 1.0 definuje organizáciou W3C schválenú syntax popisu adries častí XML dokumentu. XPath výrazy sa vyhodnotia podľa logického stromu dokumentu a&amp;amp;nbsp;tak sa nájdu odpovedajúce uzly ( elementy, atribúty, text atd.). Spomínaná úroveň abstrakcie chráni vývojára pred zložitosťou fyzickej štruktúry dokumentu a&amp;amp;nbsp;výrazne zjednodušuje prácu. &lt;br /&gt;
&lt;br /&gt;
XPath definuje stromový model podľa ktorého sa vyhodnocujú všetky výrazy. Tento model zodpovedá logickej štruktúre XML dokumentu, ktorá je formálne definovaná ako XML Infoset (XML Information set). Obrázok 1.1 ilustruje stromový model XPath&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:xpath1.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Obrázok 1.2''' Stromový model XPath&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väčšina XPath výrazov popisuje množinu uzlov stromu. Napríklad nasledujúcemu výrazu zodpovedajú 2 elementy cena: /faktura/predmet/cena. Tomuto typu výrazu sa hovorí cesta (location path). XPath cesty vyzerajú podobne ako cesty v&amp;amp;nbsp;súborovom systéme, akurát navigujú v&amp;amp;nbsp;rámci stromového modelu, kde identifikujú množinu uzlov(node-set).&lt;br /&gt;
&lt;br /&gt;
XPath je abstraktný jazyk, preto môže byť implementovaný v&amp;amp;nbsp;mnohých rôznych prostrediach. Intenzívne sa používa pri XSL transformáciách (XSLT) k&amp;amp;nbsp;identifikácii uzlov vstupného dokumentu. Taktiež sa používa vo väčšine implementácií štandardu DOM, kvôli bohatším možnostiam vyhľadávania v&amp;amp;nbsp;dokumente. XPath sa dokonca využíva v&amp;amp;nbsp;niektorých moderných technológiách pre sprístupnenie dát, aby sa úložisko dát prezentovalo užívateľovi ako XML. Treba si uvedomiť že XPath výrazy iba definujú ako prechádzať logickou XML štruktúrou a&amp;amp;nbsp;nachádzať odpovedajúcu množinu uzlov, odkiaľ sa však táto logická štruktúra zoberie, to už záleží iba na implementácii.&lt;br /&gt;
&lt;br /&gt;
XPath prechádza strom uzlov v&amp;amp;nbsp;poradí dokumentu(document order). Poradie dokumentu je poradie v ktorom by sa uzly nachádzali v&amp;amp;nbsp;serializovanom XML dokumente(uzly sa prechádzajú zhora dole, z ľava do prava).&lt;br /&gt;
&lt;br /&gt;
Spolu s&amp;amp;nbsp;množinami uzlov, podporuje XPath ešte ďalšie tri dátové typy: logické hodnoty(Boolean), čísla(number) a textové reťazce(string). XPath definuje, ako sa množiny uzlov porovnávajú s&amp;amp;nbsp;každým z&amp;amp;nbsp;týchto typov a&amp;amp;nbsp;ako sa vynúti potrebný dátový typ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.2 '''Dátové typy&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Dátový typ'''&lt;br /&gt;
| '''Popis'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Množina uzlov (node-set)&lt;br /&gt;
| Množina uzlov bez násobného výskytu&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logická hodnota&lt;br /&gt;
| True (Pravda) alebo False (nepravda)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číslo(number)&lt;br /&gt;
| Číslo s&amp;amp;nbsp;plávajúcou desatinnou čiarkou&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Textový reťazec&lt;br /&gt;
| Postupnosť UCS znakov&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
Každý XPath výraz vráti objekt jedného z&amp;amp;nbsp;možných typov. Konkrétny typ tohto objektu je možné vynútiť použitím odpovedajúcej funkcie boolean( ), number( ), alebo string( ). Ak je to potrebné vykoná sa implicitná konverzia objektu na iný dátový typ (napr. ak sa predáva množina uzlov funkcii, ktorá očakáva parameter typu textový reťazec). K porovnaniu a prevodu medzi množinami uzlov a&amp;amp;nbsp;ostatnými dátovými typmi je potrebné uzly zo stromového modelu previesť späť na textový reťazec. XPath definuje, ako v&amp;amp;nbsp;tomto prípade odpovedajúcu reťazcovú hodnotu (string value) získať. Prevádzaním uzlov späť na textové reťazce uľahčuje ich prevod na iné dátové typy a&amp;amp;nbsp;vzájomné porovnávanie medzi rôznymi typmi. Taktiež umožňuje tvorbu veľkého množstva ďalších výrazov.&lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka zhrňuje typy výrazov podporovaných štandardom XPath. Operátory ktoré sa používajú k&amp;amp;nbsp;tvorbe výrazov sú uvedené od najmenej dôležitých po operátory s&amp;amp;nbsp;najvyššou prioritou. Ku kontrole prednosti operátorov je možné použiť zátvorky.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.3 '''Operátory&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Typ výrazu'''&lt;br /&gt;
| '''Operátory'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Cesta&lt;br /&gt;
| / , //, |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logický výraz&lt;br /&gt;
| or, and&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Rovnosť&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;=, !=&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Relácie&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;=, &amp;lt;, &amp;gt;=, &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číselný výraz&lt;br /&gt;
| +, -, div, mod, *, -(unárne)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Atribút&lt;br /&gt;
| @&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
XPath sa uplatní všade tam, kde je potrebné vyberať z&amp;amp;nbsp;XML dokumentu len určité elementy, na základe vopred daných kritérií. Na XPath sú založené technológie ako XSLT a&amp;amp;nbsp;XQuery.&lt;br /&gt;
&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1949</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1949"/>
		<updated>2010-02-14T15:40:57Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XPath */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:strukturaxml.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:pict.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
Xpath (XML Path Language) vo verzii 1.0 definuje organizáciou W3C schválenú syntax popisu adries častí XML dokumentu. XPath výrazy sa vyhodnotia podľa logického stromu dokumentu a&amp;amp;nbsp;tak sa nájdu odpovedajúce uzly ( elementy, atribúty, text atd.). Spomínaná úroveň abstrakcie chráni vývojára pred zložitosťou fyzickej štruktúry dokumentu a&amp;amp;nbsp;výrazne zjednodušuje prácu. &lt;br /&gt;
&lt;br /&gt;
XPath definuje stromový model podľa ktorého sa vyhodnocujú všetky výrazy. Tento model zodpovedá logickej štruktúre XML dokumentu, ktorá je formálne definovaná ako XML Infoset (XML Information set). Obrázok 1.1 ilustruje stromový model XPath&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:xpath1.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Obrázok 1.2''' Stromový model XPath&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Väčšina XPath výrazov popisuje množinu uzlov stromu. Napríklad nasledujúcemu výrazu zodpovedajú 2 elementy cena: /faktura/predmet/cena. Tomuto typu výrazu sa hovorí cesta (location path). XPath cesty vyzerajú podobne ako cesty v&amp;amp;nbsp;súborovom systéme, akurát navigujú v&amp;amp;nbsp;rámci stromového modelu, kde identifikujú množinu uzlov(node-set).&lt;br /&gt;
&lt;br /&gt;
XPath je abstraktný jazyk, preto môže byť implementovaný v&amp;amp;nbsp;mnohých rôznych prostrediach. Intenzívne sa používa pri XSL transformáciách (XSLT) k&amp;amp;nbsp;identifikácii uzlov vstupného dokumentu. Taktiež sa používa vo väčšine implementácií štandardu DOM, kvôli bohatším možnostiam vyhľadávania v&amp;amp;nbsp;dokumente. XPath sa dokonca využíva v&amp;amp;nbsp;niektorých moderných technológiách pre sprístupnenie dát, aby sa úložisko dát prezentovalo užívateľovi ako XML. Treba si uvedomiť že XPath výrazy iba definujú ako prechádzať logickou XML štruktúrou a&amp;amp;nbsp;nachádzať odpovedajúcu množinu uzlov, odkiaľ sa však táto logická štruktúra zoberie, to už záleží iba na implementácii.&lt;br /&gt;
&lt;br /&gt;
XPath prechádza strom uzlov v&amp;amp;nbsp;poradí dokumentu(document order). Poradie dokumentu je poradie v ktorom by sa uzly nachádzali v&amp;amp;nbsp;serializovanom XML dokumente(uzly sa prechádzajú zhora dole, z ľava do prava).&lt;br /&gt;
&lt;br /&gt;
Spolu s&amp;amp;nbsp;množinami uzlov, podporuje XPath ešte ďalšie tri dátové typy: logické hodnoty(Boolean), čísla(number) a textové reťazce(string). XPath definuje, ako sa množiny uzlov porovnávajú s&amp;amp;nbsp;každým z&amp;amp;nbsp;týchto typov a&amp;amp;nbsp;ako sa vynúti potrebný dátový typ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 1.2 '''Dátové typy&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Dátový typ'''&lt;br /&gt;
| '''Popis'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Množina uzlov (node-set)&lt;br /&gt;
| Množina uzlov bez násobného výskytu&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logická hodnota&lt;br /&gt;
| True (Pravda) alebo False (nepravda)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číslo(number)&lt;br /&gt;
| Číslo s&amp;amp;nbsp;plávajúcou desatinnou čiarkou&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Textový reťazec&lt;br /&gt;
| Postupnosť UCS znakov&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Každý XPath výraz vráti objekt jedného z&amp;amp;nbsp;možných typov. Konkrétny typ tohto objektu je možné vynútiť použitím odpovedajúcej funkcie boolean( ), number( ), alebo string( ). Ak je to potrebné vykoná sa implicitná konverzia objektu na iný dátový typ (napr. ak sa predáva množina uzlov funkcii, ktorá očakáva parameter typu textový reťazec). K porovnaniu a prevodu medzi množinami uzlov a&amp;amp;nbsp;ostatnými dátovými typmi je potrebné uzly zo stromového modelu previesť späť na textový reťazec. XPath definuje, ako v&amp;amp;nbsp;tomto prípade odpovedajúcu reťazcovú hodnotu (string value) získať. Prevádzaním uzlov späť na textové reťazce uľahčuje ich prevod na iné dátové typy a&amp;amp;nbsp;vzájomné porovnávanie medzi rôznymi typmi. Taktiež umožňuje tvorbu veľkého množstva ďalších výrazov.&lt;br /&gt;
&lt;br /&gt;
Nasledujúca tabuľka zhrňuje typy výrazov podporovaných štandardom XPath. Operátory ktoré sa používajú k&amp;amp;nbsp;tvorbe výrazov sú uvedené od najmenej dôležitých po operátory s&amp;amp;nbsp;najvyššou prioritou. Ku kontrole prednosti operátorov je možné použiť zátvorky.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Tabuľka 2.3 '''Operátory&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| '''Typ výrazu'''&lt;br /&gt;
| '''Operátory'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Cesta&lt;br /&gt;
| / , //, |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Logický výraz&lt;br /&gt;
| or, and&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Rovnosť&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;=, !=&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Relácie&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;&amp;lt;=, &amp;lt;, &amp;gt;=, &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Číselný výraz&lt;br /&gt;
| +, -, div, mod, *, -(unárne)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Atribút&lt;br /&gt;
| @&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
XPath sa uplatní všade tam, kde je potrebné vyberať z&amp;amp;nbsp;XML dokumentu len určité elementy, na základe vopred daných kritérií. Na XPath sú založené technológie ako XSLT a&amp;amp;nbsp;XQuery.&lt;br /&gt;
&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1948</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1948"/>
		<updated>2010-02-14T15:31:34Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Menné priestory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:strukturaxml.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:pict.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Strukturaxml.jpg&amp;diff=1947</id>
		<title>Súbor:Strukturaxml.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Strukturaxml.jpg&amp;diff=1947"/>
		<updated>2010-02-14T15:26:38Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1946</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1946"/>
		<updated>2010-02-14T15:26:20Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Štruktúra dokumentu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:strukturaxml.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1944</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1944"/>
		<updated>2010-02-14T14:21:31Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1943</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1943"/>
		<updated>2010-02-14T14:15:46Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
=== Štruktúra dokumentu ===&lt;br /&gt;
XML je v&amp;amp;nbsp;skutočnosti metajazyk, čo znamená, že je to jazyk, ktorý sa používa na popis ďalších jazykov. Neexistuje preddefinovaný zoznam elementov. XML poskytuje úplnú slobodu pri vytváraní prvkov, ktorých mená majú pre danú aplikáciu zmysel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na tomto jednoduchom príklade si ukážeme čo vlastne XML je a&amp;amp;nbsp;ako vyzerá:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ako ste si asi mohli všimnúť, je to krátka správa od Jany pre Tomáša. Toto je jedna z&amp;amp;nbsp;nesporných výhod XML, je veľmi dobre čitateľné a&amp;amp;nbsp;zrozumiteľné aj pre bežného užívateľa. Teraz si poďme popísať čo všetko v&amp;amp;nbsp;tomto príklade môžeme vidieť.&lt;br /&gt;
&lt;br /&gt;
Prvý riadok v&amp;amp;nbsp;dokumente&amp;amp;nbsp;– XML deklarácia&amp;amp;nbsp;– definuje verziu XML a kódovanie znakov, ktoré si prajeme použiť.&amp;amp;nbsp;V&amp;amp;nbsp;tomto prípade&amp;amp;nbsp;sa&amp;amp;nbsp;jedná o&amp;amp;nbsp;špecifikáciu XML&amp;amp;nbsp;1.0 a používaná znaková sada je&amp;amp;nbsp;ISO-8859-2 (Stredoeurópske jazyky).&lt;br /&gt;
&lt;br /&gt;
Druhý riadok dokumentu predstavuje tzv. koreňový element dokumentu s&amp;amp;nbsp;názvom „sprava“. Koreňový element je hlavný element celého dokumentu, je vždy iba jeden a&amp;amp;nbsp;všetky elementy sú mu v&amp;amp;nbsp;hierarchii dokumentu podriadené. Podriadené elementy sa nazývajú potomkovia. V&amp;amp;nbsp;našom prípade sú potomkovia elementy s&amp;amp;nbsp;názvom: pre, od, zahlavie, telo. Na konci dokumentu je uzavierací tag koreňového elementu &amp;lt;nowiki&amp;gt;&amp;lt;/sprava&amp;gt;&amp;lt;/nowiki&amp;gt; ktorým sa končí každý XML dokument.&lt;br /&gt;
&lt;br /&gt;
=== Syntaktické pravidlá XML ===&lt;br /&gt;
* Každý prvok XML dokumentu musí mať otvárací (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu&amp;gt;)&amp;lt;/nowiki&amp;gt; aj uzavierací tag (&amp;lt;nowiki&amp;gt;&amp;lt;/názov elementu&amp;gt;&amp;lt;/nowiki&amp;gt;). Ak je daný element prázdny, môžeme použiť nasledujúcu skrátenú syntax: (&amp;lt;nowiki&amp;gt;&amp;lt;názov elementu/&amp;gt;&amp;lt;/nowiki&amp;gt;). Ukončovací tag značí, že to, čo bude nasledovať v&amp;amp;nbsp;dokumente ďalej, už nepatrí danému elementu. &lt;br /&gt;
* XML rozlišuje veľké a&amp;amp;nbsp;malé písmená v&amp;amp;nbsp;názve tagu. Z&amp;amp;nbsp;tohto vyplýva, že začiatočný, aj ukončovací tag, musia byť rovnako napísané.&lt;br /&gt;
* Elementy musia byť v&amp;amp;nbsp;XML dokumente správne zahniezdené&lt;br /&gt;
&lt;br /&gt;
Na rozdiel od jazyka HTML kde by bez problémov fungoval takýto zápis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;dokumentoch XML by táto syntax nebola správne a&amp;amp;nbsp;je potrebné ju pozmeniť nasledujúcim spôsobom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;amp;nbsp;Tento&amp;amp;nbsp;text&amp;amp;nbsp;je&amp;amp;nbsp;tučný&amp;amp;nbsp;a&amp;amp;nbsp;kurzívou&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Atribúty elementu musia byť uzavreté v&amp;amp;nbsp;úvodzovkách&lt;br /&gt;
&lt;br /&gt;
Toto je element ktorý má nejaký atribút: &amp;lt;nowiki&amp;gt;&amp;lt;auto farba=”cierna”&amp;gt;&amp;lt;/nowiki&amp;gt; , atribúty detailnejšie popisujú daný element. Musia byť uzavreté v&amp;amp;nbsp;jednoduchých (‘ ‘), alebo zložených &lt;br /&gt;
&lt;br /&gt;
(“ “) úvodzovkách. Sú povolené 2 druhy úvodzoviek, lebo ak samotný atribút obsahuje jeden druh úvodzoviek, na jeho uzavretie sa použije ten druhý druh.&lt;br /&gt;
&lt;br /&gt;
* Ukázali sme si ako sa zapisuje atribút elementu. Z&amp;amp;nbsp;tohto zápisu vidno že názov elementu nesmie obsahovať medzeru, pretože reťazec za medzerou by bol považovaný za atribút. Toto sa rieši nasledovne: &amp;lt;nowiki&amp;gt;&amp;lt;nazov_elementu&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* XML zachováva tzv. Biele znaky. Ak ste zvyknutý z jazyka HTML že viac medzier za sebou sa zmení na jednu, tak v XML sa zachovajú všetky znaky presne tak ako sú zapísané v dokumente.&lt;br /&gt;
* XML používa pre označenie konca riadka výhrade znak LF(line feed), pre toto označenie ešte existuje znak CR(carriage return). Ak by sa však takýto znak v&amp;amp;nbsp;dokumente objavil, automaticky sa prevedie na LF.&lt;br /&gt;
* Komentáre sa v&amp;amp;nbsp;XML zapisujú takto: &amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;amp;nbsp;Toto&amp;amp;nbsp;je&amp;amp;nbsp;komentár&amp;amp;nbsp;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
* V&amp;amp;nbsp;XML existujú tzv. špeciálne znaky (escape characters), ktoré sa nesmú v&amp;amp;nbsp;názvoch a&amp;amp;nbsp;ani v&amp;amp;nbsp;obsahu elementov vyskytnúť. Miesto nich sa používajú tzv. HTML entity ako ukazuje nasledujúca tabuľka:&lt;br /&gt;
&lt;br /&gt;
'''Tabuľka 1.1 '''Špeciálne znaky&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Špeciálny znak'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''HTML entita'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;lt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;amp&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;gt&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;‘&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;apos&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;“&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;amp;quot&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
* Ak z&amp;amp;nbsp;nejakého dôvodu potrebujeme použiť špeciálne znaky a nevyhovuje nám použitie ekvivalentných reťazcov, môžeme použiť CDATA sekciu. Sekcia CDATA začína&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;&amp;lt;![CDATA[&amp;lt;/nowiki&amp;gt;&amp;amp;nbsp;a končí&amp;amp;nbsp;]]&amp;gt;.&amp;amp;nbsp;Všetko vo vnútri je ignorované parserom, takže je možné bez obáv písať špeciálne znaky.&amp;amp;nbsp;CDATA sekcia sa využíva hlavne ak potrebujeme v&amp;amp;nbsp;XML dokumente uviesť kód napísaný v&amp;amp;nbsp;ľubovoľnom programovacom jazyku. V&amp;amp;nbsp;takomto prípade je použitie HTML entít namiesto špeciálnych znakov neprípustné. Je však z&amp;amp;nbsp;pochopiteľných dôvodov zakázaná kombinácia znakov ]]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Menné priestory ===&lt;br /&gt;
Vzhľadom k&amp;amp;nbsp;tomu, že XML umožňuje návrhárom zvoliť si svoje vlastné mená elementov, môžu si dvaja alebo viacerí návrhári pre niektoré elementy vybrať rovnaké meno. Menné priestory (Namespaces) prinášajú spôsob, ako od seba odlíšiť elementy, ktoré majú rovnaké lokálne meno, ale pochádzajú z&amp;amp;nbsp;rôznych „slovníkov“. Rozlíšenie elementov sa dosiahne asociáciou elementu s&amp;amp;nbsp;menným priestorom. Menný priestor má meno utvorené podľa špecifikácie URI. Toto URI slúži ako unikátny reťazec. Meno menného priestoru a&amp;amp;nbsp;lokálne meno elementu tvoria globálne unikátne meno, ktorému sa hovorí kvalifikované meno (qualified name).&lt;br /&gt;
&lt;br /&gt;
Menný priestor sa deklaruje vo vnútri počiatočnej značky elementu. Táto deklarácia slúži k&amp;amp;nbsp;spojeniu mena menného priestoru s&amp;amp;nbsp;iným obvykle kratším reťazcom, ktorému sa hovorí prefix menného priestoru (namespace prefix). Syntax deklarácie menného priestoru je xmlns:prefix_menného_priestoru=&amp;quot;URI_menného_priestoru&amp;quot;. Je tiež možné deklarovať východzí menný priestor ktorý sa aplikuje na všetky elementy bez prefixu. Syntax deklarácie východzieho menného priestoru je xmlns=&amp;quot;URI_menného_priestoru&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Element môže obsahovať maximálne jednu deklaráciu východzieho menného priestoru. Ostatných deklarácií menných priestorov môže element obsahovať ľubovoľné množstvo, ak má každá z&amp;amp;nbsp;nich iný prefix. Je možné priradiť rovnaké URI viacerým prefixom, no nie je to nijako užitočné.&lt;br /&gt;
&lt;br /&gt;
Všetky deklarácie menných priestorov majú rozsah platnosti (scope) – tj. množinu elementov na ktoré sa vzťahujú. Do rozsahu platnosti deklarácie menného priestoru patrí element, v&amp;amp;nbsp;ktorom sa táto deklarácia nachádza, a&amp;amp;nbsp;všetci jeho potomkovia. Mapovanie prefixu môže byť v&amp;amp;nbsp;rozsahu jeho platnosti prekryté novou deklaráciou u&amp;amp;nbsp;potomka. Taktiež východzí menný priestor u&amp;amp;nbsp;potomka môže byť prekrytý jeho novou deklaráciou.&lt;br /&gt;
&lt;br /&gt;
Elementom ktoré neležia mennom priestore sa hovorí nekvalifikované elementy (unqualified elements) menom menného priestoru nekvalifikovaného elementu je prázdny reťazec. Ak je element v&amp;amp;nbsp;rozsahu platnosti deklarácie východzieho menného priestoru a&amp;amp;nbsp;potrebujeme z&amp;amp;nbsp;neho urobiť nekvalifikovaný element, je možné deklaráciu východzieho menného priestoru prekryť novou deklaráciou v&amp;amp;nbsp;tomto elemente v&amp;amp;nbsp;tvare xmlns=‘ ‘.&lt;br /&gt;
&lt;br /&gt;
Nasledujúci príklad ukazuje ako pomocou menných priestorov zamedziť kolízii v názvoch elementov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V dokumente sa vyskytuje dvakrát element tabulka, no vždy je priradený inému mennému priestoru.&lt;br /&gt;
&lt;br /&gt;
==XPath==&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1457</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1457"/>
		<updated>2010-01-26T13:53:37Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
Obrázok 1.1 Vzťah SGML, XML, HTML a XHTML&lt;br /&gt;
&lt;br /&gt;
==XML==&lt;br /&gt;
===Štruktúra dokumentu===&lt;br /&gt;
===Syntaktické pravidlá XML===&lt;br /&gt;
===Menné priestory===&lt;br /&gt;
==XPath==&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1456</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1456"/>
		<updated>2010-01-26T13:52:50Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Príklad.jpg]]&lt;br /&gt;
&lt;br /&gt;
==XML==&lt;br /&gt;
===Štruktúra dokumentu===&lt;br /&gt;
===Syntaktické pravidlá XML===&lt;br /&gt;
===Menné priestory===&lt;br /&gt;
==XPath==&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pr%C3%ADklad.jpg&amp;diff=1455</id>
		<title>Súbor:Príklad.jpg</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pr%C3%ADklad.jpg&amp;diff=1455"/>
		<updated>2010-01-26T13:52:08Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1454</id>
		<title>Otvorené formáty súborov kancelárskych softvérov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Otvoren%C3%A9_form%C3%A1ty_s%C3%BAborov_kancel%C3%A1rskych_softv%C3%A9rov&amp;diff=1454"/>
		<updated>2010-01-26T13:46:46Z</updated>

		<summary type="html">&lt;p&gt;Lukaskrajci: /* XML, XPath, XSLT a XQuery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:web]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Lukáš Krajči|Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Otvorené formáty súborov kancelárskych softvérov|XML, XPath, XSLT a XQuery|Otvorené formáty kancelárskych softvérov|Aplikácia pre prezeranie dokumentov OO XML||||||||}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{abstrakt&lt;br /&gt;
|Práca sa zaoberá spôsobmi uchovávania dát v súboroch kancelárskych softvérov MS Office 2007 a Open Office 3.0. Rozoberá technológie použité pri ukladaní týchto dát a vnútornú štruktúru uložených dokumentov. Taktiež opisuje problematiku vytvorenia webovej aplikácie pre prezeranie súboru vybraného typu.&lt;br /&gt;
|The work deals with techniques of storying data in the files of the office software MS Office 2007 and OpenOffice.org 3.0. Analyzes the technologies used for the data storying and the internal structure of the stored documents.It also describes issues of creating a web-based application for viewing the selected file type.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=XML, XPath, XSLT a XQuery=&lt;br /&gt;
==Úvod==&lt;br /&gt;
Začiatkom osemdesiatych rokov dvadsiateho storočia IBM, DEC a ďalšie veľké priemyselné firmy prišli k dohode o potrebe štandardu pre výmenu údajov medzi rôznymi počítačmi. Ich iniciatíva viedla k vzniku štandardu ISO (International Organization for Standardization) s číselným označením 8879 z roku 1986. Obsahuje definíciu SGML (Standard Generalized Markup Language). Je to jazyk, ktorého cieľom bolo umožniť zdieľanie informácií medzi podnikmi s rozdielnymi informačnými systémami. Umožňuje oddeliť dáta od ich spracovania. Na základe analýzy štruktúry dát sa vytvára slovník, označovaný ako DTD (Document Type Definition). Tento slovník naznačuje obsah jednotlivých objektov tzv. objektovým modelom s presne definovanou syntaxou. Pretože rôzne množiny údajov môžu mať rôzne dátové objekty, líšia sa aj ich slovníky DTD. Dokument SGML je vytváraný ako textový dokument. Jednotlivé prvky dokumentu sú oddelené značkami, ktoré sú definované v slovníku DTD. Ako text je dokument prenositeľný na rôzne systémy, ktoré majú implementovaný analyzátor SGML dokumentov. Analyzátor tento dokument načíta, s využitím slovníka DTD a značiek v dokumente je schopný určiť štruktúru dokumentu a spracovať jeho obsah. Nevýhodou štandardu SGML bolo, že nebol schopný reagovať na požiadavky webu. Vznikol v dobe pomalých a drahých počítačov. Aby bolo možné z týchto systémov získať maximum, štandard SGML bol vybavený minimalizačnými nástrojmi. Tie mali výsledné textové súbory dokumentov stlačiť na čo najmenšiu veľkosť. Dôsledkom boli zložité, drahé a pomalé analyzátory a veľká finančná náročnosť zavádzania SGML do praxe. Skutočnosť, že SGML je štandardom ISO, sa premietla do odmietnutia zmien, ktoré smerovali k jeho zjednodušeniu. Zjednodušenia boli požadované pre možnosť použitia štandardu pri výmenu údajov vo webe a pre možnosť zobrazenia dokumentov prehliadačmi. Namiesto priameho použitia štandardu SGML ako celku veľké rozšírenie získala iba jeho aplikácia HTML - HyperTextMarkup Language. Pôvodcom jazyka je Tim Berners-Lee. Veľký ohlas mala verzia 2.0, ktorú Berners-Lee a D. Connolly zverejnili v novembri 1995 ako RFC1866. Ďalším medzníkom je január 1997. Bolo zverejnené odporúčanie W3C (World Wide Web Consorcium) HTML 3.2. Ale ani vtedy sa vývoj HTML neskončil. Pokračovalo pridávanie nových značiek. Objavila sa možnosť tvorby skriptov. Doplnené boli kaskádové štýly, formuláre, rámce. Popri statických HTML dokumentoch, čím ďalej tým viac údajov na webových serveroch sa ukladá v databázach. Čím ďalej tým viac dokumentov sa vytvára dynamicky programami alebo skriptami s využitím údajov v databázach. Rozširuje sa eBusines, eLearning, eBanking. Narastajú požiadavky na výmenu údajov medzi strojmi. HTML bolo pôvodne určené pre prezentáciu textov. Človek, čitateľ, si z textu potrebnú informáciu vyberie. Aby to však mohli robiť aj stroje, je potrebné dôslednejšie formátovať údaje a treba mať jasné pravidlá, podľa ktorých je možné zistiť, či sú údaje úplné. HTML k tomu nestačí, SGML je zložité a z tohto dôvodu vzniklo XML. V roku 1996 bola pod záštitou W3C vytvorená pracovná skupina, ktorej cieľom malo byť zjednodušenie SGML pre potreby webu. Okrem širokej akceptovateľnosti výsledného štandardu pre potreby webu sa mala dosiahnuť aj možnosť jednoduchej tvorby programov pre spracovanie XML dokumentov. Prvá verzia odporúčania XML bola zverejnená vo februári 1998. V októbri roku 2000 bola zverejnená revízia tohto odporúčania pod názvom Extensible Markup Language (XML) 1.0 (Second Edition). Odporúčanie definuje, čo je to XML dokument, čo je prvok (element), jeho počiatočné a koncové ohraničenie, značka, atribúty aj obsah prvku. Určuje pravidlá pre voľbu názvov prvkov - značiek, atribútov. Stanovuje tiež, kedy je dokument dobre sformovaný (well-formed - niekedy prekladané tiež správne sformátovaný) a tiež kedy je dokument platný (valid). Následne vznikla špecifikácia XHTML 1.0. Špecifikácia XHTML 1.0 je v podstate prepracovaným HTML 4.01 tak, aby splňovalo obmedzenia kladené na jazyk XML. Takže XHTML je  aplikáciou XML. Množina elementov a atribútov je plne zdedená z HTML 4.01. Okrem obmedzení, ktoré vznikli z dôvodu dodržovania prísnejšej syntaxe jazyka XML, ďalej definuje špecifikáciu niekoľkých doporučených postupov, ktoré majú zaistiť spätnú kompatibilitu XHTML dokumentov s HTML prehliadačmi.&lt;br /&gt;
==XML==&lt;br /&gt;
===Štruktúra dokumentu===&lt;br /&gt;
===Syntaktické pravidlá XML===&lt;br /&gt;
===Menné priestory===&lt;br /&gt;
==XPath==&lt;br /&gt;
==XSLT==&lt;br /&gt;
==XQuery==&lt;/div&gt;</summary>
		<author><name>Lukaskrajci</name></author>
		
	</entry>
</feed>