Rodina formátů XML 1

Rozměr: px
Začít zobrazení ze stránky:

Download "Rodina formátů XML 1"

Transkript

1 Abstrakt Rodina formátů XML 1 Karel Richta katedra počítačů ČVUT FEL Praha Karlovo nám.13, Praha 2 richta@fel.cvut.cz, Příspěvek přibližuje základy formátu XML a souvisejících standardů. Není určen jako podrobný popis formátu XML, ale měl by zdůraznit základní myšlenky, nastínit datový model XML, naznačit možnosti definice struktury dokumentů (jazyky DTD, XML Schema). Dále by se měl zabývat nástroji, které tvoří tzv. rodinu XML formátů. Patří sem zejména navigační jazyk XPath, transformační a dotazovací nástroj XSLT. Jako příklad aplikace jsou zde uvedeny protokoly založené na XML (např. SOAP). 1 Úvod Formát XML (extensible Markup Language [W3C04a]) definovalo konsorcium W3C (World Wide Web Consortium) jako formát pro přenos obecných dokumentů. Návrh XML vychází ze staršího a obecnějšího standardu SGML (Standard Generalized Markup Language - ISO 8879). Dokumenty v XML jsou tedy automaticky i dokumenty v SGML. SGML je ale složitější a komplikovanější, což je pravděpodobně příčina, proč nedošlo k jeho širšímu užití. Poznamenejme, že ze standardu SGML vychází i formát dokumentů HTML (Hyper-Text Markup Language [W3C99a]). Sada značek HTML je však pevná a slouží k vyjádření prezentační podoby dokumentu. Naproti tomu v XML sada značek pevná není, ale může být definována pro různé sady dokumentů různě. Značky mají tvar obecných závorek (tags), např.: <jmeno>josef</jmeno> Značky slouží k označení určitých prvků v dokumentu. Uvažme např. níže uvedenou hypotetickou zprávu, jednou bez značek a jednou s označením jména odesilatele: Jan Amos, Karel Hynek Ahoj! Pozdrav z říše divů! posílá Alenka Jan Amos, Karel Hynek Ahoj! Pozdrav z říše divů! posílá <jmeno>alenka</jmeno> P.S.: Napište mi! P.S.: Napište mi! 1 Tento článek vznikl při práci na výzkumných záměrech MŠMT Výzkum v oblasti informačních technologií a komunikací Českého vysokého učení technického v Praze, a byl též částečně sponzorován z grantu GAČR 201/03/0912 Vyhledávání a indexování XML dokumentů.

2 Vyznačíme-li jméno odesilatele, bude takový dokument lépe uchopitelný a bude možno jej zpracovat případně i programem. Definice sady značek může být součástí definice XML dokumentu, může být specifikována odkazem, nebo může být dohodnuta předem. Značky v XML slouží k vymezení logické struktury dokumentu. Můžeme např. stanovit, že dokument typu zpráva musí obsahovat adresu (případně vynechanou, nebo i více adres), oslovení, text, podpis a případně dodatek. V XML tento požadavek zapíšeme následovně: <!ELEMENT zprava (adresa*, osloveni, text, podpis, dodatek?)> Vlastní obsah každé zprávy pak musí mít odpovídající tvar, např.: <zprava> <adresa>jan Amos</adresa> <adresa>karel Hynek</adresa> <osloveni>ahoj!</osloveni> <text>pozdrav z říše divů!</text> <podpis>alenka</podpis> <dodatek>napište mi!</dodatek> </zprava> Pomocí značek XML vyznačíme syntaktickou strukturu dokumentu. Sémantika obsahu není pomocí XML definována. Např. pro výše zmíněnou zprávu nevíme, v jakém formátu se má tisknout, nevíme, jak jej zpracovat to je věcí aplikací, které s tímto dokumentem manipulují. Význam XML spočívá v tom, že struktura dokumentu (v našem případě dokumentu typu zpráva ) je známa, lze ji kontrolovat a zpracovat obecnými nástroji. Libovolná aplikace si může strukturu dokumentu zjistit a dle této struktury jej zpracovat. Význam jednotlivých částí dokumentu XML není pomocí XML definován víme, že dokument typu zpráva musí obsahovat element oslovení, ale není předepsáno, co se s oslovením má provést. Později se budeme věnovat možnostem zpracování XML dokumentů, např. jak můžeme XML dokument přepsat na jiný dokument, jehož sémantika je známa např. na dokument ve formátu HTML a v tomto formátu jej prezentovat. Různými předpisy lze popsat transformaci stejného dokumentu do různých formátů. Předpis pro transformaci XML dokumentu lze tedy chápat jako definici, kterou se vyjádří sémantika XML dokumentu. Potřeba nezávislého formátu pro reprezentaci a přenos obecných dokumentů je nesporná. Tento příspěvek představuje úvod, na který naváží další příspěvky. V následujícím textu proto bude popsán podrobněji formát XML a možnosti definice struktury dokumentů pomocí jazyka DTD (Document Type Definition). Dále se zde budeme zabývat nástroji, které tvoří tzv. rodinu XML formátů. Patří sem navigační jazyk XPath [W3C99c], transformační a dotazovací nástroj XSLT [W3C99b]. Jako příklad aplikace budou uvedeny protokoly založené na XML (např. SOAP [Ni01]). V dalších příspěvcích pak budou probírány novější a preciznější možnosti definice struktury dokumentů pomocí jazyka XML Schema [Ml04], některé významné aplikace formátu XML, zejména XML databáze [Po04], dotazovací jazyky pro XML [ToK04] a komprese XML dat [ToV04]. 2 Formát XML XML je formát pro reprezentaci a přenos obecných dokumentů [W3C04a, XML04a, XML04b, XML04c]. Při návrhu XML se autoři řídili následujícími principy: XML musí být použitelné v rámci Internetu, XML by mělo podporovat širokou škálu aplikací, XML musí být kompatibilní s SGML, Musí být snadné vytvářet programy, které manipulují s dokumenty v XML,

3 Množství variant XML by mělo být minimální (nejlépe žádné) a XML dokumenty by měly být čitelné a pochopitelné. Na základě těchto principů navrhli definici XML, která zahrnuje dvě části: definice co to je XML dokument, definice programů, které zpracovávají XML dokumenty (XML procesor). XML procesor je modul, který umí číst XML dokumenty a zpřístupňuje entity aplikacím. XML procesor kontroluje, zda je dokument dobře vytvořen zda odpovídá pravidlům zápisu XML dokumentů. Porušení tohoto omezení představuje fatální chybu, kterou musí XML procesor detekovat a hlásit aplikaci. XML procesor může být validující - pak umí kontrolovat, zda vstupní XML dokument je správný vzhledem k zadané specifikaci struktury XML dokumentu. 2.1 XML dokument XML dokument se fyzicky skládá ze sady entit (objektů). Z hlediska XML může každá entita obsahovat buď rozpoznatelná data nebo nerozpoznatelná data. Rozpoznatelná data pro XML jsou sestavena ze znaků a představují buď znaková data nebo značky (markups). Značky popisují logickou strukturu dokumentu a jeho rozložení (layout). Jedna entita může odkazovat na entitu jinou. Dokument začíná entitou nazývanou kořen (root entity objekt syntaktické třídy document). Logicky se XML dokument skládá z deklarací, elementů, komentářů a instrukcí pro zpracování jinou aplikací. Logické elementy jsou v dokumentu vyznačeny značkami. XML poskytuje mechanizmy na definici omezení logické struktury a rozložení dokumentu (DTD Document Type Definition, nebo nověji a přesněji XML Schema). Tyto možnosti budou podrobně probírány v jiném příspěvku ([Ml04]). XML dokument je dobře vytvořen (well-formed), pokud všechny rozpoznatelné entity v dokumentu jsou správně vytvořeny a navíc, všechny rozpoznatelné entity, na které existují v dokumentu odkazy, jsou rovněž dobře vytvořeny. Dobře vytvořené elementy musí být správně uzávorkovány, závorky se nesmí křížit. Každá dvojice závorek musí být korektně spárována v rámci elementu a tyto dvojice musí být dobře vnořeny do sebe. Z toho plyne, že dobře vytvořený XML dokument má stromovou strukturu. Uvažme jako příklad jednoduchou faxovou zprávu: <fax> <odesilatel> <jmeno>jan Amos</jmeno><cislo>33333</cislo> </odesilatel> <adresat> <jmeno>karel Hynek</jmeno><cislo>66666</cislo> </adresat> <text> </text> </fax> Elementy mohou mít atributy, kterými jsou blíže charakterizovány. Atributy se vkládají do otevírací závorky v čele elementu ve formě dvojice: klíčové slovo= hodnota. Hodnoty atributů musí být vždy uzavřeny v uvozovkách nebo apostrofech. Stejnou faxovou zprávu lze s pomocí atributů vyjádřit následovně: <fax> <odesilatel jmeno= Jan Amos cislo= /> <adresat jmeno= Karel Hynek cislo= /> <text> </text> </fax>

4 Každý dobře vytvořený XML dokument může být navíc správný (valid), pokud splňuje další omezení správnosti (validity constraints). Ta jsou určena specifikací typu dokumentu, pomocí DTD nebo pomocí XML schématu vyjádřeném např. v jazyce XML Schema. Ke specifikaci každého elementu je možno připojit podmínky pro dobře vytvořený element (WFC Well-Formedness Condition) a podmínky pro správný XML dokument (VC - Validation Condition). 2.2 Prolog XML dokumentu Každý správný XML dokument začíná prologem, za ním následuje kořen dokumentu a na konec dokumentu může být připojena sada komentářů a instrukcí pro jiné aplikace. Prologem se stanoví verze XML a případně požadavky na strukturu dokumentu (DTD nebo XML schéma). Každý XML dokument obsahuje jeden či více elementů. Vždy existuje právě jeden element nazývaný kořen (root), jehož žádná část není obsažena v žádném jiném elementu. XML dokument může a měl by začínat deklarací verze XML, jinak je sice dobře vytvořen, ale není správný. Jinými slovy, každý správný XML dokument obsahuje prolog s deklarací verze XML. Deklarace verze dokumentu má tvar: <?xml version="1.0"?> Součástí prologu je také specifikace typu XML dokumentu. Specifikace typu představuje odkaz na jakousi gramatiku třídy dokumentů, která se zapisuje buď jako definice typu dokumentu (DTD) nebo XML schéma dokumentu v jazyce XML Schema. Specifikace typu XML dokumentu může odkazovat na externí entitu, která obsahuje deklaraci značek, nebo může tuto deklaraci obsahovat přímo XML dokument, nebo obojí. Skutečná gramatika je tvořena spojením těchto deklarací, interní mají v případě kolize přednost před externími. Příklady specifikace typu dokumentu Dokument s externím DTD: <?xml version="1.0"?> <!DOCTYPE pozdrav SYSTEM "hello.dtd"> <pozdrav>hello, world!</pozdrav> Dokument v XHTML s definicí stanovenou externím DTD: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso "/> <title>zprava</title> </head> <body> Moje zpráva </body> </html> Dokument s lokálním DTD: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE pozdrav [ <!ELEMENT pozdrav (#PCDATA)> ]> <pozdrav>hello, world!</pozdrav> Dokument s definicí stanovenou XML schématem: <?xml version="1.0" encoding="utf-8"?>

