Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 7 XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML 1. Prosty dokument XML lab7_1.xml Sposób prezentacji zależy od użytego edytora / przeglądarki: Notatnik: <?xml version="1.0" standalone="yes"?> <Pozdrowienia> <napis1> Hello XML! </napis1> </Pozdrowienia> Notepad++: Internet Explorer:
2. Struktura dokumentu XML Znaczniki Wielkość liter ma znaczenie (właściwość case sensitive). Nazwa znacznika zaczyna się literą lub znakiem podkreślenia. W nazwie znacznika nie mogą wystąpić białe znaki, dwukropek jest znakiem zarezerwowanym. Znacznik może nie posiadać zawartości (element pusty) Atrybuty Atrybut to para nazwa= wartość. Reguły nazewnictwa atrybutów analogiczne do reguł nazewnictwa znaczników. Wartość atrybutu jest dowolnym napisem / tekstem. Jeżeli zawiera podwójny znak cudzysłowa to wartość atrubutu może być otoczona cudzysłowem pojedynczym np. <Rura srednica= 1 /> Reguły poprawnie sformułowanego dokumentu XML 1. Każdy dokument zaczyna się deklaracją XML 2. Niepuste elementy posiadają znacznik początkowy i końcowy 3. Elementy puste zakończone są /> 4. Pojedynczy element (korzeń / root) musi całkowicie zawierać wszystkie inne) 5. Elementy nie mogą się przeplatać 6. Wartości atrybutów są umieszczone w cudzysłowie
3. Prosty plik XSD lab7_2.xsd W3C World Wide Web Consortium www.w3.org 4. Walidacja dokumentu XML Poprawność składniowa (Well-formed) Poprawność strukturalna (Valid) Poprawność semantyczna W3C XML Schema (XSD) Validation online http://www.utilities-online.info/xsdvalidation/
Walidacja XML # XSD powiedzie (Komunikat The XML is Well Formed and Valid) się jeżeli XSD okroimy do: Lub rozszerzymy o: <xs:element name="napis1" type= xs:string /> Komunikat Not Valid pojawi się gdy dodamy element napis2: <xs:element name="napis1" type="xs:string"/> <xs:element name="napis2" type="xs:string"/> Chyba, że określimy: <xs:element name="napis1" type="xs:string"/> <xs:element name="napis2" type="xs:string" minoccurs= 0 />
5. Definiowanie XSD Typy złożone w XML Schema definiuje się elementem schematu complextype. Typ złożony, w odróżnieniu od typu prostego, może posiadać wewnętrzną strukturę: podelementy i atrybuty. Dlatego tylko elementom (a nie atrybutom) można przypisywać typy złożone. <xs:simpletype name="plectyp"> <xs:restriction base="xs:string"> <xs:enumeration value="k"/> <xs:enumeration value="m"/> </xs:restriction> </xs:simpletype> <xs:complextype name="osobatyp"> <xs:element name= imie type= xs:string minoccurs="1" maxoccurs="unbounded"/> <xs:element name="nazwisko" type= xs:string /> <xs:attribute name="plec" type= PlecTyp use="required"/> <xs:attribute name="email" type= xs:string use="optional"/>
Lab7_3.xsd <xs:simpletype name="plectyp"> <xs:restriction base="xs:string"> <xs:enumeration value="k"/> <xs:enumeration value="m"/> </xs:restriction> </xs:simpletype> <xs:complextype name="osobatyp"> <xs:element name="imie" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> <xs:element name="nazwisko" type="xs:string"/> <xs:attribute name="plec" type="plectyp" use="required"/> <xs:attribute name="email" type="xs:string" use="optional"/> <xs:element name="osoby"> <xs:element name="osoba" type="osobatyp" minoccurs="1" maxoccurs="unbounded"/> Lab7_4.xml <?xml version="1.0" standalone="yes"?> <Osoby> <osoba plec="m" email="kowalski@wp.pl"> <imie>jan</imie> <imie>andrzej</imie> <nazwisko>kowalski</nazwisko> </osoba> <osoba plec="k"> <imie>janina</imie> <imie>anna</imie> <nazwisko>nowak</nazwisko> </osoba> </Osoby>
Zadanie 1 Zaprojektuj 2-3 formularze do własnego projektu. Zdefiniuj XSD i utwórz przykładowe pliki XML do danych z formularzy. Przeprowadź walidację. Przykład formularza: Schemat DB