ROZŠIŘITELNÝ ZNAČKOVACÍ JAZYK XML
Jaroslav Šmarda
titl CZ
Rozšiřitelný značkovací jazyk XML
Jaroslav Šmarda
zahlavi CZ
Rozšiřitelný značkovací jazyk XML
* XML jako standardní textový formát pro výměnu informací
zahlavi CZ
Značkovací jazyky
* Standard Generalized Markup Language (SGML)
* HTML (HyperText Markup Language) – jazyk webových stránek
* XML (eXtensible Markup Language) – rozšiřitelný značkovací jazyk
* Skupina jazyků pro komunikaci mezi aplikacemi čitelná pro člověka
zahlavi CZ
XML jako standardní textový formát pro výměnu informací
* XML (eXtensible Markup Language):
* výměna a sdílení informací
* pro dokumenty obsahující strukturované nebo semistrukturované informace
* internetové aplikace (XSL definice vzhledu XML dokumentu)
* databázové technologie
* standardizace datových struktur
* XML je metajazyk, tedy souhrn pravidel pro tvorbu jednotlivých XML jazyků
zahlavi CZ
1. příklad souboru v XML formátu
RobertA+LenardA-
zahlavi CZ
2. příklad souboru ve formátu XML
VIDEO: Tři muži přepadli na pumpě cizince
http://www.denik.cz/z_domova/video-tri-muzi-prepadli-na-pumpe-
cizince20110212.html
Karlovarsko /FOTOGALERIE/ - K loupežnému přepadení dvou cizinců
ve věku dvacet a dvaadvacet let došlo v pátek ve večerních
hodinách.
Sat, 12 Feb 2011 17:40:00 GMTZ domova
zahlavi CZ
XML
* Značky (tags):
* počáteční:
* koncové:
* počáteční i koncová:
* Data
* VIDEO: Tři muži přepadli na pumpě cizince
*
zahlavi CZ
Je XML značkovací jazyk ?
* Jazyk má:
* slovník symbolů
* gramatiku
*
* XML není značkovací jazyk (markup language)
* XML definuje syntaxi pro celou třídu jazyků
zahlavi CZ
Správně strukturovaný XML dokument
zahlavi CZ
Platnost XML dokumentu
* Jaké značky v jakém pořadí (struktuře)
* 2 možnosti ověření platnosti:
* DTD – Document Type Definition
* Pravidla definující elementy a další značkovací objekty a jejich pořadí
* Nedefinuje datový obsah
* Značkovací objekt, který není v definici, je chybný
* Schémata
* Volnější definice, např. definuje, že dokument může obsahovat element datum a data jsou typu
YYYY-MM-DD
*
zahlavi CZ
XML editory
* NotePad
* Internet Explorer
* Speciální editory:
* Morphon XMLEditor (www.morphon.com)
* Epic
* XMLFox
zahlavi CZ
Značkovací objekty …
Značkovací objekt
Účel
Příklad
prázdný element
Reprezentuje informaci v určitém místě dokumentu
element-kontejner
Spojuje elementy a znakové údaje
This is a paragraph.
deklarace
Přidává nový parametr, entitu nebo gramatickou definici
Instrukce pro zpracování
Poskytuje speciální instrukce softwaru
zahlavi CZ
… Značkovací objekty
Značkovací objekt
Účel
Příklad
Poznámka
Vložení poznámky, XML procesor ji ignoruje
Sekce CDATA
Sekce textových údajů, která nebude zpracovávána procesorem XML – může obsahovat speciální znaky,
které mají význam v syntaxi XML
Odkaz na entitu
Příkaz pro procesor XML, aby vložil text uložený jinde
&company-name;
zahlavi CZ
Struktura XML dokumentu
* Logická entita spíše než fyzická
* v jednom souboru může být více XML dokumentů
Prolog dokumentu
Kořenový element dokumentu
Například:
zahlavi CZ
Prolog XML dokumentu
XML
Popis
Deklarace XML verze
">
]>
Deklarace typu dokumentu
Jméno kořenového elementu
DTD identifikátor
Oddělovač podmnožiny
Deklarace entit
zahlavi CZ
Elementy XML
* Element-kontejner
*
*
* Prázdný element
*
* Atribut elementu
*
… obsah…
jméno = “hodnota“
zahlavi CZ
Elementy XML
* Jméno elementu (stejně jako jméno atributu) = XML jméno
* XML jméno může obsahovat:
* a-z, A-Z, a 0-9, znaky nelatinských abeced,
* pomlčku (-), podtržítko (_), tečku (.) a dvojtečku pro zvláštní účel (:)
* v XML jménech se rozlišují malá a velká písmena
* XML jména začínají písmeny nebo podtržítkem
zahlavi CZ
Správně strukturovaný XML?
•Clean fish tank
•1420 Sesame Street
•Huh?
•<2nd-phone-number>785-555-10012nd-phone-number>
•Where my doggies at?
zahlavi CZ
Element-kontejner
* Základním prvkem XML dokumentu je element:
* počáteční značka
* obsah
* ukončovací značka
– obsah_elementu
zahlavi CZ
Prázdný element
* Prázdný element:
–
–nebo zkráceně
zahlavi CZ
Hierarchie XML elementů
* Elementy lze vnořovat do jiných elementů, ale ne takto:
–Don't do this!
* Ale toto je v pořádku:
–No problemhere
*
* Jméno značky na začátku a na konci musí být stejné:
–I like to ride my motorcycle really fast.
–
zahlavi CZ
Hierarchie XML elementů
* Vkládáním vnořených elementů do obsahu kořenového elementu
• obsah_elementuA
• obsah_elementuAA
•
•
zahlavi CZ
Entity v XML
•
•
•
• 617-555-1299">
•]>
•
• Dear &client;
• We have an exciting opportunity for you! A set of ocean-front cliff dwellings in Mexico,
have been renovated as time-share vacation homes. They're going fast! To reserve a place for your
holiday, call &agent; at ☎. Hurry, &client;. Time is running out!
•
zahlavi CZ
Entity v XML
* Definice entit:
•
•
• 617-555-1299">
* Použití entit:
• call &agent; at ☎. Hurry, &client;. Time is
* Textová náhrada &agent za Ms. Sally Tashuns
zahlavi CZ
XML schéma
* Schéma:
* Generická reprezentace třídy objektů
* Předpis, jak mají vypadat objekty stejné třídy
* XML schéma
* Test, zda dokument XML odpovídá předpisu
* XML schémata
* DTD (Document Type Definition)
* XSD (XML Schema Definition)
*
zahlavi CZ
DTD – příklad XML souboru
•
•
•
• Tomáš
•
• Nesmrtelná
• 99
• Brno
•
•
zahlavi CZ
Příklad.dtd
•
•
•
•
•
•
•
zahlavi CZ
DTD syntaxe
* #PCDATA
* Znaková data, ale ne elementy
* ( e1, e2, e3)
* Posloupnost elementů
* (e1| e2)
* e1 nebo e2
* (…)*
* 0 až N opakování
* (…)+
* 1 až N opakování
* (…)?
* 0 až 1 krát
*
*
*
zahlavi CZ
DTD
* DTD deklaruje:
* Slovník (elementy, které se mohou v XML dokumentu vyskytovat)
* obsahový (content) model – jaké elementy může element-kontejner obsahovat
* množinu atributů elementu
zahlavi CZ
Obsah jako element nebo atribut?
* Textový obsah v XML může být umístěn uvnitř elementu-kontejneru nebo jako atribut, o umístění
rozhoduje autor
* Element-kontejner
* Komplexnější text, který může být v budoucnosti dále strukturován
* Nezáleží na přesném počtu mezer mezi slovy
* Atribut
* Textová položka, která nebude dále strukturována (např. Číslo zaměstnance)
* Potřebujeme přenést přesný obsah včetně mezer
zahlavi CZ
XSD – příklad XML souboru
•
•
• Mr. Walter C. Brown
• 49
• Featherstone Street
• LONDON
• EC1Y 8SY
• UK
•
zahlavi CZ
XSD – SimpleAddress.xsd 1. část
•
•
•
•
•
•
•
•
•
•
•
zahlavi CZ
XSD – SimpleAddress.xsd 2.část
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
zahlavi CZ
XSD – element-kontejner…
•
•
•
•
•
•
•
•
•
•
•
*
*
zahlavi CZ
… XSD – element-kontejner
•
•
•
•
•
*
*
zahlavi CZ
XSD – element-kontejner
•
•
•
•
•
•
•
•
•
•
•
*
*
zahlavi CZ
XSD - atribut
•
•
•
•
•
•
•
•
*
*
zahlavi CZ
XSD – opakování elementů
•
•
•
•
•
•
•
•
•
•
*
*
zahlavi CZ
XSD – povinný výskyt elementu
•
•
•
•
•
•
•
•
•
•
•
•
*
*
zahlavi CZ
Definice typů v XSD
Typ
Použití
xs:string
textová hodnota
xs:token
slova oddělená mezerami
xs:decimal
čísla např. 1.356 ; -20
xs:integer
celá čísla 871; -13; +72
xs:float
32 bitové číslo s pohyblivou desetinnou tečkou
Např. 123.456; +1234.456; -1.2344e56 ; -.45E-6; INF; –INF; NaN
xs:boolean
true;false; 0; 1
xs:time
čas HH:MM:SS-Timezone jako např. 21:55:00-06:00
xs:date
datum CCYY-MM-DD jako 2011-03-25
xs:dateTime
datum a čas CCYY-MM-DDTHH:MM:SS-Timezone jako 2011-03-25T21:55:00-06:00