5 <pozdrav xsi:nonamespaceschemalocation= " xmlns="" xmlns:xsi=" Hello, world! </pozdrav> 2.3 Obsah XML dokumentu XML dokument se logicky skládá z elementů, komentářů a dat pro jiné aplikace (instrukcí pro zpracování). Základním prvkem dokumentu je element. Každý XML dokument obsahuje jeden nebo více elementů, omezených závorkami (start-tag a end-tag), nebo případně prázdných (označených tzv. empty-element tag). Každý element má typ identifikovaný jménem (generickým identifikátorem) a může mít sadu atributů. Každý atribut má jméno a hodnotu. Příklad <osoba jmeno="karel" prijmeni="iv."> text tvořící obsah elementu osoba </osoba> Obsahem elementu může být libovolná posloupnost znakových dat, jiných vnořených elementů, referencí (odkazů) na jiné objekty, datových sekcí (CDATA), instrukcí pro zpracování jinou aplikací, nebo komentářů. Jednotlivé složky jsou popsány dále. Prázdný element Prázdné elementy slouží obvykle pro vyznačení místa, kam se později doplní nějaký element, nebo pro logické vyznačení místa v dokumentu. Prázdný element může mít atributy (to může být např. jeho smyslem). Různé formy ukazují následující příklady: <IMG align="left" src=" /> <br></br> <br/> Komentáře Komentáře se v XML dokumentu mohou vyskytnout kdekoliv mimo ostatní značky. XMLprocesor může umožnit aplikaci číst text komentářů (obsah komentářů). V komentáři se nesmí vyskytovat řetězec "--" (double-hyphen), neboť ten se používá v komentářových závorkách podle syntaxe: <!-- Já jsem příklad komentáře --> Instrukce pro jinou aplikaci Definice XML dokumentu umožňuje, aby dokument obsahoval instrukce a data pro jinou aplikaci. Takové sekci se říká Processing Instructions (PI). Instrukce obsahují návěští (PITarget), kterým je identifikována aplikace, pro kterou jsou instrukce určeny (nesmí to být XML). Obsah sekce instrukcí není chápán jako součást dokumentu, obsah musí být pouze předán ke zpracování dané aplikaci. <?xql "Já jsem data pro aplikaci xql"?> <!-- Následují příklad popisuje připojení formátovacího stylu k aktuálnímu dokumentu. --> <?xml-stylesheet href="styl.css" type="text/css"?>

