1 5. přednáška XML Slajdy převzaty z Mlýnková, Nečaský : Technologie XML (DBI026, MFF UK) Úvod do databázových systémů B RNDr. Jan Lánský, Ph.D.
2 Motivace Chceme přenést informaci Místo A Místo B
3 Např.: chceme přenést zprávu Jan Amos, Karel Hynek Ahoj! Pozdrav z říše divů! Alenka P.S. Napište mi!
4 Jako „nestrukturovaný“ text? Jan Amos, Karel Hynek Ahoj! Pozdrav z říše divů
5 Jako „nestrukturovaný“ text? Karel Hynek Ahoj! Pozdrav z říše divů! Alenka P
6 Jako „nestrukturovaný“ text? Ahoj! Pozdrav z říše divů! Alenka P.S. Napište
7 Jako „nestrukturovaný“ text? Pozdrav z říše divů! Alenka P.S. Napište mi!
8 Jako „nestrukturovaný“ text? Alenka P.S. Napište mi!
9 Jako „nestrukturovaný“ text? Alenka P.S. Napište mi! Jak ale (automatizovaně) zjistit, kdo nám to vlastně píše?
10 Zavedeme konstrukci „ značka” (tag) tělo Koncová značka – zavírací závorka (end tag) Počáteční značka – otevírací závorka (start tag)
11 Jednotlivé složky zprávy označíme Jan Amos Karel Hynek Ahoj! Pozdrav z říše divů! Alenka Napište mi!
12 A zabalíme do závorek Jan Amos Karel Hynek Ahoj! Pozdrav z říše divů! Alenka Napište mi!
13 Pro zobrazení správného textu prohlížečem to ještě nestačí Jan Amos Karel Hynek Ahoj! Pozdrav z říše divů! Alenka Napište mi!
14 Musí se přidat informace o kódování Implicitně je dokument v kódu ISO (Unicode)Unicode P ro komunikaci se světem se používá UTF-8 K ompatibilní s ASCII D alší znaky kódovány na 2 až 6-ti bytech O bsahuje všechny znaky všech abeced P ro češtinu lze použít ISO nebo Windows- 1250
15 Lepší, ale stále to ještě není ono – nepopsali jsme způsob zobrazení dokumentu
16 Např. transformujeme do HTML Zpráva od: Alenka Jan Amos Karel Hynek Ahoj! Pozdrav z říše divů! Alenka Napište mi!
17 Prohlížeč teď „ví“ co s daty
18 O co nám jde? Samotná data se těžko zpracovávají Potřebujeme: Zajistit aby příslušný program datům rozuměl = doplnit význam jednotlivých částí Př. HTML – popis vizualizace dat pro HTML prohlížeč Problém 1: Co když nás nezajímá jen vizualizace? Problém 2: HTML má volnou strukturu Komplikuje zpracování Řešení: XML
19 XML XML (eXtensible Markup Language) je formát pro přenos a výměnu obecných dokumentů Extensible Markup Language (XML) 1.0 (Fifth Edition) XML je podmnožina (aplikace) SGML (Standard Generalized Markup Language - ISO 8879) U možňuj e přenos dokumentu spolu s popisem jeho struktury (syntaxe) XML se nezabývá způsobem prezentace dokumentů – je to syntaktický nástroj
20 XML dokument XML dokument je správně formovaný / dobře vytvořený (well-formed), když : Má úvodní XML deklaraci (prolog) J e dobře uzávorkován Každý element obsahuje počáteční i koncový tag/závorku Odpovídající závorky mají stejné jméno (case sensitivity) Dvojice závorek se nekříží Celý dokument je uzavřen v jediném kořenovém elementu
21 Prolog Informace pro SW, že se jedná o XML dokument Musí obsahovat deklaraci verze XML Máme 1.0 a 1.1 Může osahovat informací o kódování a samostatnosti dokumentu Deklarace verze: Pokud není v UTF-8: Pokud je bez odkazů mimo dokument : vždy malá písmena
22 Elementy Jan Amos Severní 12 Ahoj! Pozdrav z říše divů ! Alenka Element s textovým obsahem Prázdný element Element s elementovým obsahem Kořenový element Element se smíšeným obsahem
23 Atributy Jan Amos Severní 12 Ahoj! Pozdrav z říše divů ! Alenka Hodnota atributu Název atributu Element s atributy
24 Další prvky XML dokumentu Jan Amos <![CDATA[ for (i=0; i < 10; $++) { document.writeln(" Ahoj "); } ]]> Alenka Komentář Instrukce pro zpracování Sekce CDATA
25 Jazyk DTD
26 DTD Problém: Správná strukturovanost nestačí Potřebujeme omezit sadu značek a jejich obsah Definice typu dokumentu (Document Type Definition – DTD) popisuje strukturu (gramatiku) dokumentu Pomocí regulárních výrazů Validní XML dokument = správně strukturovaný dokument odpovídající dané gramatice Existují i další jazyky – XML Schema, Schematron, RELAX NG, …
27 Struktura validního dokumentu <!DOCTYPE kořenový-element [... ]>... Deklarace typu dokumentu Může být interní (gramatika je přímo uvnitř DOCTYPE) nebo externí (pouze odkaz na gramatiku uvedenou v externím souboru) Interní nemá moc význam Obojí současně je přípustné Lokální deklarace mají přednost před externími
28 Příklad: externí a interní DTD Hello, world! <!DOCTYPE pozdrav [ ]> Hello, world! … PUBLIC "veřejný identifikátor" "URI"
29 Základní značky DTD D eklarace typu dokumentu D eklarace typu elementu D eklarace seznamu atributů D eklarace entity D eklarace notace vše velkými písmeny
30 Deklarace typu elementu Název elementu + deklarace přípustného obsahu Prázdný, libovolný, textový, smíšený, elementový...
31 Deklarace typu elementu Prázdný obsah Libovolný obsah Textový obsah Smíšený obsah Elementový obsah,… sekvence |… selekce ?… iterace (0 nebo 1) + … iterace (1 a více) *… iterace (0 a více) (nazev, (autor|editor)?, p*, (nadpis,p+)*)
32 Deklarace atributu A tributy elementu osoba A tribut cislo je unikátní identifikace ( ID ) a je povinný ( #REQUIRED ) A tribut zamestnan obsahuje text ( CDATA ), je konstantní ( #FIXED ) a má implicitní neměnnou hodnotu ( ano ) A tribut typ je výčet ( ano nebo ne ), implicitní hodnota je ne <!ATTLIST osoba cislo ID #REQUIRED zamestnan CDATA #FIXED "ano" dovolena (ano|ne) "ne"> Pořadí v dokumentu je libovolné
33 Datové typy atributů CDATA – libovolný řetězec znaků V ýčtový typ ID – jednoznačný identifikátor (v rámci dokumentu), musí to být řetězec písmen, cifer a znaků „-“, „_“, „:“, „.“, nejlépe v ASCII, musí začínat písmenem, nebo znakem „_“ IDREF – odkaz na ID jiného elementu v rámci dokumentu IDREFS – seznam odkazů oddělených mezerami NMTOKEN – hodnota, tj. řetězec podobný jako ID, který ale může začínat cifrou a není jednoznačný NMTOKENS – hodnoty ENTITY – odkaz na externí entit u ENTIT IES – seznam odkazů viz dále
34 Požadavky na hodnoty atributů #REQUIRED – povinný atribut #IMPLIED – nepovinný atribut #FIXED – pevná hodnota atributu
35 Deklarace entity Prakticky se využívají pouze triviální případy Asociace názvu a hodnoty, kterou lze opakovaně využívat Dělení 1: Parsované = text, kterým je nahrazen odkaz na entitu a stává se součástí XML dokumentu Odkazujeme referencemi Neparsované = zdroj, jehož obsahem může být cokoli (např. binární data) Odkazujeme atributem typu ENTITY/ENTITIES Musí s ní asociována notace Dělení 2: Obecné – v XML dokumentech Parametrické – v DTD Dělení 3: Interní vs. externí viz dále
36 Možnost vložení libovolného znaku s daným kódem Hexadecimální nebo decimální Předdefinované entity pro speciální znaky Znakové entity &… amp < … lt >… gt ‘… apos “… quot Vyřešte nerovnost 3x < 5 Vyřešte nerovnost 3x < 5
37 Interní entita Použití: Opakující se části XML dokumentů Obecné entity Současný stav dokumentu je &stav; Externí parsovaná entita Použití: Modularizace XML dokumentů
38 Externí neparsovaná entita Použití: Odkaz na ne-XML data Obecné entity <!DOCTYPE zprava [ <!NOTATION avi SYSTEM "C:/Program Files/Video Player/Player.exe"> ]> Přikládám video z dovolené. Deklarace notace nebo PUBLIC
39 Parametrické entity Interní entita P oužití: Opakující se části DTD <!ENTITY % atributy "barva (modra|bila|cerna) #REQUIRED rychlost (velka|mala) #IMPLIED" >
40 Parametrické entity Externí entita Použití: Modularizace DTD... %ISOLat2;...
41 Podmíněné sekce <![%draft;[ ]]> <![%final;[ ]]>
42 DTD – větší příklad
43 Přehled XML technologií
44 Technologie XML XML = eXtensible Markup Language Technologie XML = sada souvisejících technologií Rozhraní pro práci s XML daty – DOM, SAX Popis struktury XML dokumentů – DTD, XML Schema Dotazováni nad XML daty – XPath, XQuery Aktualizace XML dat – XQuery Update Transformace XML dat – XSLT
45 Související problematika Standardní XML formáty XHTML, OpenOffice, MathML, SVG, … Persistence XML dat Nativní XML databáze Relační databáze s XML SQL/XML
46 Příklady I. V souboru xml1.xml najděte následující informace V jakém aktu a v jaké scéně poprvé mluví postava FORTINBRAS ? Který z důstojníků (officers) mluví ve hře jako první? Která postava mluví jako poslední ve druhém aktu ?
47 Příklady II. V souboru xml2.xml najděte následující informace Kolik druhů zboží se nachází v kategorii "Zboží | Panenky | Barbie" ? Kolik stojí výrobek "Klasická elektronická pokladna", kdo je jeho výrobce a jaká je webová stránka výrobku. Od kterého výrobce(ů) pochází zboží v kategorii "Zboží | Stavebnice | Ostatní"?