XML Validace
Validace Well formed XML document Valid XML document
Well Formed Korektní vzhledem k syntaxi Párové značky Nekřížené značky Hodnoty atributů v uvozovkách (apostrofech) ...
Valid V souladu s deklarovanou strukturou DTD XML Schema
Značkovací jazyky DTD
Deklarace Typu Dokumentu - DTD Struktura dokumentu Uvádí se v hlavičce dokumentu (přímo - interní nebo odkazem - externí) Využívá se stále méně
Elementy – Prvky - Značky <!ELEMENT název_prvku (seznam prvků, které může obsahovat s pravidly výskytů)> <!ELEMENT okres (název, obec+, přednosta?)>
Prvky / Pravidla výskytu Bez znaku Musí právě jednou ? Může ale nemusí právě jednou + Musí jednou nebo vícekrát * Může ale nemusí vícekrát
Prvky / Neobsahující další <!ELEMENT popis (#PCDATA)>
Oddělování definic prvků Čárkou – Všechny definice se musí využít Svislou čárou (Pipe |) - využije se jedna nebo druhá definice <!ELEMENT obec (jméno, (starosta?|tajemník?), popis*)> <!ELEMENT popis (#PCDATA|historie)>
Prvky – všechno nebo nic <!ELEMENT br EMPTY> <!ELEMENT vse ANY>
Atributy <!ATTLIST název_pvku atribut1 typ povinnost|implicintní hodnota atribut2 typ povinnost|implicintní hodnota ... atributN typ povinnost|implicintní hodnota >
Atributy - Typy CDATA - Libovolný text ID - Klíčový atribut IDREF – Cizí klíč NMTOKEN - Spojitý řetězec NMTOKENS - Seznam spojitých řetězců oddělených mezerou seznam možných hodnot - Uvádí se do závorek a oddělují se | Př.: Pohlaví(žena|muž) „žena“
Atributy - Příklad <!ATTLIST okres Kodok ID #REQUIRED KodKraj IDREF #IMPLIED Stav (strukturálně postižený|nepostižený) „nepostižený“ Nazok CDATA #IMPLIED>
Parametrické entity - deklarace <!ENTITY % jádro „jméno CDATA#REQUIRED jazyk CDATA#IMPLIED“ >
Parametrické entity - použití <!ATTLIST řeka %jádro délka CDATA#IMPLIED >
Atributy - doporučení Atributy pokud možno nepoužívejte Instinkt z roku 1999 – XML jsem téměř neznal Potvrzeno na W3C Schools
Připojení DTD Interní Externí systémová Externí veřejná
Interní DTD Zapsaná přímo v dokumentu <!DOCTYPE okres [ <!ELEMENT okres (název, obec+, přednosta?)> <!ELEMENT obec (jméno, popis*, starosta?)> ]> <okres> ... </okres>
Systémová DTD Distribuovaná s XML dokumentem <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE okres SYSTEM "okres.dtd">
Veřejná DTD Dostupná přes Internet <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wml PUBLIC "- //WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1. xml">
Značkovací jazyky XML Schema
XSD - Proč? Bohatější než DTD Rozšiřitelné Použití XML Datové typy Jmenné prostory
XSD – Datové typy Zjednodušují zejména: Validaci Práci s databází Definování integritních omezení Konverzi datových typů
XSD – využití XML Není nutné se učit další jazyk Je možné používat stejný editor a parser Je možné využívat XML DOM Je možné transformovat schémata s využitím XSL
XSD – Striktnost Např. datový typ date Musí mít přesný tvar: YYYY-MM-DD
XSD - Struktura <?xml version="1.0" encoding="UTF- 8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XM LSchema" elementFormDefault="qualified"> ... deklarace </xs:schema>
XML - Příklad <?xml version="1.0"?> <note> <to>Petr</to> <from>Jirka</from> <heading>Připomínka</heading> <body>Nezapomeň že teď už jsem vedoucím já!</body> </note>
XML - DTD <!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
XML - XSD </xs:complexType> <?xml version="1.0"?> <xs:schema xmlns:“..." targetNamespace="..." xmlns="..." elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
DTD – Připojení <?xml version="1.0"?> <!DOCTYPE note SYSTEM "http://www.w3schools.com/dtd/note.dtd"> <note> <to>Petr</to> <from>Jirka</from> <heading>Připomínka</heading> <body>Nezapomeň že teď už jsem vedoucím já!</body> </note>
XSD – Připojení <note xmlns="http://www.w3schools.com" <?xml version="1.0"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd"> <note> <to>Petr</to> <from>Jirka</from> <heading>Připomínka</heading> <body>Nezapomeň že teď už jsem vedoucím já!</body> </note>
XSD – Primitivní datové typy xs:string xs:double xs:date YYYY-MM-DD xs:integer xs:decimal xs:boolean xs:time
XSD – Deklarace jednoduchého prvku <xs:element name="xxx" type="yyy"/>
XSD – Deklarace jednoduchého prvku <lastname>Refsnes</lastname> <age>36</age> <dateborn>1970-03-27</dateborn>
XSD – Deklarace jednoduchého prvku <xs:element name="lastname" type="xs:string"/> <xs:element name="age" type="xs:integer"/> <xs:element name="dateborn" type="xs:date"/>
XSD – Implicitní hodnota <xs:element name="color" type="xs:string" default="red"/>
XSD – Fixní hodnota <xs:element name="color" type="xs:string" fixed="red"/>
XSD – Atributy Jednoduché prvky nemohou mít atributy, pouze komplexní prvky mohou mít atributy Atributy se vždy deklarují jako jednoduché
XSD – Atributy <xs:attribute name="xxx" type="yyy"/>
XSD – Atributy <lastname lang="EN">Smith</lastname> <xs:attribute name="lang" type="xs:string"/>
XSD – Atributy <xs:attribute name="lang" type="xs:string" default="EN"/> <xs:attribute name="lang" type="xs:string" fixed="EN"/> <xs:attribute name="lang" type="xs:string" use="required"/>
Použité zdroje http://www.w3schools.com/xml http://www.w3schools.com/dtd/dtd_buil ding.asp