6 Sekce CDATA Sekce typu CDATA slouží k označení bloků textu, který by jinak mohl být považován za značku. Uvedeme-li v dokumentu text: <pozdrav>hello, world!</pozdrav> bude chápán jako element typu pozdrav s obsahem Hello, world!. Chceme-li, aby závorky pozdrav byly součástí textu elementu, musíme použít konstrukci: <![CDATA[<pozdrav>Hello, world!</pozdrav>]]> 2.4 DTD specifikace struktury dokumentu Jak jsme se již několikrát zmínili, lze pro XML dokumenty předepsat jejich požadovanou strukturu. Zde probereme specifikaci struktury pomocí DTD. Základem DTD jsou deklarace typů elementů ty specifikují, jaké elementy může XML dokument obsahovat a jak se mohou skládat a vnořovat. Deklarace typu elementu Deklarace typu elementu zavádí jméno elementu a specifikuje jeho možný obsah. Element může být prázdný (EMPTY): <!ELEMENT br EMPTY> Element může mít libovolný obsah (ANY): <!ELEMENT container ANY> Element může obsahovat určitá data (znaky v implicitním, nebo předepsaném kódu): <!ELEMENT jmeno (#PCDATA)> Obsah elementu může být specifikován regulárním výrazem, kde se znakem:? vyjadřuje nepovinnost složky, + vyjadřuje možnost opakování složky 1x a více, * vyjadřuje možnost libovolného opakování složky, vyjadřuje možnost selekce možností a, vyjadřuje požadavek na sekvenční uspořádání složek. Následující deklarace elementu typu dopis říká, že každý element tohoto typu musí obsahovat nejméně jeden vnořený element typu adresa, pak následují povinné elementy osloveni, text a podpis a to v tomto pořadí. Nakonec může být nepovinně uveden element typu poznamka. <!ELEMENT dopis (adresa+,osloveni,text,podpis,poznamka?) > Pokud chceme připustit, aby element typu p obsahoval libovolnou posloupnost znaků a elementů typu emph, zapíšeme to následující deklarací. <!ELEMENT p (#PCDATA emph)* > Deklarace seznamu atributů elementu Deklarace typu elementu zavádí jméno elementu. Atributy elementu jsou zavedeny deklarací seznamu atributů. Při deklaraci atributů lze o každém atributu stanovit zda je povinný (#REQUIRED), či nepovinný. Dále lze požadovat unikátnost atributu (ID), lze nastavit atribut jako konstantní (#FIXED). Lze určit výčet možných hodnot a případnou implicitní hodnotu.

7 <!ELEMENT osoba (jmeno,prijmeni)> <!ATTRIBUTE osoba jmeno CDATA #REQUIRED prijmeni CDATA #REQUIRED titul (žádný ing. dr.) "žádný"> Pokud specifikujeme jako typ atributu typ ID, musí být hodnota tohoto atributu jednoznačná v rámci jednoho dokumentu jedná se o jakýsi primární klíč na úrovni dokumentu. Pouze jediný atribut v rámci elementu může být typu ID. Odkazy na atribut typu ID lze specifikovat jako atribut typu IDREF, příp. IDREFS (seznam odkazů oddělených mezerou) jakýsi cizí klíč v rámci dokumentu. <!ATTRIBUTE osoba sin ID #REQUIRED jmeno CDATA #REQUIRED prijmeni CDATA #REQUIRED titul (žádný ing. dr.) "žádný" druh IDREF #IMPLIED> Ve výše uvedené specifikaci má atribut sin význam social insurance number, které by mělo být jednoznačné a lze jej použít pro odkazy z jiných elementů typu osoba téhož dokumentu pomocí atributu druh. Pokud by druhů mohlo být více, použila by se specifikace typu IDREFS. Deklarace entity Entity využívá XML podobně jako symbolické konstanty. Deklarací entity se stanoví nahrazující text pro entitu. Často se toho využívá pro speciální znaky, které nejsou součástí použitého kódu. <!ENTITY Post-Scriptum "P.S.: "> <!ENTITY Pub-Status "This is a pre-release of the specification."> <!ENTITY open-hatch SYSTEM " <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//en" " Reference Reference představuje odkaz na jinou entitu nebo parametr dokumentu. Součástí reference mohou být podmínky, za kterých je reference dobře vytvořena (WFC), nebo správná (VC). Lze tak například zakázat rekurzivní odkazy. Reference vždy končí znakem ; a začíná buď znakem & (reference na entitu), nebo znakem % (reference na parameter). Mezi těmito omezovači se uvede jméno entity nebo parametru. &apos; <!-- Odkaz na entitu apos -> znak apostrof --> %size; <!-- Odkaz na parameter size --> %version; [ WFC: No Recursion ] <!-- Odkaz na parameter version --> Parametry Parametry jsou podobné entitám. V deklaraci parametru (parametrické entity) je jméno parametru předznačeno znakem %. <!-- deklarace parametru "ISOLat2"... --> <!ENTITY % ISOLat2 SYSTEM " >

8 <!--... odkaz na parameter --> %ISOLat2; Příklad XML dokumentu <?xml version="1.0" encoding="iso "?> <!DOCTYPE zprava [ <!ELEMENT zprava (adresa+,osloveni,text,podpis,dodatek?)> <!ELEMENT adresa (jmeno,prijmeni)> <!ELEMENT osloveni (#PCDATA)> <!ELEMENT jmeno (#PCDATA)> <!ELEMENT prijmeni (#PCDATA)> <!ELEMENT podpis (jmeno)> <!ELEMENT text (#PCDATA)> <!ELEMENT dodatek (#PCDATA dodatek1)*> <!ELEMENT dodatek1 (#PCDATA)> ]> <zprava> <adresa><jmeno>jan</jmeno><prijmeni>amos</prijmeni></adresa> <adresa><jmeno>karel</jmeno><prijmeni>hynek</prijmeni></adresa> <osloveni>ahoj!</osloveni> <text>pozdrav z říše divů!</text> <podpis><jmeno>alenka</jmeno></podpis> P.S.: <dodatek>napište mi!</dodatek> </zprava> 3 Datový model XML dokumentů Při zpracování XML dokumentů je třeba studovat řadu otázek. Patří sem zejména otázka, jak XML dokumenty ukládat. Bylo definováno několik datových modelů pro reprezentaci XML dokumentů (např. [W3C03b, SAX02]). Tyto datové modely nejsou zamýšleny jako předpis pro implementaci, ale slouží pro účely specifikace. Jsou definovány pro dobře vytvořené XML dokumenty, které mohou být správné (konformní) vzhledem k DTD nebo XML schématu. Existují dva základní přístupy ke zpracování XML dokumentů. Prvý přístup spočívá v definici stromové reprezentace XML dokumentu v paměti (příp. virtuální). Vstupní analyzátor přečte celý XML dokument, uloží jej do paměti ve formě stromu a aplikaci poskytuje sadu funkcí pro traverzování, či modifikaci této stromové struktury. Uvažme jako příklad dokument v HTML [W3C99a], kde každý správný dokument obsahuje element body tělo HTML stránky. Po načtení a analýze dokumentu doc můžeme tělo získat: // načteme posloupnost potomků, které se jmenují "body" var potomci = doc.getelementsbytagname("body"); // protože HTML dokument má právě jedno tělo, vybereme prvního z nich var telo = potomci.item(0); // a můžeme s ním dále pracovat telo.style.color = "black"; Jiný přístup ke zpracování XML dokumentů je událostmi řízený model. Pokud zpracováváme veliký XML dokument, ale zajímá nás pouze jeho část, bylo by zbytečné celý dokument ukládat v paměti. Místo toho lze vstup XML dokumentu považovat za posloupnost událostí, které musí aplikace zpracovat. Jako příklad takového rozhranní lze uvést model SAX (Simple API for XML [SAX02]). Uvažme např. následující jednoduchý XML dokument: <?xml version="1.0"?> <zprava> <pozdrav barva="blue">hello, world!</pozdrav> </zprava>

9 Událostmi řízená rozhranní převede tento dokument na posloupnost událostí: start document start element: zprava start element: pozdrav characters: Hello, world! end element: pozdrav start attribute: barva characters: blue end attribute: barva end element: zprava end document Tyto události pak musí zpracovat aplikace. Je vhodné poznamenat, že pomocí událostmi řízeného rozhranní lze zkonstruovat stromovou reprezentaci dokumentu a naopak strom lze procházet pomocí událostí. Zde uvedeme datový model podle specifikace [W3C03b], tzv. DOM model. Pro účely práce se sadami XML dokumentů podporuje též reprezentaci kolekcí XML dokumentů a kolekcí hodnot. XML dokument je modelován jako strom. Uzly tohoto stromu mohou být některého z následujících typů: dokument, element, atribut, text, jmenný prostor, instrukce pro zpracování a komentář. Každý strom má právě jeden kořen, pokud je to uzel typu dokument, pak mluvíme o XML dokumentu, pokud je jiného typu, mluvíme o fragmentu XML dokumentu. Definice datového modelu zavádí nový typ posloupnost (sequence). Posloupnost je uspořádaná kolekce položek (včetně prázdné posloupnosti). Položkou (item) v posloupnosti může být uzel nebo atomická hodnota. Kolekce dokumentů je reprezentována posloupností uzlů typu dokument. Ve starších verzích se pracovalo s množinami položek ( node-sets ), ale novější verze pracují s posloupnostmi. Dovoluje to bohatší možnosti a k množině se dá vždy přejít. Není možné zjišťovat identitu dvou posloupností je ale možné rozhodnout, zda obsahují stejné položky. Porovnání se děje postupným srovnáním prvků posloupností. Posloupnost obsahující jedinou položku se od této položky nerozlišuje, považuje za totéž. Posloupnost nemůže obsahovat jinou posloupnost položkou může být pouze uzel nebo atomická hodnota. Při manipulaci s více posloupnostmi se tyto spojují tak, že výsledkem je opět jediná posloupnost. Atomické hodnoty představují hodnoty jednoduchých primitivních typů, nebo typů z nich odvozených restrikcí. Primitivní typy jsou např. logické hodnoty (boolean), celá čísla (decimal), desetiná čísla (float, double), řetězce znaků (string), časové údaje (date, time, duration) a různé speciality (untypedany, untypedatomic, anyatomictype). Každá atomická hodnota se dá převést na řetězec. Podrobněji viz definice jazyka XML Schema v příspěvku [Ml04]. Uzly XML stromu jsou propojeny vazbami, které vyjadřují jejich hierarchii a strukturu. Každý uzel XML stromu je dosažitelný z kořene. Uzly různých typů jsou propojovány v jiných rovinách (používá se termín osa axis). Propojení reprezentující hierarchii elementů dokumentu je vyjádřeno vztahy v ose potomek-předchůdce. Atributy elementu jsou k němu připojeny v ose atributů. XML strom představuje uzlově ohodnocený, orientovaný, acyklický graf. Každý uzel stromu je unikátní má svou unikátní identitu (která ovšem nesouvisí s jednoznačnou identitou v rámci XML dokumentu předepsanou atributy ID/IDREFS).

10 Každý XML strom má přesně definováno pořadí uzlů, které obsahuje (document order). Toto uspořádání je v rámci jednoho zpracování stromu úplné, byť některé části mohou být implementačně závislé např. pořadí atributů elementu není dáno normou, ale implementací. Pořadí uzlů je dáno prohledáváním do hloubky, in-order. Kořen stromu je vždy prvý uzel v pořadí uzlů. Pořadí sourozenců ve stromě je dáno jejich pořadím v reprezentovaném XML dokumentu. Uzly typu jmenný prostor (namespace) bezprostředně následují element, ke kterému se vztahují. Jejich relativní pořadí je implementačně závislé. Uzly typu atribut jsou zařazeny za případné uzly typu jmenný prostor, jejich relativní pořadí je opět implementačně závislé. Pro traverzování XML stromu jsou k dispozici předefinované přístupové funkce, tzv. accessors. V přehledu je budeme uvádět včetně jmenného prostoru dm: Funkce Služba, kterou zajišťuje Návratová hodnota dm:node-kind služba, která zjišťuje druh uzlu vrací jednu z hodnot: document, element, attribute, namespace, processing-instruction, comment, nebo text dm: base-uri vrací URI vrací posloupnost URI pro daný prvek dm: node-name vrací jméno uzlu vrací posloupnost jmen pro daný prvek dm: type vrací jméno typu uzlu vrací posloupnost jmen typů pro daný prvek dm: typed-value vrací typovanou hodnotu vrací posloupnost atomických hodnot pro daný prvek dm: string-value vrací řetězec vrací hodnotu prvku převedenou na řetězec dm: parent vrací rodiče vrací rodiče prvku jako posloupnost uzlů dm: children vrací potomky vrací potomky prvku jako posloupnost uzlů dm: attributes vrací atributy vrací atributy prvku jako posloupnost uzlů dm: namespaces vrací jm.prostory vrací jmenné prostory prvku jako posloupnost uzlů dm: nilled vrací příznak tzv. nilled elementu vrací logickou hodnotu true, pokud je aplikována na element, který má prázdný obsah, vrací prázdnou posloupnost, pokud je aplikována na jiný uzel, než element Mimo tyto základní traverzovací funkce je k dispozici celá sada různých metod, např. uzel typu element může poskytovat (mimo jiné) metody (fragment v IDL): boolean hasattribute(in DOMString name); -- test na existenci atributu DOMString getattribute(in DOMString name); -- získání hodnoty atributu void setattribute(in DOMString name, in DOMString value) raises(domexception); -- nastavení hodnoty atributu void removeattribute(in DOMString name) raises(domexception); -- zrušení atributu Attr getattributenode(in DOMString name); -- vrátí uzel atributu NodeList getelementsbytagname(in DOMString name); -- vrátí seznam elementů daného jména Specifikace W3C dokonce doporučuje interface modulů pro traverzování, např. pro procházení všech uzlů posloupnosti: interface NodeIterator { Node nextnode() raises(domexception); Node previousnode()raises(domexception);

11 }; NodeIterator iter= ((DocumentTraversal)document).createNodeIterator( root, NodeFilter.SHOW_ELEMENT, null); while (Node n = iter.nextnode()) printme(n); Podobně pro traverzování stromu: interface TreeWalker { Node parentnode(); Node firstchild(); Node lastchild(); Node previoussibling(); Node nextsibling(); Node previousnode(); Node nextnode(); }; processme(node n) { nodestartactions(n); for (Node child=n.firstchild(); child!= null; child=child.nextsibling()) { processme(child); } nodeendactions(n); } Uvažme jednoduchý dokument: <?xml version="1.0"?> <zprava> <pozdrav barva="blue">hello, world!</pozdrav> </zprava> Jeho XML strom by mohl vypadat následovně: zprava: document pozdrav: element barva= blue : attribut Hello, world! : text Serializované vyjádření XML stromu lze zapsat pomocí výsledků traverzovacích funkcí: // Document node D1 dm:node-kind(d1) = "document" dm:string-value(d1) = "Hello, world!" dm:children(d1) = ([E1]) // Element node E1 dm:node-kind(e1) = "element"

12 dm:node-name(e1) = xs:qname("", "pozdrav") dm:string-value(e1) = "Hello, world!" dm:typed-value(e1) = "Hello, world!" dm:type(e1) = xs:anytype dm:parent(e1) = ([D1]) dm:children(e1) = () dm:attributes(e1) = ([A1]) // Attribute node A1 dm:node-kind(a1) = "attribute" dm:node-name(a1) = xs:qname("", "barva") dm:string-value(a1) = "blue" dm:typed-value(a1) = "blue" dm:type(a1) = xs:string dm:parent(a1) = ([E1]) / Text node T1 dm:node-kind(t1) = "text" dm:string-value(t1) = "Hello, world!" dm:typed-value(t1) = xs:anysimpletype("hello, world!") dm:type(t1) = xs:anysimpletype dm:parent(t1) = ([E1]) 4 Jazyk XPath Jak bylo ukázáno v předchozí sekci, lze XML dokumenty reprezentovat pomocí XML stromů. Při práci s XML dokumenty potřebujeme mít nějaký nástroj pro označování částí XML dokumentů. Jinými slovy, potřebujeme mít nástroj, který de facto popisuje cestu od kořene stromu k danému prvku. Konsorcium W3C vytvořilo návrh specializovaného jazyka XPath [W3C99c], který slouží pro tento účel. Jazyk XPath bývá použit jako součást jiných jazyků a formátů, např. XQuery, XSLT apod. Základním konstruktem jazyka XPath je výraz (location path expression). Výraz jazyka XPath je tvořen posloupností kroků (location steps), které jsou odděleny lomítkem /. Pokud výraz začíná lomítkem, jedná se o absolutní cestu, jinak o cestu relativní. Krok-1 / Krok-2 / / Krok-n Pokud je zapotřebí vyznačit explicitně dokument, pro který se má výraz vyhodnotit, využívá se prefixu document : document( )/Krok-1 / Krok-2 / / Krok-n Kroky výrazu vyznačují postup XML stromem. Každý krok může být kvalifikován osou, po které se má postupovat. Pokud kvalifikaci neuvedeme, používá se osa child. Obecně lze pro označení osy použít následující kvalifikátory: ancestor, ancestor-or-self, atribute, child, descendent, descendant-or-self, following, following-sibling, namespace, parent, preceding, preceding-sibling, nebo self. Osa-1::Krok-1 / Osa-2::Krok-2 / / Osa-n::Krok-n Výrazy XPath slouží pro označení částí XML dokumentu. Sémantickým významem výrazu v jazyce XPath je posloupnost uzlů nebo atomických hodnot. Význam výrazu závisí na tzv. kontextu kontextem pro celý výraz je vstupní XML dokument (nebo kolekce dokumentů), pro který se výraz vyhodnocuje. Výraz se vyhodnocuje vždy zleva doprava po jednotlivých krocích, ze kterých se skládá. Význam kroku v daném kontextu je opět posloupnost uzlů nebo atomických hodnot. Kontext pro prvý krok je vstupní dokument,

13 výsledek prvého kroku tvoří kontext pro druhý krok atd. Význam výrazu XPath je posloupnost uzlů nebo atomických hodnot, která je významem posledního kroku. Uvažme jako příklad vstupu XML dokument obsahující údaje o universitě, který bude uložen v souboru universita.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE University SYSTEM "universita.dtd"> <!-- Universitní databáze studentů --> <Universita jmeno="české vysoké učení technické"> <Fakulta idfaculty="f3" name="elektrotechnická"> <Student TypStudia="MSc" username="xnovak10"> <jmeno>josef Novák</jmeno> <narozeni> </narozeni> <adresa>praha 4, Nová 45</adresa> <rocnik>3</rocnik> </Student> <Student TypStudia="PhD" username="xpolak11"> <jmeno>pavel Polák</jmeno> <narozeni> </narozeni> <adresa>praha</adresa> <rocnik>3</rocnik> </Student> </Fakulta> </Universita> a bude správný vzhledem k DTD universita.dtd. <!-- universita.dtd --> <!ELEMENT Universita (Fakulta)+> <!ATTLIST Universita jmeno CDATA #REQUIRED> <!ELEMENT Fakulta (Student)*> <!ATTLIST Fakulta idfakulty ID #REQUIRED nazev CDATA #REQUIRED > <!ELEMENT Student (jmeno, narozeni, adresa, rocnik)> <!ATTLIST Student username CDATA #REQUIRED TypStudia (BSc MSc PhD) #IMPLIED > <!ELEMENT jmeno (#PCDATA)> <!ELEMENT narozeni (#PCDATA)> <!ELEMENT adresa (#PCDATA)> <!ELEMENT rocnik (#PCDATA)> Pak následující výraz XPath: document( universita.xml )/Universita/Fakulta/Student/jmeno vrátí posloupnost dvou uzlů typu element odpovídající jménům obou studentů. Potřebujeme-li vybrat druhého studenta fakulty s identifikátorem F3, použijeme výraz: id("f3")/child::student[position()=2] Zde bylo použito jméno osy child, kterou jsme zdůraznili směr navigace. Jsou definovány zkratky, kterými se zápis zjednodušuje. Např. výraz: //Student[@rocnik = "3"] označuje všechny studenty, kteří mají atribut rocnik s hodnotou 3. Ve výrazech je možno využívat předdefinované, nebo i uživatelsky definované funkce. XPath je funkcionální jazyk v tom smyslu, že výrazy mohou být vnořeny do jiných výrazů (nemají vedlejší efekty). XPath

14 rozlišuje malá a velká písmena, je silně typovaný (každý výraz má přesně definován typ, složené výrazy vyžadují komponenty správných typů). 5 Transformační jazyk XSL XML dokumenty je třeba prezentovat v různých formátech. Konsorcium W3C vytvořilo návrh specializovaného jazyka XSL (extensible Stylesheet Language [W3C99b,W3C01b]), který byl původně zamýšlen jako jazyk určený pro popis style-sheets - formátované tištěné verze XML dokumentů. Obecně však je XSL nástrojem pro popis transformací XML dokumentů, lze jej tedy využít pro řadu jiných účelů. Např. jej můžeme považovat za dotazovací jazyk, který pro daný transformační předpis a vstupní dokument vrátí výstupní dokument výsledek dotazu. Definice XSL má dvě části: jazyk pro popis transformací XML dokumentů (XSLT), XML slovník popisující sémantiku formátování (výstupu). Dokument v jazyce XSLT (XSL stylesheet) specifikuje transformaci třídy XML dokumentů na dokumenty jiné. Výstupem mohou být opět XML dokumenty, nebo stránky v HTML, příp. prostý text. Prezentace XML pomocí XSL Libovolný XML dokument jisté třídy (tj. konformní s DTD nebo XML schématem) lze prezentovat pomocí XSL. Vytvoříme předpis v jazyce XSLT, který bude obsahovat pravidla pro prezentaci. Proces prezentace má dva kroky: 1. zdrojový XML dokument (source tree) je podle pravidel transformován na výsledný document (result tree), 2. výsledný dokument je interpretován a výsledkem je formátovaný výstup (na obrazovce, papíru, atd.). XML dokument XSL procesor Formátovaný výstup XSL stylesheet Formát XSL dokumentu XSL dokument je XML dokument. Skládá se ze sady pravidel (také se jim říká šablony), která popisují transformaci vstupního dokumentu. Pravidla obsahují vzorek (pattern) a akci (template). Vzorek se porovnává se zdrojovým dokumentem, při srovnání se modifikuje akce pravidla (přizpůsobí se konkrétnímu srovnání) a aplikuje se na výsledný strom (zdrojový a výsledný strom jsou dva různé dokumenty). Struktura výsledného dokumentu může být

15 zcela jiná, než struktura zdrojového dokumentu (lze přidávat elementy, přeuspořádat pořadí, opakovat atd.). Protože je XSL dokument správně vytvořený XML dokument, musí být uzavřen v závorkách (používá se dvojice <xsl:stylesheet> a </xsl:stylesheet>) a všechny ostatní závorky musí být správně spárovány. Specifikace XSL plně využívá tzv. prostorů jmen (name spaces). Pro seznámení s XSL není nutno zcela podrobně porozumět tomuto mechanismu, postačí nám jednoduchý příklad. Podrobný popis lze nalézt na stránkách W3C. Všechny dokumenty odpovídající specifikaci XSL jsou vloženy do kořene XML dokumentu (root element): <xsl:stylesheet> </xsl:stylesheet> Příklad <xsl:stylesheet xmlns:xsl="http// xmlns:fo="http// result-ns="fo"> </xsl:stylesheet> Kořen dokumentu má v tomto případě atributy: xmlns:xsl (prostor jmen XSL dokumentu jako XML dokumentu), xmlns:fo (formátovací slovník), a result-ns= fo (výstupní prostor jmen). Prvý atribut je povinný a jeho hodnota musí být: xmlns:xsl="http// Tento atribut slouží pro procesor XSL, který tak pozná, že všechny elementy s prefixem xsl: mají být interpretovány dle specifikace XSL (jsou v prostoru xsl ). Druhý atribut je teoreticky volitelný, ale ve skutečnosti bývá většinou uveden v naznačeném tvaru. Říká XSL procesoru, že elementy s prefixem fo: (zkratka pro flow objects, nebo formatted objects) jsou v prostoru fo, a formátování využívá formátovací slovník dle specifikace XSL. Narazíli pak procesor na <fo:block font-size= 10pt >, řídí se syntaxí specifikovanou v prostoru fo. Je samozřejmě možné používat jiný slovník, je pak ale třeba přesvědčit tvůrce aplikací, aby tento formát respektovali. Třetí atribut result-ns= fo říká XSL procesoru, že konstruovaný výstupní strom (result tree) používá slovník fo. Pravidla XSL dokumentu Pravidla XSL dokumentu popisují přepis vstupního dokumentu na výstupní. Každé pravidlo obsahuje vzorek a akci. Vzorek pravidla slouží pro selekci uzlu (elementu) vstupního stromu. Selekci je možno předepsat podle: jména elementu, předchůdce elementu, ID elementu, wildcards (lze využít zástupné znaky), atributů elementu, relativní pozice elementu ve stromě, nebo unikátnosti elementu. Akce pravidla obsahují: elementy konstruovaného (formátovaného) objektu, např. <fo:block></fo:block> vytvoří ve formátovaném objektu blok, atributy formátovaného objektu, např. <fo:block font-size= 16pt > indikuje, že ve výstupním objektu má být použito písmo velikosti 16 bodů, způsob zpracování (ve formě prázdného elementu), např. <apply-templates/> způsobí, že XSL procesor zpracuje v tomto místě všechny potomky. Procesor XSL prochází vstupní dokument (vstupní strom) a pokouší se hledat vzorky pravidel XSL dokumentu. Pokud se podaří nalézt shodu, aplikuje akci pravidla na výstupní

16 dokument (výstupní strom). Pokud je aplikovatelných pravidel více, lze stanovit pořadí při výběru pravidel. Pravidla mají následující formát: <xsl:stylesheet> <!-- zde je vzorek --> <xsl:template... <!-- zde je akce -->... </xsl:template> </xsl:stylesheet> Příklad pravidla XSL <xsl:stylesheet> <!-- zde je vzorek --> <xsl:template match= pozdrav > <!-- zde je akce --> <fo:block color= red font-size= 16pt > <apply-templates/> </fo:block> </xsl:template> </xsl:stylesheet> Příklad zpracování dle tohoto pravidla vstup: výstup: <pozdrav>hello XSL!</pozdrav> <fo:block color= red font-size= 16pt > Hello XSL! </fo:block> 5.1 Zpracování XML dokumentu pomocí XSL Pokusme se jako příklad napsat popis transformace, která z databáze studentů uvedené dříve (soubor universita.xml) vybere určitého studenta a vytvoří XML dokument, který nese informaci o tom, že daný student je studentem příslušné fakulty (viz [Ku01]). <xsl:stylesheet version="1.0" xmlns:xsl= <xsl:output method="xml" indent="yes"/> <xsl:param name="id" select="'xnovak10'"/> <xsl:param name="fak" select="'f3'"/> <!-- Pravidlo pro výběr a zpracování fakulty --> <xsl:template match="fakulta"> <xsl:if test="./@idfakulty=$fak"> <! Jen pro zadanou fakultu --> <xsl:apply-templates/> </xsl:if> </xsl:template> <!-- Pravidlo pro výběr a zpracování studenta --> <xsl:template match="student"> <xsl:if test="@username = $id"> <! Jen pro zadaného studenta --> <xsl:processing-instruction name= "cocoon-process">type="xslt"</xsl:processing-instruction> <xsl:processing-instruction name=

17 "xml-stylesheet">href="pos2-html.xsl" type="text/xsl"</xsl:processing-instruction> <!-- Nastavení proměnných podle atributů studenta --> <xsl:variable name="typ"> <xsl:choose> <xsl:when = 'BSc'">bakalář</xsl:when> <xsl:when = 'MSc'">inženýr</xsl:when> <xsl:when = 'PhD'">doktorand</xsl:when> <xsl:otherwise/> </xsl:choose> </xsl:variable> <!-- začátek transformace vytváříme element certifikát --> <certificate> <header> <Fakulta><xsl:value-of </header> <paragraph> <row> <text>děkan fakulty </text> <Faculty><xsl:value-of <text> potvrzuje, že </text> </row> <row> <jmeno><xsl:value-of select="./jmeno"/></jmeno> <text>, narozen(á) </text> <narozeni><xsl:value-of select="./narozeni"/></narozeni> </row> <row> <text> bydliště: </text> <adresa><xsl:value-of select="./adresa"/></adresa> <text> působí na naší fakultě jako </text> <TypStudia><xsl:value-of select="$typ"/></typstudia> </row> <row> <text> ve </text> <rocnik><xsl:value-of select="./rocnik"/></rocnik> <text> ročníku. </text> <row> </paragraph> </certificate> <!-- Konec certifikatu --> </xsl:if> </xsl:template> </xsl:stylesheet> Příklad výstupu Aplikujeme-li tento předpis pro transformaci na dokument universita.xml, bude výstupem opět XML dokument (ale správný vzhledem k jinému DTD), který obsahuje potřebné informace o certifikátu, ale zatím nenaformátované. <?xml version="1.0" encoding="utf-8"?> <?cocoon-process type="xslt"?> <?xml-stylesheet href="pos2-html.xsl" type="text/xsl"?>

18 <certificate> <header> <Fakulta>elektrotechnická</Fakulta> </header> <paragraph> <row> <text>děkan fakulty </text> <Fakulta>elektrotechnická</Fakulta> <text> potvrzuje, že </text> </row> <row> <jmeno>josef Novák</jmeno> <text>, narozen(á) </text> <narozeni> </narozeni> </row> <row> <text> bydliště: </text> <adresa>praha 4, Nová 45 </adresa> <text> působí na naší fakultě jako </text> <TypStudia>inženýr</TypStudia> </row> <row> <text> ve </text> <rocnik>3</rocnik> <text> ročníku. </text> </row> </paragraph> </certificate> Příklad převodu do HTML Následující příklad ukazuje předpis pro převod dokumentu v XML vytvořeného v předchozím odstavci do HTML pomocí XSLT. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:output method="html"/> <xsl:template match="/certificate"> <xsl:processing-instruction name= "cocoon-format">type="text/html" </xsl:processing-instruction> <html> <head><title>potvrzení o studiu</title></head> <body style= "margin-left:1cm;margin-right:1cm;margin-top:15mm;width:15cm;"> <div style="margin:0px;width:125mm;"> <xsl:apply-templates/> <p align="right">the Dean of </p> </div> </body> </html> </xsl:template> <xsl:template match="header"> <table width="100%"> <tr><td colspan="2">české vysoké učení technické</td> </tr> <tr><td>fakulta <i><xsl:value-of select="fakulta"/></i></td>

19 <td><div align="right">datum: <xsl:value-of select="date"/></div> </td> </tr> </table> <center><h1 style="font-size:larger;letter-spacing:5pt"> POTVRZENÍ</h1> </center> </xsl:template> <xsl:template match="fakulta jmeno narozeni adresa TypStudia rocnik"> <font color="blue"><i><xsl:value-of select="."/></i></font> </xsl:template> <xsl:template match="paragraph"> <div style="margin-top:2em;margin-bottom:0.5em:" align="justify"><xsl:apply-templates/></div> </xsl:template> <xsl:template match="row"> <xsl:apply-templates/> </xsl:template> <xsl:template match="text"> <xsl:value-of select="."/> </xsl:template> </xsl:stylesheet> Výstupem pak bude dokument v XHTML: <?cocoon-format type="text/html"> <html> <head> <META http-equiv="content-type" content="text/html; charset=utf-8"> <title>the Certificate about Study</title> </head> <body style="margin-left:1cm;margin-right:1cm;margintop:15mm;width:15cm;"> <div style="margin:0px;width:125mm;"> <table width="100%"> <tr> <td colspan="2">české vysoké učení technické</td> </tr> <tr> <td>fakulta elektrotechnická</i> </td> <td> <div align="right">datum: </div> </td> </tr> </table> <center> <h1 style="font-size:larger;letter-spacing:5pt"> POTVRZENÍ</h1> </center> <div style="margin-top:2em;margin-bottom:0.5em:" align="justify"> Děkan fakulty <font color="blue"> <i>elektrotechnická</i> </font> potvrzuje, že

20 <font color="blue"> <i>josef Novák</i> </font> narozen(á) <font color="blue"> <i> </i> </font> bydliště: <font color="blue"> <i>praha 4, Nová 45</i> </font> působí na naší fakultě jako <font color="blue"> <i>inženýr</i> </font> ve <font color="blue"> <i>3</i> </font> ročníku. </div> </body> </html> Vytvořený certifikát lze ale prezentovat i v jiných formátech. Jako ukázku uvažme jen fragment XLST kódu pro převod do formátu FO (PDF), který je součástí definice XSL. <xsl:stylesheet version="1.0" xmlns:xsl=" xmlns:fo=" > <!-- <xsl:output method="pdf"/> --> <xsl:output method="xml" indent="yes"/> <xsl:template match="/certificate"> <xsl:processing-instruction name="cocoon-format">type="text/xslfo"</xsl:processing-instruction> <fo:root xmlns:fo=" <fo:layout-master-set>

21 <fo:simple-page-master page-master-name="one" page-height="130mm" page-width="190mm" margin-left="10mm" margin-right="10mm"> <fo:region-body margin-top="15mm" margin-bottom="5mm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence> <fo:sequence-specification> <fo:sequence-specifier-repeating page-master-first="one" page-master-repeating="one"/> </fo:sequence-specification> <fo:flow font-family="timesroman" font-size="13pt" line-height="14pt"> <xsl:apply-templates/> <fo:block text-align="end" space-before.optimum="30pt"> České vysoké učení technické </fo:block> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template>... </xsl:stylesheet> 6 Protokol SOAP Konsorcium W3C v současné době podporuje řadu dalších formátů, které z XML vycházejí tzv. aplikace XML. Jednou takovou aplikací je i standard pro tzv. webové služby služby poskytované prostřednictvím sítě. Jako příklad takové služby může posloužit služba pro zjištění aktuálního kurzu akcie ve vzdáleném místě. Pokud mají být takové služby nezávislé na platformě a být dostupné zcela globálně, je výhodné využít při jejich volání reprezentaci ve formátu XML. Je to tedy rozšíření XML z datové oblasti na volání funkcí. Požadavek na službu zakódujeme do XML a přeneseme pomocí protokolu HTTP na cílový stroj. Tam je požadavek rozkódován, obsloužen a získané výsledky opět přeneseny zpět ve formátu XML. Volání služeb ve vzdáleném místě lze formulovat a přenášet pomocí protokolu, který je založen na formátu XML. Jedním z takových je formát SOAP (Simple Object Access Protocol [W3C03a, Ni01]), který slouží pro obecné vyvolávání metod vzdálených objektů. Aby ale klient věděl, jak službu vzdáleného objektu vyvolat, musí znát její interface - funkční profil. Pro jejich zápis byl definován standard WSDL (Web Services Description Language [W3C04b]). Z popisu služby ve WSDL lze automaticky vygenerovat kód, kterým tuto službu zavoláme (ve formátu SOAP), i kostru programové obsluhy této služby. Poslední související problém je, jak zjistit, které služby se v síti nabízí. K tomu by měl posloužit univerzální registr obsahující seznam a popis dostupných webových služeb, tzv. UDDI (Universal Description, Discovery and Integration [OASIS02]). V takovém registru by mělo být možné službu vyhledat, podle jejího popisu ve WSDL zformulovat zprávu ve formátu SOAP a nechat se vzdáleným poskytovatelem obsloužit.

22 Požadavek na službu je třeba zabalit do obálky. Poslouží zde protokol SOAP, což je jednoduchý protokol, který definuje uniformní způsob přenášení dat v XML. Rovněž definuje, jakým způsobem se má pomocí HTTP provést vyvolání vzdálené procedury (RPC - Remote Procedure Call). SOAP vychází z přesvědčení, že ať je aktuální realizace procedury služby jakkoliv sofistikovaná, její vyvolání přes XML zvyšuje operativnost v rámci sítě. Hlavním elementem dokumentu ve formátu SOAP je obálka (SOAP-Envelope, viz obrázek). Ta může obsahovat hlavičku (Header) a musí obsahovat tělo (Body). Dále může obsahovat informace pro zpracování výjimek (Fault). Např. požadavek na provedení součtu dvou hodnot může vypadat následovně (do obálky je třeba vložit i odkazy na XML schémata zabudovaných typů, které používáme): <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope xmlns:soap-env=" <SOAP-ENV:Body SOAP-ENV:encodingStyle=" xmlns:wn1=" xmlns:wn0=" xmlns:xsi=" <nsp:soucet xmlns:nsp="urn:x-kosek:services:soucet"> <par0 xsi:type="wn0:int">2</par0> <par1 xsi:type="wn0:int">5</par1> </nsp:soucet> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Tato zpráva je zaslána na server. Tam musí být obsluha, která požadavek dekóduje a vykoná. Poté je výsledek služby opět zabalen do SOAP obálky a poslán zpět:

23 <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope xmlns:soap-env=" <SOAP-ENV:Body SOAP-ENV:encodingStyle=" xmlns:wn1=" xmlns:wn0=" xmlns:xsi=" <nsp:vysledek_souctu xmlns:nsp="urn:x-kosek:services:soucet"> <vysledek xsi:type="wn0:int">7</vysledek> </nsp:vysledek_souctu> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Výsledek je na straně klienta dekódován, jsou z něj extrahována data předána ke zpracování (např. metodě println k vytištění). 7 Formát WSDL Jako poslední příklad aplikace formátu XML uvedeme jazyk WSDL (Web Services Description Language [W3C04b]). Dokument ve formátu WSDL představuje sadu definic zahrnutých do elementu wsdl:definitions. Zjednodušená gramatika pro tento element je znázorněna na obrázku na následující straně. Služby jsou definovány pomocí 4 základních elementů: message abstraktní definice přenášených dat, skládá se z částí (parts), porttype představuje sadu abstraktních operací, které mají definován vstup, výstup a reakci na chyby, binding popisuje konkrétní protokol pro navázání operace na složky operace popsané pomocí porttype, service odkazuje na uzel který službu realizuje a pomocí složek port odkazuje na způsob vazby (binding).

24 Příklad definice ve formátu WSDL Předpokládejme, že chceme vytvořit a použít jednoduchou webovou službu. Pro jednoduchost uvažme službu, která nevyžaduje žádné další pomocné komponenty. V [Ko02] je uveden příklad služby na sečtení dvou čísel. Popis této služby vyžaduje, abychom stanovili, že požadavek na vykonání této služby bude muset obsahovat 2 parametry této služby označme je jako par0 a par1. Parametry jsou celá čísla: <wsdl:message name='pozadavek_na_secteni'> <wsdl:part name='par0' type='xsd:int'/> <wsdl:part name='par1' type='xsd:int'/> </wsdl:message> Získaný výsledný součet bude opět celé číslo: <wsdl:message name='vysledek_souctu'> <wsdl:part name='vysledek' type='xsd:int'/> </wsdl:message> V části označované porttype je nutno stanovit, jaká operace bude implementovat požadavek na službu Soucet. Služba Soucet bude implementována pomocí operace Sum, které budou předány dva parametry par0 a par1 v tomto pořadí: <wsdl:porttype name='soucet'> <wsdl:operation name='sum' parameterorder='par0 par1'> <wsdl:input name='soucet' message='tns:pozadavek_na_soucet'/>

25 <wsdl:output name='soucet' message='tns:vysledek_souctu'/> </wsdl:operation> </wsdl:porttype> V části označené Binding se stanoví, jakým způsobem bude požadavek transportován. Pro náš účel bude vyhovovat přenos typu RPC Remote Procedure Call, kde vstup a výstup bude zakódován jako XML elementy: <wsdl:binding name='soucetsoap' type='tns:soucet'> <soap:binding transport=' style='rpc'/> <wsdl:operation name='soucet'> <soap:operation soapaction='' style='rpc'/> <wsdl:input name='soucet'> <soap:body use='encoded' encodingstyle=' namespace='urn:x-kosek:services:soucet'/> </wsdl:input> <wsdl:output name='soucet'> <soap:body use='encoded' encodingstyle=' namespace='urn:x-kosek:services:soucet'/> </wsdl:output> </wsdl:operation> </wsdl:binding> Nakonec v části označené Service stanovíme, který výpočetní uzel bude adresován a jaký vazební element bude použit: <wsdl:service name='soucet'> <wsdl:port name='sum' binding='tns:soucetsoap'> <soap:address location=' </wsdl:port> </wsdl:service> Celý dokument ve formátu WSDL pak bude vypadat následovně: <?xml version='1.0'?> <wsdl:definitions name='sum' targetnamespace='urn:x-kosek:services:sum' xmlns:wsdl=' xmlns:xsd=' xmlns:tns='urn:x-kosek:services:sum' xmlns:http=' xmlns:xsi=' xmlns:mime=' xmlns:soap=' xmlns:soap-enc=' <wsdl:message name='vysledek_souctu'> <wsdl:part name='vysledek' type='xsd:int'/> </wsdl:message> <wsdl:message name='pozadavek_na_soucet'> <wsdl:part name='p0' type='xsd:int'/> <wsdl:part name='p1' type='xsd:int'/> </wsdl:message> <wsdl:porttype name='sum'> <wsdl:operation name='sum' parameterorder='p0 p1'> <wsdl:input name='sum' message='tns:pozadavek_na_soucet'/> <wsdl:output name='sum' message='tns:vysledek_souctu'/> </wsdl:operation> </wsdl:porttype> <wsdl:binding name='soucetsoap' type='tns:sum'>

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML. 24. XML Úvod Značkovací jazyk XML (extensible Markup Language) vznikl ze staršího a obecnějšího jazyku SGML (Standard Generalized Markup Language). XML byl vyvinut konsorciem W3C, aby poskytl standardní

Více

Prezentace XML. XML popisuje strukturu dat, neřeší vzhled definice vzhledu:

Prezentace XML. XML popisuje strukturu dat, neřeší vzhled definice vzhledu: Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 Definice vzhledu Prezentace

Více

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9. Jazyk XSL - rychlá transformace dokumentů 9. prosince 2010 Osnova 1 Jazyk XSL Úvod Princip zpracování pomocí stylů Formátování dokumentu pomocí XSL FO Osnova 1 Jazyk XSL Úvod Princip zpracování pomocí

Více

PRG036 Technologie XML

PRG036 Technologie XML PRG036 Technologie XML Přednáší: Irena Mlýnková (mlynkova@ksi.mff.cuni.cz) Martin Nečaský (necasky@ksi.mff.cuni.cz) LS 2010 Stránka přednášky: http://www.ksi.mff.cuni.cz/~mlynkova/prg036/ 1 Osnova předmětu

Více

APLIKACE XML PRO INTERNET

APLIKACE XML PRO INTERNET APLIKACE XML PRO INTERNET Jaroslav Ráček Fakulta Informatiky, Masarykova Universita Brno Abstrakt Text je věnován možnostem využití XML technologie pro prezentaci dokumentů pomocí Internetu. V úvodu je

Více

Dotazování nad XML daty a jazyk XPath

Dotazování nad XML daty a jazyk XPath 4 TVEZEWXYHMNR LSTVSKVEQY-RJSVQEXMOENITSHTSVSZ RETVSNIOXIQRERGSZER Q ^)ZVSTWO LSWSGM PR LSJSRHYEVS^TS XYLPEZR LSQ WXE4VEL] 4VELE)9-RZIWXYNIQIHSZE% FYHSYGRSWXM Dotazování nad XML daty a jazyk XPath BI-TWA

