Zapoznaj się, jeśli to konieczne, z deklaracją schematów na
w3schools
Znajdź błędy w podanym schemacie dla pliku xml który jest poniżej: Skorzystaj w tym celu z validatora: xmllint --schema plik.xsd plik.xml (Zwróć uwagę, że trzeba wywołać xmllint z inną opcją niż przy walidacji DTD)
plik.xsd: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="adres"> <xsd:sequence> <xsd:element name="ulica" type="xsd:"/> <xsd:element name="miejscowosc" type="xsd:string"/> <xsd:element name="kod" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> plik xml:
<adres xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="plik.xsd"> <ulica>Krotka 1</ulica> <miejscowosc>Gdansk</miejscowosc> </adres>
W poniższych zadaniach będziesz definiować
dla fragmentu DTD napisz odpowiadający mu fragment schematu:
a) <!ELEMENT nazwa (#PCDATA)> b1) <!ELEMENT Adres (Ulica, miasto, kod)> b2) <!ATTLIST Adres domowy_lub_nie CDATA #IMPLIED>
Załóż że prefixem jest xsd. Wskazówki: Początek a) wygląda tak:
< xsd:element name= ...
w b1) zdefiniuj typ złożony:
< xsd:complexType name = "Adres">
...
w b2) zacznij tak:
< xsd:attribute name = ...
dla fragmentu DTD napisz deklaracje schematu:
<!ELEMENT Właściciel (Imie, Zawód+, Adres?, Telefon*)>
Załóż że prefixem jest xsd, zobacz przykłady na w3schools
Napisz atrybut w Schema o nazwie liczba, typie całkowitym, który jest obowiązkowy (required) (użyj atrybutu "use").
Zapisz następujące elementy w Schema:
a) <!ELEMENT Adres (ulica, miasto,(stan|województwo),kod)>
Wsk. użyj elementu <xsd:choice> ... </xsd:choice>
zagnieżdżonego w elemencie <xsd:sequence> ... </xsd:sequence>
możesz założyć, że elementy ulica, miasto stan i województwo są typu string
a kod typu integer,
b) za pomocą elmentu <xsd:all> zadeklaruj w Schema
<!ELEMENT Book (Title, Author, Type, Published, Rating ?, Notes?)>
Dla elementu
<nr_dowodu> ANB783456 </nr_dowodu>
napisz odopowiadający mu schemat
(użyj restrykcji oraz "facet" o nazwie pattern, i odpowiednie wyrażenie
regularne. Przyjmij że prefix jest postaci xsd)
Tu są przykłady restrykcji
oraz
wzorców (patterns)
(ten link będzie działał później). W tym celu dokończ schemat:
< xsd:element name ="nr_dowodu" > < xsd:simpleType> ... </ xsd:simpleType> </xsd:element>
(tworzenie własnych typów prostych za pomocą restrykcji) Napisz typ prosty o nazwie kody którego treścią może być kod programu napisany w jakimś języku programowania (użyj restrykcji whiteSpace z opcją preserved , przyjmij że prefix jest postaci xsd) Schemat będzie zawarty w:
<xsd:simpleType name= ...> ... </xsd:simpleType>
Napisz typ prosty o nazwie jezyki który jest typem wyliczeniowym o wartości będącej jedną z nazw następujących języków programowania: C, C++, Java, pyton, ruby (użyj restrykcji enumeration , przyjmij że prefix jest postaci xsd)
Wzorując się na przykładzie pod tytułem Using Named Types napisz schemat dla dokumentu xml opisującego wyświetlenie komendy ls -l. Przyjmij że plików może być tylko 1000, wielkość jest wyświetlana w bajtach, (typ byte) oraz data utworzenia ma format YY-MM-DD, prawa dostępu potraktuj jako łańcuch który ma dokładnie 10 znaków (restrykcje: mainLength i maxLength). plik xml znajduje się tutaj schemat powinien być zawarty w elemencie
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
...
<xsd:schema>
Uwaga: zobacz, że schemat można napisać na 3 sposoby.
Dividing Schema
I dla większych plików proszę stosować metodę typów nazwanych