240 likes | 505 Views
XML. Petr Šmíd smidp1@fel.cvut.cz. Obsah prezentace. Co je to XML ?. Obsah prezentace. Co je to XML ? Vlastnosti. Obsah prezentace. Co je to XML ? Vlastnosti Validita. Co je to XML ?. E X tensible M arkup L anguage Účelem je usnadnit sdílení dat napříč informačními systémy
E N D
XML Petr Šmíd smidp1@fel.cvut.cz
Obsah prezentace • Co je to XML ?
Obsah prezentace • Co je to XML ? • Vlastnosti
Obsah prezentace • Co je to XML ? • Vlastnosti • Validita
Co je to XML ? • EXtensibleMarkupLanguage • Účelem je usnadnit sdílení dat napříč informačními systémy • Popis dokumentu z hlediska věcného obsahu • Vyvinuto a doporučováno konsorciem W3C
Vlastnosti • Otevřený formát založený na prostém textu • Implicitně používá znakovou sadu Unicode • Definice vlastních elementů (tagů) • Vysoká informační hodnota
Příklad dokumentu v XML <book> <chapter> <title>Introduction</title> </chapter> <chapter> <title>Story</title> <subChapter> <title>Part 1</title> </subChapter> <subChapter> <title>Part 2</title> </subChapter> </chapter> <chapter> <title>Index</title> </chapter></book>
Správně strukturovaný a validní XML dokument • Správě formovaný (well-formed) XML dokument dodržuje základní pravidla: • Právě jeden kořenový element • Korektní zanoření elementů • Dodržení CASE sensitivity • Hodnoty atributů uzavřeny v uvozovkách • Speciální znaky zapsány pomocí entit • Validní = vyhovující nějaké předem definované sadě pravidel, které si vymyslíme. • Tento formát se definuje pomocí jazyků pro definování schématu dokumentu: • DTD • XML Schema • RELAX NG
Proč se zabývat validitou ? • Chyby v XML: • Vzniklé při přenosu dat • Vzniklé při editaci XML uživatelem • z nepochopení/nedodržení pravidel předepsaných v DTD • z neznalosti XML • překlepy • Program zpracovávající XML by se měl při první chybě zastavit a nepokračovat ve zpracování chybného dokumentu.
DTD (Document Type Definitions) • Nejstarší a nejvíce podporované • Může být definované uvnitř XML dokumentu, v externím souboru nebo veřejné • Postačuje pro jednoduché aplikace • Standardizovaná DTD např. pro HTML
XML Schema • Pozor na terminologii • XML schéma = přípustná struktura XML dat, popsaná v některém z existujících jazyků (DTD, XML Schema…) • XML Schema = jazyk pro popis struktury dokumentu • „XML schéma v jazyce XML Schema“
XML Schema • XML Schema je lepší než DTD, protože • Podporuje datové typy • Podporuje namespaces • Je zapsáno pomocí XML (není nutné se učit nový jazyk, na rozdíl od DTD) • Je připraveno na budoucí rozšíření
Relax NG • Syntax také vychází z XML, ale umožňuje i kompaktní zápis • Stejně jako W3C XML Schema podporuje • Datové typy • Namespaces • Regulární výrazy
Příklad - XML <?xml version="1.0" encoding="utf-8" ?> <notepad> <note id="1"> <to>Petr</to> <from>Tomas</from> <heading>Nezapomen!!</heading> <body>Nezapomen pres weekend dodelat ty protokoly!!</body> </note> <note id="2"> <to>Tomas</to> <from>Petr</from> <heading>Uz to mam!!</heading> <body>Protokoly uz mam davno hotovy, hehe ;-)</body> </note> </notepad>
DTD pro náš příklad note.xml Před kořenovým elementem nutno zadat hlavičku: <!DOCTYPE notepad SYSTEM "note.dtd"> note.dtd <!ELEMENT notepad (note)+> <!ELEMENT note (to, from, heading, body)> <!ATTLIST note id CDATA #REQUIRED> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
XML Schema pro náš příklad <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="notepad"> <xs:complexType> <xs:sequence> <xs:element ref="note" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="note"> <xs:complexType> …….
Relax NG schema pro náš příklad note.rng <element name= "notepad" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <element name="note"> <attribute name="id"> <data type="integer" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" /> </attribute> <element name="to"><text/></element> <element name="from"><text/></element> <element name="heading "><text/></element> <element name="body"><text/></element> </element> </oneOrMore> </element>
Druhy validátorů • Online validátoy • Integrované ve vývojovém prostředí nebo prohlížeči • Validátory běžnou součástí dostupných XML parserů
Online validátory • V podobě webové stránky nebo služby vytvářející rozhraní klasickému parseru • Nevýhody • Posílám svá data neznámo kam a komu • Nevhodné pro velké objemy dat • Využití • Experimenty • XML validátor • http://www.cogsci.ed.ac.uk/~richard/xml-check.html • (X)HTML validátor kódu stránek • http://validator.w3.org/ • http://www.w3schools.com/dom/dom_validate.asp
Integrované validátory • Součástí IDE nebo webového prohlížeče • Pomáhají při vývoji XML dokumentu nebo HTML kódu • Placená vývojová prostředí obvykle obsahují komplexní sadu funkcí pro vytváření, validaci a editaci XML
Odkazy a zdroje • http://www.w3.org • http://www.xml.com • http://www.zvon.org • http://www.kosek.cz • http://en.wikipedia.org/wiki/XML_Schema_Language_Comparison • http://www.w3schools.com/schema/default.asp • Validace XML a validátory, Karas M., 2007