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



Podobné dokumenty
Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek.

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

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.

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

XML. Aleš Keprt

APLIKACE XML PRO INTERNET

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

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

XSLT a jmenné prostory

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

Obsah prezentace. Co je to XML? Vlastnosti. Validita

Tvorba informačních systémů

API pro práci s XML. Jirka Kosek. Poslední modifikace: $Date: 2014/12/17 17:15:28 $ Copyright Jiří Kosek

Příklad buňka tabulky

Dotazování nad XML daty a jazyk XPath

Java a XML. 10/26/09 1/7 Java a XML

NSWI096 - INTERNET JavaScript

XML terminologie a charakteristiky. Roman Malo

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

Práce se soubory opakování

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

XPath je jazyk, který slouží k

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

(X)HTML, CSS a jquery

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

PRG036 Technologie XML

Tvorba informačních systémů

Programování v jazyku C# II. 5.kapitola

Oracle XML DB. Tomáš Nykodým

HTML Hypertext Markup Language

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

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

XML snadno a rychle Martin Kuba, ÚVT MU

Pravidla dokumentace

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

XSLT extensible Stylesheet Language Transformation

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

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

HTML - Úvod. Zpracoval: Petr Lasák

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

Tvorba webových stránek

Vývoj Internetových Aplikací

TRANSFORMACE XML DOKUMENTŮ POMOCÍ JAZYKA XSLT

KAPITOLA 6. XML, XPath a XSLT. Podpora XML v prohlížečích. XML DOM v IE

Programování v jazyce JavaScript

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

X L M L v v Of O f f i f ce XML OBECNĚ VBA pro Excel Petr Blaha XML v MS Office Michal Theodor

XSL. Jirka Kosek. Poslední modifikace: $Date: 2005/12/01 09:35:37 $ Copyright Jiří Kosek. XML teorie a praxe značkovacích jazyků (IZI238)

Správnost XML dokumentu

Jemný úvod do spracovania XML

MBI - technologická realizace modelu

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

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

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

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.

Mgr. Vlastislav Kučera přednáška č. 1

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

Python XML a Web 1 PGS

CSS Stylování stránek. Zpracoval: Petr Lasák

Alena Malovaná, MAL305

Úvod do jazyka HTML (Hypertext Markup Language)

Popis XML rozhraní Veřejného webu RŽP

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:

13. Vytváření webových stránek

Mgr. Stěpan Stěpanov, 2013

Značkovací jazyky a spol. HTML/XHTML XML JSON YAML Markdown, Texy!

Jazyky pro popis dat

Úvod do XSLT 2.0. Jirka Kosek Copyright Jiří Kosek

XFORMS JAKO NÁHRADA WEBOVÝCH FORMULÁŘŮ XFORMS - WEB FORMS SUCCESSOR

Základy informatiky. 03 HTML, tvorba webových stránek. Kačmařík/Szturcová/Děrgel/Rapant

SCHÉMOVÉ JAZYKY. Přednáška z předmětu KMA/POK. Otakar ČERBA Západočeská univerzita v Plzni

Systém elektronického rádce v životních situacích portálu

Vysoká škola ekonomická v Praze

Základy HTML. Autor: Palito

Čtvrtek 11. dubna. Základy HTML. Obecná syntaxe HTML. Struktura HTML

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky DIPLOMOVÁ PRÁCE

NSWI096 - INTERNET. CSS kaskádové styly. Mgr. Petr Lasák

12. Základy HTML a formuláře v HTML

podnikatele ve formě PDF dokumentu nebo budou jednotlivé datové položky rozvedeny v XML subelementech.

Kaskádové styly základy grafiky

Využití XML v DB aplikacích

Vývoj Internetových Aplikací

Popis XML rozhraní Veřejného webu RŽP

NSWI096 - INTERNET. Úvod do HTML

Lehký úvod do XML. Vysoká škola ekonomická v Praze. <jirka@kosek.cz> Web:

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

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