Více

Správnost XML dokumentu

Správnost XML dokumentu Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 Správnost XML dokumentu Správně

Více

Jazyky pro popis dat

Jazyky pro popis dat Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 Jazyky pro popis dat Pavel

Více

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238)

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238) XML teorie a praxe značkovacích jazyků (4IZ238) Jirka Kosek Poslední modifikace: $Date: 2009/10/01 19:46:33 $ Obsah Základy syntaxe... 3 Elementy a atributy... 4 Znakový model XML... 5 Komentáře... 6 Instrukce

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2006/2007 c 2006 2007 Michal Krátký Tvorba informačních systémů 1/37 Obsah 8.

Více

XSLT a jmenné prostory

XSLT a jmenné prostory XSLT a jmenné prostory Doplňková prezentace Roman Malo XSLT a jmenné prostory Při využití XSLT nad XML s jmennými prostory je potřeba jednotlivé názvy uzlů (elementy a atributy) uvádět včetně prefixu Prefix

Více

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek. http://www.kosek

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek. http://www.kosek Podpora XML v.net Podpora XML v.net Jirka Kosek nezávislý publicista http://www.kosek kosek.cz Co nás čeká? Co nás čeká?! podpora XML ve VisualStudio.NET! architektura System.Xml! čtení XML dokumentů!

