David Pejčoch
XML (Extensible Markup Language) Semistrukturovaná data Obecný značkovací jazyk Vyvinut a standardizován konzorciem W3C Zjednodušená podoba staršího jazyka SGML (Standard Generalized Markup Language) = prostředek pro definování univerzálního formátu výměny informací Umožňuje snadné vytváření konkrétních značkovacích jazyků pro různé účely a různé typy dat Formát pro výměnu dat mezi aplikacemi Odděluje data od způsobu jejich prezentace Snadno čitelný a editovatelný
Příklady aplikace XML (1) XHTML – XML alternativa jazyka HTML. RDF – Resource Description Framework umožňuje popsat metadata a zaznamenat ontologie, např. popsat obsah HTML stránky. RSS – Rodina XML formátů, sloužící pro čtení novinek na webových stránkách. SMIL – Synchronized Multimedia Integration Language, popisuje multimedia pomocí XML.
Příklady aplikace XML (2) SVG – Scalable Vector Graphics je jazyk pro popis dvourozměrné vektorové grafiky, statické i dynamické (animace). MathML – Mathematical Markup Language je značkovací jazyk pro popis matematických vzorců a symbolů pro použití na webu. DocBook – Sada definic dokumentů a stylů pro publikační činnost.
Příklady aplikace XML (3) Jabber – Protokol pro Instant messaging. SOAP – Protokol pro komunikaci mezi Webovými službami. Office Open XML, OpenDocument – Souborový formát určený pro ukládání a výměnu dokumentů vytvořených kancelářskými aplikacemi.
Příklad RDF Bob Dylan USA Columbia Zdroj:
Uzel - základní prvek XML
Struktura XML dokumentu káva NicaMex -… Tato směs velmi kvalitních odrůd kávy … ….jpg … Instrukce pro zpracování; deklarace souboru Komentář Otevírací tag elementu Ukončovací tag elementu
Struktura XML dokumentu káva NicaMex -… Tato směs velmi kvalitních odrůd kávy … ….jpg … Atributový uzel Text
Zásada tvorby XML dokumentu Do atributů by se měly ukládat "atomické" hodnoty, které mají roli metadat Rezervované znaky, především <>&, převádíme na entity, nebo text vložíme do CDATA sekce (Pozn.: CDATA se použije typicky pokud je součástí XML dokumentu nějaký zdrojový kód) Volíme co nejjemnější členění, každá informace do samostatného elementu
Co je ještě nutné vědět o XML? Definice datových schémat pro XML dokumenty => definice vlastních elementů (ne jako v HTML) DTD (Document Type Definition) – značně omezené možnosti => ustupuje XSD (XML Schema Definition Language) Způsob transformace z jednoho schématu do druhého: XSL (Extensible Stylesheet Language) XSLT (Extensible Stylesheet Language Transformation) XSL-FO (XSL Formating Object) Soubor může obsahovat právě jeden strom => elementy jsou v pozici rodič, potomek, sourozenci
Stromová reprezentace XML Zdroj:
Co všechno definuje XML schéma? povolené elementy, atributy, přípustné kombinace elementů a atributů, vlastní datové typy odvozené od existujících typů, definuje otázku násobnosti potomků Jmenný prostor (namespace) (atribut xmlns: v úvodním tagu rodičovského elementu) Validace: Proces kontroly, zda XML dokument odpovídá schématu
Způsob zpracování XML dokumentu XML dokument Parser Aplikace pracující s XML dok. Načtení Formální kontrola Dekompozice Příprava na zpracování Načtení Formální kontrola Dekompozice Příprava na zpracování
Datové typy ve schéma Jednoduché – pro skalární hodnoty Komplexní – pokud element obsahuje další elementy nebo atributy Cca 43 zabudovaných datových typů (STRING, BOOLEAN, DECIMAL, FLOAT,...), další lze vytvářet: restrikcí stávajících - integritní omezení => zúžení oboru přípustných hodnot (omezení délky, využití masky s pomocí regulárních výrazů) rozšíření vytvoření seznamu sjednocení typů
Příklady restrikcí - regex
Část 2: Zpracování přirozeného textu pomocí regulárních výrazů a jejich rozšíření
Stručný úvod do světa regulárních výrazů Speciální textové řetězce popisující masku, které má odpovídat verifikovaný řetězec Používají se v mnoha programovacích jazycích (Perl, Java, C#, JavaScript, PHP,...) Obecně jsou POSIX a Perl-compatible Na co je použiji? Extrakce údajů z textu Modifikace údajů Vkládání a nahrazování
Syntaxe regulárních výrazů (výběr nejpoužívanějších konstruktů).Libovolný znak [xyz]Některý z množiny znaků obsahující x,y,z [0-9]Některý z intervalu 0 až 9 [^xyz]Žádný z množiny znaků obsahující x,y,z *Opakování znaku, např. [0-9]* je libovolně dlouhá posloupnost čísel +Alespoň jeden výskyt předchůdce ?Nejvýše jeden výskyt předchůdce ^Začátek řádku $Konec řádku \<Začátek slova \>Konec slova Kompletní výpis:
Regex Coach
Některé nástroje pracující s regexp