Parsování HTML. Pro účely testování jsem vytvořil stránku parsovani.html. Zdrojový kód:

Teoretické a pokročilé aspekty XML technologií

Š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

14. Jazyk HTML (vývoj, principy, funkce, kostra stránky). Jazyk XML, XHTML. Algoritmizace - cyklus for, while a do while, implementace v jazyce

Ukazka knihy z internetoveho knihkupectvi

Základy informatiky. HTML, tvorba WWW stránek. Daniela Szturcová Část převzata z přednášky P. Děrgela

geotym.geogr.muni.cz K čemu jsou datové specifikace Možnosti elektronického vzdělávání v oblasti směrnice INSPIRE II. Co Vás čeká dnes?

Základy informatiky. 03, HTML, tvorba WWW stránek. Daniela Szturcová Část převzata z přednášky P. Děrgela

Inovace výuky prostřednictvím šablon pro SŠ

Interaktivní typová kontrola XML a ladění XML transformací

Základy WWW publikování

Sada 1 - PHP. 03. Proměnné, konstanty

Transkript:

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 Language Rozšiřitelný značkovací jazyk Značkovací jazyk podobně jako HTML Popisuje obsah nikoliv formu Tagy nejsou součástí jazyka Kromě samotných dat obsahuje i popis organizace dat Standardizovaný formát (W3C) 3/46

XML nedělá nic Jazyk XML nebyl navržen k tomu, aby něco dělal... Strukturování dat Ukládání dat Posílání dat Příklad <zpráva> <od>eva</od> <pro>adam</pro> <text>sejdeme se u stromu...</text> </zpráva> 4/46

K čemu použít XML? K výměně dat XML může být použito k výměně dat mezi nekompatibilními systémy K ukládání dat XML ukládá do člověkem čitelného textového souboru strukturovaná data K větší využitelnosti dat Data lze prohlížet ve specializovaných aplikacích, ale i v jednoduchých prohlížečích 5/46

XML syntax Pravidla Jednoduchá Přesná Snadno pochopitelná Snadno použitelná Snadná manipulace s XML dokumenty 6/46

XML syntax Příklad <?xml version= 1.0 encoding= ISO- 8859-2?> <zpráva> <od>eva</od> <pro>adam</pro> <text>sejdeme se u stromu...</text> </zpráva> 7/46

XML syntax První řádka musí deklarovat verzi XML, případně použité kódování Každý XML element musí obsahovat odpovídající uzavírací tag Ne jako u HTML řádka 1<br> řádka 2<br> XML tagy jsou case sensitive Ne jako u HTML <B>tučný text</b> 8/46

XML syntax XML elementy musí být správně vhnízďovány Ne jako u HTML <b><i>tučně a italikou</b></i> XML dokument musí obsahovat právě jeden kořenový element Příklad <kořen> <dítě> </dítě> </kořen> <!-- konec XML --> 9/46

XML syntax XML atributy musí být vždy uzavřeny v apostrofech či uvozovkách Ne jako u HTML <table width=50> Bílé znaky v XML dokumentu jsou zachovány Ne jako u HTML toto je 1 mezera Komentáře jsou stejné jako u html <!-- komentář --> 10/46

XML elementy Elementy jsou rozšiřitelné Příklad <zpráva> <od>eva</od> <pro>adam</pro> <datum>7. den</datum> <text>sejdeme se u stromu...</text> </zpráva> Způsobí přidání tagu pád aplikace? NE! Aplikace se s neznámým tagem vypořádá tak, že ho ignoruje 11/46

XML elementy Elementy jsou v příbuzenském vztahu poznámka je kořenový element poznámka je rodičovský element elementů od, pro, datum a text od, pro, datum a text jsou dětské elementy elementu poznámka od, pro, datum a text jsou sourozenecké elementy 12/46

XML elementy Elementy mohou mít různý obsah Obsahují elementy Kombinovaný obsah Jednoduchý obsah Prázdný obsah Atributy 13/46