Více

XML terminologie a charakteristiky. Roman Malo

XML terminologie a charakteristiky. Roman Malo XML terminologie a charakteristiky Roman Malo XML extensible Markup Language (rozšiřitelný značkovací jazyk) Verze 1.0, 1.1 http://www.w3.org/xml Rozdíly v podpoře různých znakových sad a práci s řídícími

Více

Metody integrace aplikací

Metody integrace aplikací Metody integrace aplikací Karel Richta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze richta@fel.cvut.cz, 2011 Softwarové inženýrství I., BI-SI1

Více

Základy XML struktura dokumentu (včetně testových otázek)

Základy XML struktura dokumentu (včetně testových otázek) Základy XML struktura dokumentu (včetně testových otázek) Otakar Čerba Oddělení geomatiky Katedra matematiky Fakulta aplikovaných věd Západočeská univerzita v Plzni Přednáška z předmětu Počítačová kartografie

Více

HTML Hypertext Markup Language

HTML Hypertext Markup Language HTML Hypertext Markup Language je jazyk určený na publikování a distribuci dokumentů na Webu velmi jednoduchý jazyk používá ho mnoho uživatelů má výkonné prostředky (příkazy) k formátování dokumentů (různé

Více

Vývoj Internetových Aplikací

Vývoj Internetových Aplikací 2 Vývoj Internetových Aplikací HTML a CSS Ing. Michal Radecký, Ph.D. www.cs.vsb.cz/radecky HTML a CSS - Tvorba webových stránek - Struktura - Obsah - Vzhled - Funkcionalita zdroj: http://www.99points.info

Více

Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny

Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny 1 TXV 003 63.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá XmlLib_v13 Říjen 2012 2 Druhé vydání,

Více

Úvod do databázových systémů B

Úvod do databázových systémů B Úvod do databázových systémů B RNDr. Jan Lánský, Ph.D. 5. přednáška XML Slajdy 2-45 převzaty z Mlýnková, Nečaský: Technologie XML (DBI026, MFF UK) 1 Motivace Místo A Chceme přenést informaci Místo B 2

Více

XML a DTD. <!DOCTYPE kořenový_element [deklarace definující vlastnosti jednotlivých elementů a atributů]> externí deklarace:

XML a DTD. <!DOCTYPE kořenový_element [deklarace definující vlastnosti jednotlivých elementů a atributů]> externí deklarace: XML a DTD Kapitola seznamuje se specifikací souboru XML pomocí souboru DTD Klíčové pojmy: Definice typu dokumentu. DTD DEFINICE TYPU DOKUMENTU slouží k bližší definici XML dokumentu textový soubor s uvedenými

Více

XML a XSLT. Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML

XML a XSLT. Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML XML a XSLT Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML Zdroje: M. ŽÁK: XML (začínáme programovat), Grada Publishing, 2005 I. MLÝNKOVÁ, M. NEČASKÝ, J. POKORNÝ, K.

Více

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services 13. Webové služby. K čemu slouží? Popis a vyhledávání služeb. Co je a k čemu slouží orchestrace a choreografie služeb. Technologie pro implementaci služeb 1. Webové služby. K čemu slouží? Definice WS -

Více

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci l Kontakt s klientem SSP automatizované komunikace s ÚP ČR v součinnosti a exekuci Obsah: 1. SEZNAM POUŽITÝCH ZKRATEK... 3 2. POPIS SLUŽBY... 4 2.1 Forma a struktura rozhraní... 4 2.2 Dostupnost služby...

Více

XPath je jazyk, který slouží k

XPath je jazyk, který slouží k XPath Co je to? XPath je jazyk, který slouží k vyhledávání/výběru elementů pomocí XSLT identifikaci elementů/částí dokumentu pomocí XPointer transformace elementů (XSLT) aj. Uzly, které se rozlišují: kořenový

Více

Využití XML v DB aplikacích

Využití XML v DB aplikacích Využití XML v DB aplikacích Michal Kopecký Výběr ze slajdů k 7. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK Komunikace aplikace s okolím Databázová aplikace potřebuje často komunikovat s

Více

Rozhraní pro práci s XML dokumenty. Roman Malo

Rozhraní pro práci s XML dokumenty. Roman Malo Rozhraní pro práci s XML dokumenty Roman Malo Práce s XML dokumenty Datově a dokumentově orientované XML dokumenty Problém preference elementů a atributů Strom elementů Strom uzlů Základní zpracování dokumentů

Více

Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny

Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny 1 TXV 003 63.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá XmlLib_v13 OBSAH 1 Úvod...3 2

Více

Příklad buňka tabulky

Příklad buňka tabulky Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 Pojmenované šablony Pojmenované

Více

Michal Krátký, Miroslav Beneš

Michal Krátký, Miroslav Beneš Tvorba informačních systémů 1/20 Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních

Více

Standardy pro Webové služby WSDL, UDDI 1

Standardy pro Webové služby WSDL, UDDI 1 Standardy pro Webové služby WSDL, UDDI 1 Karel Richta Katedra počítačů FEL ČVUT Karlovo nám.13, 121 35 Praha 2 Tel: 2 2435 7319 e-mail: richta@fel.cvut.cz www: http://cs.felk.cvut.cz/~richta Klíčová slova:

Více

Tvorba webu. Úvod a základní principy. Martin Urza

Tvorba webu. Úvod a základní principy. Martin Urza Tvorba webu Úvod a základní principy Martin Urza World Wide Web (WWW) World Wide Web (doslova celosvětová pavučina ) je označení pro mnoho dokumentů rozmístěných na různých serverech po celém světě. Tyto

Více

Distanční opora předmětu: Databázové systémy Tématický blok č. 4: XML, DTD, XML v SQL Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Databázové systémy Tématický blok č. 4: XML, DTD, XML v SQL Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Databázové systémy Tématický blok č. 4: XML, DTD, XML v SQL Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 XML 2 DTD 2.1 Atributy 2.2 Entity 3. XML v SQL Serveru Studijní cíle

Více

Ukládání a vyhledávání XML dat

Ukládání a vyhledávání XML dat XML teorie a praxe značkovacích jazyků (4IZ238) Jirka Kosek Poslední modifikace: $Date: 2014/12/04 19:41:24 $ Obsah Ukládání XML dokumentů... 3 Ukládání XML do souborů... 4 Nativní XML databáze... 5 Ukládání

Více

Další XML technologie

Další XML technologie XML teorie a praxe značkovacích jazyků (4IZ238) Jirka Kosek Poslední modifikace: $Date: 2012/05/17 18:58:55 $ Obsah Odkazy... 3 Odkazy v rámci jednoho dokumentu... 4 XLink (XML Linking Language)... 5 XLink

Více

Obsah přednášky. XML DOM SAX XPath XSL transformace 1/46

Obsah přednášky. XML DOM SAX XPath XSL transformace 1/46 Obsah přednášky XML DOM SAX XPath XSL transformace 1/46 Co je XML? XML je meziplatformní, softwarově a hardwarově nezávislý a standardizovaný nástroj pro přenos informace 2/46 Co je XML? EXtensible Markup

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

Tvorba informačních systémů

Tvorba informačních systémů 9. Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2006-2008 Michal Krátký, Miroslav Beneš Tvorba

Více

Úvod do Web Services

Úvod do Web Services Úvod do Web Services Základy webových služeb a jejich implementace na platformě OS/2 Jarda Kačer jarda@kacer.biz Český Warpstock 2008 Brno, 20.-21.9.2008 Co je to webová služba? Část business logiky přístupná

Více

NSWI096 - INTERNET JavaScript

NSWI096 - INTERNET JavaScript NSWI096 - INTERNET JavaScript Mgr. Petr Lasák JAVASCRIPT JAK SE DNES POUŽÍVÁ Skriptovací (interpretovaný) jazyk Umožňuje interaktivitu Použití: Dialogy Kontrola dat ve formulářích Změny v (X)HTML dokumentu

Více

(X)HTML, CSS a jquery

(X)HTML, CSS a jquery Prezentační vrstva webové aplikace (X)HTML, CSS a jquery jquery Java Scriptová knihovna Ing. Martin Dostal (X)HTML první stránka Textový soubor s příponou.htm nebo.html: moje

Více

Požadavky pro výběrová řízení TerraBus ESB/G2x

Požadavky pro výběrová řízení TerraBus ESB/G2x Dokument: Převod dat TerraBus ESB/G2x Požadavky pro výběrová řízení TerraBus ESB/G2x Obsah 1. Účel dokumentu... 2 2. Použité termíny a zkratky... 2 3. Požadavky... 3 Účel dokumentu Účelem tohoto dokumentu

Více

(X)HTML-TAGY. VOŠ a SŠT Česká Třebová

(X)HTML-TAGY. VOŠ a SŠT Česká Třebová (X)HTML-TAGY Mgr. Petr Slívko VOŠ a SŠT Česká Třebová Tagy Popis Značka tagu začíná levou ostrou závorkou. Za ní následuje jméno tagu, před kterým nesmí být mezera. Mohou následovat atributy. Před

Více

Obsah prezentace. Co je to XML? Vlastnosti. Validita

Obsah prezentace. Co je to XML? Vlastnosti. Validita Obsah prezentace Co je to XML? Vlastnosti Validita Co je to XML? EXtensible Markup Language Účelem je usnadnit sdílení dat napříč informačními systémy Popis dokumentu z hlediska věcného obsahu Vyvinuto

Více

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema:

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema: Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 XQuery XQuery dotazovací

Více

HTML XHTML JavaScript PHP ASP.Net Zajímavé odkazy

HTML XHTML JavaScript PHP ASP.Net Zajímavé odkazy V čem se píší web. dokumenty HTML XHTML JavaScript PHP ASP.Net Zajímavé odkazy HTML HTML (HyperText Markup Language, značkovací jazyk pro hypertext) standart pro vytváření stránek v systému aplikací World

Více

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML Obsah přednášky Webové služby a XML Miroslav Beneš Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C# Webové služby a XML 2 Co jsou to webové služby rozhraní k

Více

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65 7 Stručný obsah Předmluva k druhému vydání 13 Úvod 17 ČÁST 1 Začínáme 27 Kapitola 1 Proč XML 29 Kapitola 2 Vytváření a zobrazení vašeho prvního dokumentu XML 45 ČÁST 2 Vytváření dokumentů XML 65 Kapitola

Více

Uspořádání klient-server. Standardy pro Web

Uspořádání klient-server. Standardy pro Web Návrh a tvorba WWW stránek 1/11 Uspořádání klient-server klient na straně uživatele (browser, prohlížeč) server program obsluhující požadavky uživatele Standardy pro Web HTTP Hypertext Transfer Protocol

Více

Z n a č k o v a c í j a z y k y. XSL (extensible Stylesheet Language) XSLT (extensible Stylesheet Language Transformation) XPath

Z n a č k o v a c í j a z y k y. XSL (extensible Stylesheet Language) XSLT (extensible Stylesheet Language Transformation) XPath Z n a č k o v a c í j a z y k y XSL (extensible Stylesheet Language) XSLT (extensible Stylesheet Language Transformation) XPath X S L Ú č e l Jazyk pro transformaci XML dokumentů do jiných XML dokumentů

Více

XML snadno a rychle Martin Kuba, ÚVT MU

XML snadno a rychle Martin Kuba, ÚVT MU XML snadno a rychle Martin Kuba, ÚVT MU Ve filmu Adéla ještě nevečeřela se americký detektiv naučí plynně česky během cesty vlakem z knihy s názvem Česky snadno a rychle. Bohužel, takto efektivní učebnice

Více

X36DSV 3. cvičení. XML (extensible Markup Language) JavaScript. AJAX (Asynchronous JavaScript and XML) X36DSV. 2007/10 ver.2.0 1

X36DSV 3. cvičení. XML (extensible Markup Language) JavaScript. AJAX (Asynchronous JavaScript and XML) X36DSV. 2007/10 ver.2.0 1 3. cvičení XML (extensible Markup Language) JavaScript AJAX (Asynchronous JavaScript and XML) 2007/10 ver.2.0 1 XML podmnožina SGML (Standard Generalized Markup Language) popis dat (rozdíl oproti HTML)

Více

XSLT extensible Stylesheet Language Transformation

XSLT extensible Stylesheet Language Transformation XSLT extensible Stylesheet Language Transformation Přednáška z předmětu Počítačová kartografie Otakar ČERBA Západočeská univerzita v Plzni 12. 11. 2007 Poslední aktualizace: 1. 12. 2010 XSLT Na pomezí

Více

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka Metody tvorby ontologií a sémantický web Martin Malčík, Rostislav Miarka Obsah Reprezentace znalostí Ontologie a sémantický web Tvorba ontologií Hierarchie znalostí (D.R.Tobin) Data jakékoliv znakové řetězce

Více

PRG036 Technologie XML

PRG036 Technologie XML PRG036 Technologie XML Přednáší: Irena Mlýnková (mlynkova@ksi.mff.cuni.cz) Martin Nečaský (necasky@ksi.mff.cuni.cz) LS 2010 Stránka přednášky: http://www.ksi.mff.cuni.cz/~mlynkova/prg036/ 1 Osnova předmětu

Více

NSWI096 - INTERNET. Úvod do HTML

NSWI096 - INTERNET. Úvod do HTML NSWI096 - INTERNET Úvod do HTML XHTML CO TO JE? XML extensible Markup Language Sada pravidel, jak kódovat dokumenty Podle těchto pravidel lze vytvořit nekonečně mnoho různých jazyků HTML HyperText Markup

Více

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů Tvorba informačních systémů 1/46 Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních systémů 2/46 Obsah

Více

Tvorba WWW stránek. Mojmír Volf mojmir.volf@tul.cz https://www.nti.tul.cz/wiki/wikiuser:mojmir.volf 485 353 675

Tvorba WWW stránek. Mojmír Volf mojmir.volf@tul.cz https://www.nti.tul.cz/wiki/wikiuser:mojmir.volf 485 353 675 Tvorba WWW stránek Mojmír Volf mojmir.volf@tul.cz https://www.nti.tul.cz/wiki/wikiuser:mojmir.volf 485 353 675 Zdroje KRUG: Web design - nenuťte uživatele přemýšlet.. Computer Press, 2003. PROKOP M.: CSS

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2006/2007 c 2006 2008 Michal Krátký Tvorba informačních systémů 1/46 Obsah 8.

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 23. Otázka : Datový model XML, dotazovací jazyky nad XML daty Obsah : 1 Úvod o XML 2 Vztah XML a databáze 2.1 Databázové systémy s podporou XML 2.2

Více

WWW a HTML. Základní pojmy. Ivo Peterka

WWW a HTML. Základní pojmy. Ivo Peterka WWW a HTML Základní pojmy WWW World Wide Web systém navzájem propojených stránek Stránky se mohou skládat z částí nacházejících se v různých částech světa. HTML HyperText Markup Language Slouží k psaní

Více

Základy WWW publikování

Základy WWW publikování Ing. Igor Kopetschke Oddělení aplikované informatiky Ústav nových technologií a aplikované informatiky Fakulta mechatroniky a mezioborových inženýrských studií Technická univerzita v Liberci Email : igor.kopetschke@tul.cz

Více

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat

Více

XSLT pomocí JavaScriptu v Mozille (... Opeře a Safari)

XSLT pomocí JavaScriptu v Mozille (... Opeře a Safari) XSLT a JavaScript Autor: Petr Dvořák (http://joshis.iprofil.cz/) Úvod Dokumenty XML (můžeme rovnou říct, že narozdíl od dokumentů (X)HTML) nenesou žádnou informaci, která by prohlížeči sdělila, jakým způsobem

Více

XQuery. Jirka Kosek. Visual FoxPro DevCon 21. 23. června 2005. Praha. Copyright 2005 Jiří Kosek

XQuery. Jirka Kosek. Visual FoxPro DevCon 21. 23. června 2005. Praha. Copyright 2005 Jiří Kosek XQuery Jirka Kosek Visual FoxPro DevCon 21. 23. června 2005 Praha úvod do XQuery základy XPath 2.0 FLWOR výrazy typový systém implementace XQuery Agenda 2 / 38 Úvod 3 / 38 Proč potřebujeme XQuery? XML

Více

Referenční rozhraní. Jiří Kosek. Ministerstvo informatiky ČR. ISSS 25. března 2003

Referenční rozhraní. Jiří Kosek. Ministerstvo informatiky ČR. ISSS 25. března 2003 Jiří Kosek Ministerstvo informatiky ČR ISSS 25. března 2003 Požadavky na RR!zákon 365/2000 Sb.!RR je souhrnem opatření, která vytvářejí jednotné integrační prostředí informačních systémů veřejné správy!rr

Více

Roční periodická zpráva projektu

Roční periodická zpráva projektu WAK-1F44C-2005-2 WAK System Název projektu: Automatizovaná výměna dat mezi informačními systémy krizového řízení v dopravě s jednotným univerzálním a implementovaným rozhraním založeným na standardu webových

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Programování v jazyce JavaScript

Programování v jazyce JavaScript Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Skriptování dokumentu BI-JSC Evropský sociální

Více

Oracle XML DB. Tomáš Nykodým

Oracle XML DB. Tomáš Nykodým Oracle XML DB Tomáš Nykodým xnykodym@fi.muni.cz Osnova Oracle XML DB Architektura Oracle XML DB Hlavní rysy Oracle XML DB Hlavní rysy Oracle XML DB - pokračování XMLType XML Repository Využívání databázových

Více

Internet 1 vývoj, html, css

Internet 1 vývoj, html, css Internet 1 vývoj, html, css Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar Počítačový kurs Univerzity třetího věku na FJFI ČVUT Znalci 19. března 2009 Dnešní přednáška 1 Historie

Více

XML. Aleš Keprt 29.11.2005

XML. Aleš Keprt 29.11.2005 XML Aleš Keprt 29.11.2005 značkovací jazyk pro obecné použití pro vytváření speciálních značkovacích jazyků Nejčastější použití: výměna dat (při komunikaci) na internetu (společně nebo místo HTML) Je to

Více

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE INTERPI Interoperabilita v paměťových institucích Program aplikovaného výzkumu a vývoje národní kulturní identity (NAKI) (DF11P01OVV023) Zpracovali: Marie

Více

Programování v jazyce JavaScript

Programování v jazyce JavaScript Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe 1. část BI-JSC Evropský sociální fond

Více

Software602 Form Designer

Software602 Form Designer Software602 Form Designer Javascriptový vyhodnocovací mechanismus výrazů Aktualizováno: 17. 3. 2017 Software602 a.s. Hornokrčská 15 140 00 Praha 4 tel: 222 011 602 web: www.602.cz e-mail: info@602.cz ID

Více

Validace souborů DS3

Validace souborů DS3 Validace souborů DS3 Verze: 1.33 1. Rozsah...1 1.1 Identifikace systému...1 1.2 Přehled systému...1 2. Přehled verzí a změny v nich...1 3. Použité dokumenty...2 4. Shrnutí údajů o programovém vybavení...4

Více

Pokročilé Webové služby a Caché security. Š. Havlíček

Pokročilé Webové služby a Caché security. Š. Havlíček Pokročilé Webové služby a Caché security Š. Havlíček Webové služby co se tím míní? Webová služba metoda komunikace mezi dvěma elektronickými zařízeními přes internet Typicky jsou pomocí rozhraní přístupné

Více

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty Pokročilé techniky tvorby sestav v Caché ZENové Reporty Úvodem Jednoduché sestavy Pokročilé sestavy Ladění Historie ZEN reporty sdílejí podobný princip definování obsahu jako ZENové stránky Byly uvedeny

Více

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů. Modely datové Existují různé úrovně pohledu na data. Nejvyšší úroveň je úroveň, která zachycuje pouze vztahy a struktury dat samotných. Konceptuální model - E-R model. Další úrovní je logická úroveň Databázové

Více

Práce se soubory opakování

Práce se soubory opakování Práce se soubory Práce se soubory opakování Nízko-úrovňové (C-čkové) API. fopen(), fread(), fwrite(), fclose() S daty se manipuluje přes řetězce. Manipulace s celým souborem najednou. fpassthru(), readfile()

Více

Tvorba webových stránek

Tvorba webových stránek Tvorba webových stránek Kaskádové styly Úprava vzhledu webové stránky pomocí atributů má několik nevýhod a úskalí. Atributy nabízejí málo možností úprav. Obtížně se sjednocují změny na různých částech

Více

Unifikovaný modelovací jazyk UML

Unifikovaný modelovací jazyk UML Unifikovaný modelovací jazyk UML Karel Richta katedra počíta tačů FEL ČVUT Praha richta@fel fel.cvut.czcz Motto: Komunikačním m prostředkem informační komunity se postupem času stala angličtina. Chcete-li

Více

1 Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13 Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

Analýza dat a modelování. Speciální struktury

Analýza dat a modelování. Speciální struktury Analýza dat a modelování Speciální struktury XML extensible Markup Language jazyk pro popis struktury dat (zejména se používá pro dokumenty) výrazná podobnost s HTML proč? protože má stejný původ v jazyce

Více

Softwarové komponenty a Internet

Softwarové komponenty a Internet Softwarové komponenty a Internet Doc. Dr. Ing. Miroslav Beneš Katedra informatiky FEI VŠB-TU Ostrava Miroslav.Benes@vsb.cz Obsah přednášky Motivace Vývoj přístupů k tvorbě programů Definice komponenty

Více

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT Dnešní téma Oblasti standardizace v ICT Případové studie standardizace v ICT: 1) Znakové sady 2) Jazyk 1. technická infrastruktura transfer a komunikace informací, přístup k informacím, sdílení zdrojů

