Esercizi Laboratorio XMLSchema Dato il file XML dato, realizzare: 1. Uno schema DTD 2. Uno schema XMLSchema E rispondere alle successive domande Ombretta Gaggi, Matteo Ciman Università di Padova 1 Tecnologie Web - 2 2 Domanda 1 Il file xml fornito è ben formato Domanda 2 Il file XML fornito è valido La domanda è mal posta Tecnologie Web - 3 3 Tecnologie Web - 4 4
Domanda 3 Il file XML fornito è valido rispetto a questo frammento di schema DTD: Domanda 4 Il file XML fornito è valido rispetto a questo frammento di schema DTD: <!ELEMENT personaggio ( #PCDATA colore peso potenza presentein img descr) *> <!ELEMENT personaggio ( #PCDATA, colore, peso, potenza, presentein, img, descr) *> Il frammento di schema non è corretto secondo il linguaggio DTD Il frammento di schema non è corretto secondo il linguaggio DTD Tecnologie Web - 5 5 Tecnologie Web - 6 6 Domanda 5 Quale modello è preferibile per questo tipo di file? Bambole russe Fette di salame Giardino dell Eden Tende alla Veneziana Bambole russe o Giardino dell Eden Bambole russe o Tende alla Veneziana La scelta del modello è ininfluente in questo caso Domanda 6 Si può definire uno schema DTD che pone maggiori vincoli al tag colore rispetto alla soluzione proposta Tecnologie Web - 7 7 Tecnologie Web - 8 8
Domanda 7 Il tag peso può essere definito in XMLSchema come un tipo semplice Domanda 8 Lo schema che descrive il file XML dato contiene Un tipo misto Più di un tipo misto Non contiene tipi misti Tecnologie Web - 9 9 Tecnologie Web - 10 10 Schema DTD - 1 <!ELEMENT protagonisti ( personaggio+ ) > <!ATTLIST protagonisti gioco CDATA #REQUIRED > Soluzioni <!ELEMENT personaggio ( colore, peso, potenza?, presentein, img, descr) > <!ELEMENT colore ( #PCDATA ) > <!ELEMENT peso ( #PCDATA ) > <!ATTLIST peso unitamisura CDATA #FIXED "wink" > Tecnologie Web - 11 11 Tecnologie Web - 12 12
Schema DTD - 2 <!ELEMENT potenza ( #PCDATA ) > <!ELEMENT presentein ( serie* ) > <!ELEMENT serie ( #PCDATA ) > <!ELEMENT img EMPTY > <!ATTLIST img alt CDATA #REQUIRED, src CDATA #REQUIRED > <!ELEMENT descr ( p+ ) > <!ELEMENT p ( #PCDATA em )* > <!ELEMENT em ( #PCDATA ) > Schema XMLSchema - protagonisti <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="http://www.protagonisti.com" targetnamespace="http://www.protagonisti.com" elementformdefault="qualified"> <xs:element name="protagonisti"> <xs:complextype> <xs:element name="personaggio" maxoccurs="unbounded" type="tpersonaggio" /> <xs:attribute name="gioco" type="xs:string" use="required" /> </xs:element> Tecnologie Web - 13 13 Schema XMLSchema - personaggio <xs:complextype name="tpersonaggio"> <xs:element name="colore" type="tcolore" /> <xs:element name="peso" type="tpeso" /> <xs:element name="potenza" type="tpotenza" minoccurs="0"/> <xs:element name="presentein" type="tpresente" /> <xs:element name="img" type="timmagine" /> <xs:element name="descr" type="tdescr" /> <xs:attribute name="nome" type="xs:string" use="required" /> Schema XMLSchema - colore <xs:simpletype name="tcolore"> <xs:enumeration value="rosso" /> <xs:enumeration value="blu" /> <xs:enumeration value="rosa" /> <xs:enumeration value="bianco" /> <xs:enumeration value="arancione" /> <xs:enumeration value="viola" />
Schema XMLSchema peso e presente <xs:complextype name="tpeso"> <xs:simplecontent> <xs:extension base="xs:positiveinteger"> <xs:attribute name="unitamisura" type="xs:string" fixed="wink" /> </xs:extension> </xs:simplecontent> <xs:complextype name="tpresente"> <xs:element name="serie" maxoccurs="unbounded" minoccurs="0" type="tserie" /> Schema XMLSchema potenza e immagine <xs:simpletype name="tpotenza"> <xs:enumeration value="bassa" /> <xs:enumeration value="media" /> <xs:enumeration value="elevata" /> <xs:complextype name="timmagine"> <xs:attribute name="src" type="xs:anyuri" use="required" /> <xs:attribute name="alt" type="xs:string" /> Schema XMLSchema - serie <xs:simpletype name="tserie"> <xs:enumeration value="angry Birds" /> <xs:enumeration value="angry Birds Rio" /> <xs:enumeration value="angry Birds Star Wars" /> <xs:enumeration value="angry Birds Space" /> Schema XMLSchema - fine <xs:complextype name="tdescr"> <xs:choice maxoccurs="unbounded"> <xs:element name="p" type="tp" /> </xs:choice> <xs:complextype name="tp" mixed="true"> <xs:choice maxoccurs="unbounded" minoccurs="0"> <xs:element name="em" type="xs:string" /> </xs:choice>