XML elementy Pravidla pro názvy Názvy mohou obsahovat písmena, čísla a jiné znaky Názvy nesmí začínat číslem či interpunkčním znakem Názvy nesmí začínat slovem XML (xml, Xml,...) Názvy nesmí obsahovat mezery Názvy mohou být libovolně dlouhé (lepší jsou stručné a výstižné) Názvy by neměly obsahovat znaky. a - Akcentované znaky jsou povolené, ale... 14/46

XML atributy Elementy mohou obsahovat atributy Atribut je dvojice název, hodnota Příklad v HTML <a href= index.html >Domů</a> Obecně se atributy používají pro infromace stojící mimo data Příklad <obrázek typ= gif >adam.gif</obrázek> 15/46

XML atributy Pro názvy atributů platí stejná pravidla jako pro elementy Hodnoty atributů musí být uzavřeny v apostrofech či uvozovkách Pokud jsou v uvozovkách, mohou obsahovat apostrofy a opačně 16/46

XML atributy Atributy lze nahradit elementy Proč se snažit vyhnout atributům Nemohou obsahovat více hodnot Nelze je snadno rozšiřovat Neumožňují popsat struktury Je složitější s nimi programově zacházet Lze složitěji testovat validnost XML Dokumenty obsahující příliš atributů jsou hůře čitelné <zpráva od= Eva pro= Adam datum= 7. den text= Sejdeme se u stromu... /> 17/46

XML validace Well-formed XML Dokument má validní syntax <?xml version= 1.0 encoding= ISO-8859-2?> <zprávy> <zpráva> <od>eva</od> <pro>adam</pro> <datum>7. den</datum> <text>sejdeme se u stromu...</text> </zpráva> <zpráva> <od>adam</od> <pro>eva</pro> <datum>bez data</datum> <text>tak teda jo...</text> </zpráva> </zprávy> 18/46

XML validace Validní XML Splňuje DTD nebo XML schema DTD nebo XML schema Definují elementy a atributy, které se mohou vyskytnout Definují příbuznost elementů (rodiče, děti) Pořadí a počet dětí Typy elementů a atributů... 19/46

XML schema DTD je první možnost jak popsat XML XML schema je modernější alternativa k DTD Podpora datových typů a omezení Používají XML syntax Větší bezpečnost komunikace (např. datum 2005-03-11) Rozšiřitelné 20/46

XML schema Příklad <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementformdefault="qualified"> <xs:element name="zpráva"> <xs:complextype> <xs:sequence> <xs:element name="od" type="xs:string"/> <xs:element name="pro" type="xs:string"/> <xs:element name="datum" type="xs:date"/> <xs:element name="text" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> 21/46

Validace XML v.netu Specifikace struktury dat Document Type Definition (DTD) XML Schema Definition (XSD) Specifikace viz http://w3c.org Validace Třída XmlValidatingReader Konstruktoru předáme XmlTextReader Kolekce Schemas přidáme schéma Událost ValidationEventHandler (pokud čtený soubor neodpovídá schématu) 22/46

Validace XML v.netu Příklad const string path = @"../../"; const string xmlpath = path + @"\zpravy.xml"; const string xsdpath = path + @"\zpravy.xsd"; XmlValidatingReader reader = new XmlValidatingReader(new XmlTextReader(xmlPath)); XmlSchemaCollection schemacollection = new XmlSchemaCollection(); schemacollection.add("http://tempuri.org/zpravy1.xsd",xsdpath); reader.schemas.add(schemacollection); Console.Write("Validace:"); reader.validationeventhandler += new ValidationEventHandler(reader_ValidationEventHandler); while(reader.read()) { Console.Write("."); } Console.WriteLine("\n");... 23/46

Podpora.NETu pro XML Dokumentově orientovaný přístup DOM Document Object Model Načte celý soubor najednou Širší možnosti úprav Sekvenční přístup SAX Simple API for XML Postupné procházení souborem Vhodné pro velká data