Více

Dotazování nad stromem abstraktní syntaxe

Dotazování nad stromem abstraktní syntaxe Fakulta jaderná a fyzikáln inºenýrská ƒeské vysoké u ení technické v Praze 3.6.2010 Osnova while 1 Reprezentace programu 2 AST a Java 3 Vyhledávání v AST 4 Aplikace body if expr Jak reprezentovat program

Více

Základní zadání IS o ISVS. Sluţba poskytování dat IS o ISVS

Základní zadání IS o ISVS. Sluţba poskytování dat IS o ISVS Základní zadání IS o ISVS Sluţba poskytování dat IS o ISVS podle pokynů objednatele vypracovala společnost ASD Software, s.r.o. dokument ze dne 5.12.2012, verze 1.00 Sluţba poskytování dat IS o ISVS Počet

Více

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím ICT Číslo projektu: CZ.1.07/1.5.00/34.0940

Více

PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S.

PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S. PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S. 1 ÚVOD... 5 2 POPIS VÝMĚNY DAT... 6 2.1 KOMUNIKAČNÍ SCÉNÁŘE... 6 2.2 TECHNOLOGIE KOMUNIKACE...

Více

Lokální definice (1) plocha-kruhu

Lokální definice (1) plocha-kruhu Lokální definice (1) syntaxe: (local (seznam definic) výraz) definice jsou dostupné pouze uvnitř příkazu local příklad: (local ( (define Pi 3.1415926) (define (plocha-kruhu r) (* Pi r r)) ) (plocha-kruhu

Více

Kolaborativní aplikace

Kolaborativní aplikace Kolaborativní aplikace Michal Máčel Vema, a. s. Okružní 3a, 638 00 Brno - Lesná, macel@vema.cz Tomáš Hruška Fakulta informačních technologií Vysokého učení technického v Brně, Ústav informačních systémů,

Více

HTML - Úvod. Zpracoval: Petr Lasák

HTML - Úvod. Zpracoval: Petr Lasák HTML - Úvod Zpracoval: Petr Lasák Je značkovací jazyk, popisující obsah HTML stránek Je z rodiny SGML jazyků, jako např. XML, DOCX, XLSX Nejedná se o programovací ale značkovací jazyk Dynamičnost dodávají

Více

Úvod do aplikací internetu a přehled možností při tvorbě webu

Úvod do aplikací internetu a přehled možností při tvorbě webu CVT6 01a Úvod do aplikací internetu a přehled možností při tvorbě webu Internet a www Internet? Služby www ftp e-mail telnet NetNews konference IM komunikace Chaty Remote Access P2P aplikace Online games

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní

Více

Úvod do tvorby internetových aplikací

Úvod do tvorby internetových aplikací CVT6 01a Úvod do tvorby internetových aplikací Osnova předmětu (X)HTML a tvorba webu pomocí přímého zápisu kódu Tvorba web designu a skládání stránek z kousků Skriptovací jazyky na webu Návrh software

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více