DOM Document Object Model Standard W3C Umožňuje načtení celého souboru (stromu) a libovolně jej procházet Paměťově náročný Vhodný pro krátké soubory se složitou strukturou Umožňuje jednotný přístup ke čtení i zápisu XML 25/46

DOM v.netu Namespace System.Xml Třída XmlDocument Zapouzdřuje celý dokument Přistupuje k dokumentu jako ke stromové struktuře Poskytuje metody pro načtení a uložení Load(string) Save(string) Poskytuje přístup ke kořenu XmlElement DocumentElement 26/46

DOM v.netu Třída XmlNode Abstrakce pro uzel XML stromu Může být Element Text Poskytuje přístup k Rodiči Dětem Aktributům 27/46

DOM v.netu Třída XmlNode <zprávy> <zpráva> <od>eva</od> <pro>adam</pro> zprávy </zpráva> <zpráva> <od>adam</od> <pro>eva</pro> </zpráva> ParentNode zpráva NextSibling zpráva </zprávy> ChildNodes FirstChild LastChild od pro od pro 28/46

DOM v.netu Třída XmlNode string Name Jméno elementu (pro textové uzly #text) string Value Text textového uzlu Pro elementy null XmlAttributeCollection Attributes Kolekce atributů Naplněny Name i Value 29/46

DOM v.netu XmlNode je abstraktní třída Ani odděděné třídy nemají veřejné konstruktory Uzel se musí vytvořit pro konkrétní dokument XmlDocument x.createelement(string) Vytvořený uzel možno zařadit na správné místo do stromu 30/46

DOM v.netu Příklad XmlDocument zpravy = new XmlDocument(); zpravy.load("../../zpravy.xml"); XmlElement od = zpravy.createelement("od"); od.innertext = "Ja"; XmlElement pro = zpravy.createelement("pro"); pro.innertext = "Ty"; XmlElement text = zpravy.createelement("text"); text.innertext = "Ahoj z XML"; XmlElement zprava = zpravy.createelement("zpráva"); zprava.appendchild(od); zprava.appendchild(pro); zprava.appendchild(text); zpravy.documentelement.appendchild(zprava); zpravy.save("../../nove_zpravy.xml"); 31/46

DOM v.netu Vytvoření nového dokumentu Pro vytvoření nového dokumentu je nutné udělat malý trik Vytvořit obsah dokumentu pomocí metody LoadXml(string) Příklad XmlDocument zpravy = new XmlDocument(); zpravy.loadxml("<?xml version='1.0' encoding='windows- 1250'?><zprávy></zprávy>"); 32/46

SAX Simple API for XML Není standardizované Sekvenční přístup k datům Read-only nebo Write-only Vhodné pro velké soubory Menší paměťová náročnost 33/46

SAX v.netu Třída XmlTextReader Chová se jako ukazovátko do XML souboru Konstruktor připojí instanci ke XML souboru a otevře ho XmlTextReader(string FileName) Na konci vhodné volat Close() 34/46

SAX v.netu Třída XmlTextReader Ukazuje vždy na nějaký uzel XML Property XmlNodeTyp NodeType XmlDeclaration, Element, Text, EndElement, WhiteSpace Property string Name Property string Value Postup na další uzel Read() Přeskakuje atributy Standardně zpracovává i bílé znaky Property WhiteSpaceHandling 35/46

SAX v.netu Atributy v XmlTextReaderu Property int AttributeCount Počet zbývajících atributů Je-li >0 pak volat Metoda MoveToNextAttribute Kurzor se posune na další atribut Name a Value se nastaví na odpovídající hodnoty AttributeCount se sníží 36/46

SAX v.netu Třída XmlTextWriter Konstruktor vyžaduje TextWriter nebo jméno souboru a kódování WriteStartDocument() WriteStartElement(string Name) WrtieAttributeString(string Name, string Value) WriteElementString(string Name, string Text) WriteString(string Text) WriteEndElement() WriteEndDocument() 37/46

SAX v.netu Příklad XmlTextWriter writer = new XmlTextWriter("../../zpravySAX.xml",System.Text.Encoding.Get Encoding("Windows-1250")); writer.formatting = Formatting.Indented; writer.writestartdocument(); writer.writestartelement("zprávy"); writer.writestartelement("zpráva"); writer.writeelementstring("od","já"); writer.writestartelement("pro"); writer.writestring("ty"); writer.writeendelement(); writer.writestartelement("text"); writer.writestring("zpráva o zápisu pomocí SAX..."); // tady chybí WriteEndElement dokument se zapíše bez // chyby, ale nespoléhat na to!!! writer.writeenddocument(); writer.close(); Za správnost ručí programátor!!! 38/46

XPath Co je XPath Syntax pro definování části XML dokumentu Používá výrazy k navigaci v XML dokumentu Výrazy se podobají cestě na disku Je W3C standard /zprávy/zpráva Určuje všechny elementy zpráva podřízené elementu zprávy, na úrovni kurzoru (obvykle kořen) 39/46

XPath predikáty Predikát podmínka Na vnitřní uzel [Node = 'text'] Na atribut - [@attribute = 'value'] Možno použít operátory <,>,=,!=,>=,<= Možno použít logické operátory and a or /zprávy/zpráva[od = 'Adam' or od = 'Eva'] 40/46

XPath v.netu XmlNodeList XmlNode.SelectNodes(string xpath) Možno i nad XmlDocument (je potomek) Podobně SelectSingleNode (vrací pouze první) Namespace System.Xml.XPath XPathDocument XPathNavigator XPathDocument.CreateNavigator() XPathNodeIterator XPathNavigator.Select(string xpath) Current, MoveNext, Value, 41/46

XSLT XML Stylesheet Transformations Umožňuje převádět XML do jiných formátů (HTML,...) Standard W3C XSL popisuje jakým způsobem má XML vypadat XSL je XML <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transfo rm"> 42/46

XSLT XSLT tamplate Jakým způsobem má být značka přeložena <xsl:template match= path"> </xsl:template> Uvnitř šablony je vždy některý XML uzel aktivní <xsl:value-of select= path > Vypíše obsah značky <xsl:for-each select= path > </xsl:foreach> Iteruje výsledkem XPath cesty <xsl:apply-templates select= path /> 43/46

XSLT Příklad (zpravy.xsl) <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="/"> <html><head> <link rel="stylesheet" type="text/css" href="zpravy.css" /> </head> <body> <table> <tr><th>od</th><th>pro</th><th>text</th> </tr> <xsl:for-each select="zprávy"> <xsl:apply-templates select="zpráva"/> </xsl:for-each> </table> </body></html> </xsl:template> <xsl:template match = "zpráva"> <tr> <td><xsl:value-of select="od"/></td> <td><xsl:value-of select="pro"/></td> <td><xsl:value-of select="text"/></td> </tr> </xsl:template> </xsl:stylesheet> 44/46

XSLT Příklad (zpravy.css) table { border: 1px solid black; border-collapse: collapse; } td { border: 1px solid black; padding: 10px;} Příklad (zpravy.xml) <?xml version="1.0" encoding="windows-1250"?> <?xml-stylesheet type="text/xsl" href="zpravy.xsl"?> <zprávy> <zpráva> <od>eva</od> <pro>adam</pro> <text>sejdeme se u stromu...</text> </zpráva> <zpráva> <od>adam</od> <pro>eva</pro> <text>tak teda jo...</text> </zpráva> </zprávy> 45/46

XSLT v.netu Třída XslTransform Load(string filename) Vyhazuje XsltCompileException Vhodné odladit xslt jinak (browser) Transform(string infile, string outfile) Mnoho dalších přetížení Pro proudy (XSLT transformace na webovém serveru) XmlResolver (zapouzdření obecného zdroje dat v XML) 46/46

Konec 47/46