J¦zyki opisu dokumentu
Transkrypt
J¦zyki opisu dokumentu
Materiały bazowe () Języki opisu dokumentu - XML Schema 9 listopada 2012 1 / 59 Materiały bazowe http://www.w3schools.com/default.asp () Języki opisu dokumentu - XML Schema 9 listopada 2012 1 / 59 Materiały bazowe http://www.w3schools.com/default.asp P. Kazienko, K. Gwiazda ”XML na poważnie”, Helion 2002. () Języki opisu dokumentu - XML Schema 9 listopada 2012 1 / 59 Istotne braki DTD () Języki opisu dokumentu - XML Schema 9 listopada 2012 2 / 59 Istotne braki DTD Brak możliwości definiowania typów danych zawartych w elemencie. () Języki opisu dokumentu - XML Schema 9 listopada 2012 2 / 59 Istotne braki DTD Brak możliwości definiowania typów danych zawartych w elemencie. Brak możliwości określania dokładnej liczby wystąpień elementów. () Języki opisu dokumentu - XML Schema 9 listopada 2012 2 / 59 XML Schema jest alternatywą dla DTD. () Języki opisu dokumentu - XML Schema 9 listopada 2012 3 / 59 XML Schema jest alternatywą dla DTD. XML Schema - rekomendacja W3C - 2 maja 2001r. () Języki opisu dokumentu - XML Schema 9 listopada 2012 3 / 59 XML Schema jest alternatywą dla DTD. XML Schema - rekomendacja W3C - 2 maja 2001r. XML Schema, podobnie jak DTD, służy do definiowania ”cegiełek”, z których może składać się dokument XML, ale ma dużo większe możliwości. () Języki opisu dokumentu - XML Schema 9 listopada 2012 3 / 59 Możliwości XML Schema () Języki opisu dokumentu - XML Schema 9 listopada 2012 4 / 59 Możliwości XML Schema definiuje elementy i atrybuty, które mogą wystąpić w dokumencie XML oraz zależności między nimi; () Języki opisu dokumentu - XML Schema 9 listopada 2012 4 / 59 Możliwości XML Schema definiuje elementy i atrybuty, które mogą wystąpić w dokumencie XML oraz zależności między nimi; definiuje ilość możliwych wystąpień elementów-dzieci; () Języki opisu dokumentu - XML Schema 9 listopada 2012 4 / 59 Możliwości XML Schema definiuje elementy i atrybuty, które mogą wystąpić w dokumencie XML oraz zależności między nimi; definiuje ilość możliwych wystąpień elementów-dzieci; określa czy element jest pusty czy może zawierać tekst; () Języki opisu dokumentu - XML Schema 9 listopada 2012 4 / 59 Możliwości XML Schema definiuje elementy i atrybuty, które mogą wystąpić w dokumencie XML oraz zależności między nimi; definiuje ilość możliwych wystąpień elementów-dzieci; określa czy element jest pusty czy może zawierać tekst; definiuje typy danych dla elementów i atrybutów; () Języki opisu dokumentu - XML Schema 9 listopada 2012 4 / 59 Możliwości XML Schema definiuje elementy i atrybuty, które mogą wystąpić w dokumencie XML oraz zależności między nimi; definiuje ilość możliwych wystąpień elementów-dzieci; określa czy element jest pusty czy może zawierać tekst; definiuje typy danych dla elementów i atrybutów; definiuje wartości domyślne i stałe dla elementów i atrybutów; () Języki opisu dokumentu - XML Schema 9 listopada 2012 4 / 59 Możliwości XML Schema definiuje elementy i atrybuty, które mogą wystąpić w dokumencie XML oraz zależności między nimi; definiuje ilość możliwych wystąpień elementów-dzieci; określa czy element jest pusty czy może zawierać tekst; definiuje typy danych dla elementów i atrybutów; definiuje wartości domyślne i stałe dla elementów i atrybutów; określa wzorce zawartości elementów i atrybutów; () Języki opisu dokumentu - XML Schema 9 listopada 2012 4 / 59 Możliwości XML Schema definiuje elementy i atrybuty, które mogą wystąpić w dokumencie XML oraz zależności między nimi; definiuje ilość możliwych wystąpień elementów-dzieci; określa czy element jest pusty czy może zawierać tekst; definiuje typy danych dla elementów i atrybutów; definiuje wartości domyślne i stałe dla elementów i atrybutów; określa wzorce zawartości elementów i atrybutów; oferuje bogaty zbiór typów wbudowanych, które w zależności od potrzeb można zawężać lub rozszerzać. () Języki opisu dokumentu - XML Schema 9 listopada 2012 4 / 59 Jedną z największych zalet XML Schemas jest korzystanie z typów danych. Dzięki temu: () Języki opisu dokumentu - XML Schema 9 listopada 2012 5 / 59 Jedną z największych zalet XML Schemas jest korzystanie z typów danych. Dzięki temu: łatwiej jest opisywać dozwoloną zawartość dokumentu; () Języki opisu dokumentu - XML Schema 9 listopada 2012 5 / 59 Jedną z największych zalet XML Schemas jest korzystanie z typów danych. Dzięki temu: łatwiej jest opisywać dozwoloną zawartość dokumentu; łatwiej jest kontrolować poprawność danych; () Języki opisu dokumentu - XML Schema 9 listopada 2012 5 / 59 Jedną z największych zalet XML Schemas jest korzystanie z typów danych. Dzięki temu: łatwiej jest opisywać dozwoloną zawartość dokumentu; łatwiej jest kontrolować poprawność danych; łatwiej jest pracować z danymi z baz danych; () Języki opisu dokumentu - XML Schema 9 listopada 2012 5 / 59 Jedną z największych zalet XML Schemas jest korzystanie z typów danych. Dzięki temu: łatwiej jest opisywać dozwoloną zawartość dokumentu; łatwiej jest kontrolować poprawność danych; łatwiej jest pracować z danymi z baz danych; łatwiej jest definiować ograniczenia dla danych; () Języki opisu dokumentu - XML Schema 9 listopada 2012 5 / 59 Jedną z największych zalet XML Schemas jest korzystanie z typów danych. Dzięki temu: łatwiej jest opisywać dozwoloną zawartość dokumentu; łatwiej jest kontrolować poprawność danych; łatwiej jest pracować z danymi z baz danych; łatwiej jest definiować ograniczenia dla danych; łatwiej jest definiować format danych; () Języki opisu dokumentu - XML Schema 9 listopada 2012 5 / 59 Jedną z największych zalet XML Schemas jest korzystanie z typów danych. Dzięki temu: łatwiej jest opisywać dozwoloną zawartość dokumentu; łatwiej jest kontrolować poprawność danych; łatwiej jest pracować z danymi z baz danych; łatwiej jest definiować ograniczenia dla danych; łatwiej jest definiować format danych; łatwiej jest konwertować dane do innego typu. () Języki opisu dokumentu - XML Schema 9 listopada 2012 5 / 59 Zalety faktu, że XML Schema jest napisane w XML: () Języki opisu dokumentu - XML Schema 9 listopada 2012 6 / 59 Zalety faktu, że XML Schema jest napisane w XML: nie trzeba uczyć się nowego języka; () Języki opisu dokumentu - XML Schema 9 listopada 2012 6 / 59 Zalety faktu, że XML Schema jest napisane w XML: nie trzeba uczyć się nowego języka; można używać edytora XML do edycji XML Schema; () Języki opisu dokumentu - XML Schema 9 listopada 2012 6 / 59 Zalety faktu, że XML Schema jest napisane w XML: nie trzeba uczyć się nowego języka; można używać edytora XML do edycji XML Schema; można używać parsera XML do parsowania XML Schema. () Języki opisu dokumentu - XML Schema 9 listopada 2012 6 / 59 XML Schema gwarantuje, że przesyłane dane są jednakowo rozumiane przez nadawcę i przez odbiorcę. Przykład Data w postaci ”03-11-2008” w niektórych krajach zostanie zinterpretowana jako 3. listopada, a w innych jako 11. marca. Jednakże element XML określony z użyciem typu danych: <data type="date">2008-03-11</data> zapewnia właściwe zrozumienie zawartości, gdyż XML-owy typ danych ”date” wymaga formatu ”RRRR-MM-DD”. () Języki opisu dokumentu - XML Schema 9 listopada 2012 7 / 59 Podstawowe składniki schematów XML Schema () Języki opisu dokumentu - XML Schema 9 listopada 2012 8 / 59 Podstawowe składniki schematów XML Schema deklaracja XML; () Języki opisu dokumentu - XML Schema 9 listopada 2012 8 / 59 Podstawowe składniki schematów XML Schema deklaracja XML; element główny o nazwie schema, który w znaczniku początkowym zawiera określenie odpowiedniej przestrzeni nazw; () Języki opisu dokumentu - XML Schema 9 listopada 2012 8 / 59 Podstawowe składniki schematów XML Schema deklaracja XML; element główny o nazwie schema, który w znaczniku początkowym zawiera określenie odpowiedniej przestrzeni nazw; definicje typów; () Języki opisu dokumentu - XML Schema 9 listopada 2012 8 / 59 Podstawowe składniki schematów XML Schema deklaracja XML; element główny o nazwie schema, który w znaczniku początkowym zawiera określenie odpowiedniej przestrzeni nazw; definicje typów; deklaracje elementów i atrybutów. () Języki opisu dokumentu - XML Schema 9 listopada 2012 8 / 59 Element schema Element <schema> jest elementem głównym każdego dokumentu XML Schema. <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ... ... </xs:schema> W znaczniku początkowym określona jest przestrzeń nazw oraz przedrostek, dokładniej zapis ten oznacza, że elementy i typy danych używane w tym dokumencie pochodzą z przestrzeni nazw http://www.w3.org/2001/XMLSchema. Ponadto wskazuje, iż elementy i typy danych pochodzące z przestrzeni nazw http://www.w3.org/2001/XMLSchema muszą być poprzedzone przedrostkiem xs:. () Języki opisu dokumentu - XML Schema 9 listopada 2012 9 / 59 Atrybuty elementu schema Element <schema> może zawierać kilka dodatkowych atrybutów. Przykład <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified" attributeFormDefault="qualified"> ... ... </xs:schema> () Języki opisu dokumentu - XML Schema 9 listopada 2012 10 / 59 Atrybut targetNamespace elementu schema Fragment targetNamespace="http://www.w3schools.com" oznacza, że wszystkie nazwy zdefiniowane w tym schemacie mają być przydzielone do przestrzeni nazw identyfikowanej przez http://www.w3schools.com Można pominąć atrybut targetNamespace, ale wtedy przestrzeń dla XML Schema nie może być domyślna - powinna posiadać prefiks. () Języki opisu dokumentu - XML Schema 9 listopada 2012 11 / 59 Atrybut xmlns elementu schema Fragment xmlns="http://www.w3schools.com" oznacza, że domyślną przestrzenią nazw jest http://www.w3schools.com () Języki opisu dokumentu - XML Schema 9 listopada 2012 12 / 59 Atrybuty elementFormDefault i attributeFormDefault elementu schema Fragment elementFormDefault="qualified" oznacza, że nazwa każdego elementu zadeklarowanego w tym schemacie musi być zakwalifikowana do przestrzeni nazw. Fragment attributeFormDefault="qualified" oznacza, że nazwa każdego atrybutu zadeklarowanego w tym schemacie musi być zakwalifikowana do przestrzeni nazw. () Języki opisu dokumentu - XML Schema 9 listopada 2012 13 / 59 Atrybuty elementFormDefault i attributeFormDefault elementu schema () Języki opisu dokumentu - XML Schema 9 listopada 2012 14 / 59 Atrybuty elementFormDefault i attributeFormDefault elementu schema Drugą dopuszczalną (i jednocześnie domyślną) wartością dla atrybutów elementFormDefault i attributeFormDefault jest unqualified. () Języki opisu dokumentu - XML Schema 9 listopada 2012 14 / 59 Atrybuty elementFormDefault i attributeFormDefault elementu schema Drugą dopuszczalną (i jednocześnie domyślną) wartością dla atrybutów elementFormDefault i attributeFormDefault jest unqualified. Do domyślnej przestrzeni nazw można przydzielać lub z niej wyłączać poszczególne elementy i atrybuty deklarowane w schemacie. Służy do tego atrybut form umieszczany w deklaracji konkretnego elementu lub atrybutu. () Języki opisu dokumentu - XML Schema 9 listopada 2012 14 / 59 Odwołania do schematów () Języki opisu dokumentu - XML Schema 9 listopada 2012 15 / 59 Odwołania do schematów Dokument XML można przypisać schematowi na dwa sposoby: bez przestrzeni nazw; przydzielając do przestrzeni nazw. () Języki opisu dokumentu - XML Schema 9 listopada 2012 15 / 59 Odwołania do schematów Dokument XML można przypisać schematowi na dwa sposoby: bez przestrzeni nazw; przydzielając do przestrzeni nazw. Drugi sposób jest przydatny, gdy wykorzystuje się wiele schematów jednocześnie. W praktyce rzadko występuje taka sytuacja. () Języki opisu dokumentu - XML Schema 9 listopada 2012 15 / 59 Odwołania do schematów bez przestrzeni nazw Aby dokument XML przypisać schematowi bez określania przestrzeni nazw należy użyć atrybutu xsi:noNameSpaceschemaLocation, w którym podaje się jedynie lokalizację schematu. Przykład <?xml version=’1.0’ ?> <elementKorzen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNameSpaceschemaLocation="nazwa.xsd"> ... ... </elementKorzen> () Języki opisu dokumentu - XML Schema 9 listopada 2012 16 / 59 Poprawność dokumentu korzystającego ze schematu XML Schema Parser przetwarzający dokument XML korzystający ze schematu XML Schema sprawdza: () Języki opisu dokumentu - XML Schema 9 listopada 2012 17 / 59 Poprawność dokumentu korzystającego ze schematu XML Schema Parser przetwarzający dokument XML korzystający ze schematu XML Schema sprawdza: poprawność składniową dokumentu; () Języki opisu dokumentu - XML Schema 9 listopada 2012 17 / 59 Poprawność dokumentu korzystającego ze schematu XML Schema Parser przetwarzający dokument XML korzystający ze schematu XML Schema sprawdza: poprawność składniową dokumentu; zgodność dokumentu ze schematem (walidacja); () Języki opisu dokumentu - XML Schema 9 listopada 2012 17 / 59 Poprawność dokumentu korzystającego ze schematu XML Schema Parser przetwarzający dokument XML korzystający ze schematu XML Schema sprawdza: poprawność składniową dokumentu; zgodność dokumentu ze schematem (walidacja); zgodność schematu z zasadami tworzenia schematów. () Języki opisu dokumentu - XML Schema 9 listopada 2012 17 / 59 Deklaracje elementów i atrybutów Definiowanie elementu prostego <xs:element name="xxx" type="yyy"/> xxx- nazwa elementu, yyy - typ danych elementu. Definiowanie atrybutu <xs:attribute name="xxx" type="yyy"/> xxx- nazwa atrybutu, yyy - typ danych atrybutu. Atrybut type służy do określania typu elementu lub atrybutu. () Języki opisu dokumentu - XML Schema 9 listopada 2012 18 / 59 Wartości stałe i domyślne dla elementów prostych i atrybutów Wartość domyślna dla elementu <xs:element name="kolor" type="xs:string" default="czerwony"/> Wartość stała dla elementu <xs:element name="kolor" type="xs:string" fixed="czerwony"/> Wartość domyślna dla atrybutu <xs:attribute name="jezyk" type="xs:string" default="polski"/> Wartość stała dla atrybutu <xs:attribute name="jezyk" type="xs:string" fixed="polski"/> () Języki opisu dokumentu - XML Schema 9 listopada 2012 19 / 59 Rodzaje typów dla elementów i atrybutów () Języki opisu dokumentu - XML Schema 9 listopada 2012 20 / 59 Rodzaje typów dla elementów i atrybutów typy wbudowane - zdefiniowane bezpośrednio przez standard XML Schema; () Języki opisu dokumentu - XML Schema 9 listopada 2012 20 / 59 Rodzaje typów dla elementów i atrybutów typy wbudowane - zdefiniowane bezpośrednio przez standard XML Schema; typy proste - własne, zdefiniowane za pomocą elementu xs:simpleType; () Języki opisu dokumentu - XML Schema 9 listopada 2012 20 / 59 Rodzaje typów dla elementów i atrybutów typy wbudowane - zdefiniowane bezpośrednio przez standard XML Schema; typy proste - własne, zdefiniowane za pomocą elementu xs:simpleType; typy złożone - własne, zdefiniowane za pomocą elementu xs:complexType. () Języki opisu dokumentu - XML Schema 9 listopada 2012 20 / 59 Typy wbudowane () Języki opisu dokumentu - XML Schema 9 listopada 2012 21 / 59 Typy wbudowane Typy czasowe duration, dateTime, time, date, gYearMonth, gYear, gDay, gMonthDay, gMonth () Języki opisu dokumentu - XML Schema 9 listopada 2012 21 / 59 Typy wbudowane Typy czasowe duration, dateTime, time, date, gYearMonth, gYear, gDay, gMonthDay, gMonth Typ logiczny boolean () Języki opisu dokumentu - XML Schema 9 listopada 2012 21 / 59 Typy wbudowane Typy czasowe duration, dateTime, time, date, gYearMonth, gYear, gDay, gMonthDay, gMonth Typ logiczny boolean Typy binarne base64Binary, hexBinary () Języki opisu dokumentu - XML Schema 9 listopada 2012 21 / 59 Typy wbudowane Typy czasowe duration, dateTime, time, date, gYearMonth, gYear, gDay, gMonthDay, gMonth Typ logiczny boolean Typy binarne base64Binary, hexBinary Typy znakowe string, normalizedString, token () Języki opisu dokumentu - XML Schema 9 listopada 2012 21 / 59 Typy wbudowane - c.d. () Języki opisu dokumentu - XML Schema 9 listopada 2012 22 / 59 Typy wbudowane - c.d. Typy liczbowe float, double, decimal, integer, nonPositiveInteger, negativeIntiger, nonNegativeInteger, unsignedLong, unsignedInt, unsignedShort, unsignedByte, positiveInteger, long, int, short, byte () Języki opisu dokumentu - XML Schema 9 listopada 2012 22 / 59 Typy wbudowane - c.d. Typy liczbowe float, double, decimal, integer, nonPositiveInteger, negativeIntiger, nonNegativeInteger, unsignedLong, unsignedInt, unsignedShort, unsignedByte, positiveInteger, long, int, short, byte Typy XML anyURI, QName, NOTATION, language, Name, NCName, ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS () Języki opisu dokumentu - XML Schema 9 listopada 2012 22 / 59 Typy wbudowane - c.d. Typy liczbowe float, double, decimal, integer, nonPositiveInteger, negativeIntiger, nonNegativeInteger, unsignedLong, unsignedInt, unsignedShort, unsignedByte, positiveInteger, long, int, short, byte Typy XML anyURI, QName, NOTATION, language, Name, NCName, ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS Szczegółowe informacje na temat typów można znaleźć pod adresem http://www.w3.org/TR/xmlschema-2 () Języki opisu dokumentu - XML Schema 9 listopada 2012 22 / 59 Definiowanie typu prostego Przykład - dowolna liczba całkowita od 1 do 150 <xs:simpleType name="typ_wiek"> <xs:restriction base="xs:integer"> <xs:minInclusive value="1"/> <xs:maxInclusive value="150"/> </xs:restriction> </xs:simpleType> Zastosowanie <xs:attribute name="wiek" type="typ_wiek"/> Za pomocą typów prostych można definiować tylko bezpośrednią zawartość elementu (bez podelementów i atrybutów) lub zawartość atrybutu. W definicji typów prostych można wykorzystywać tylko inne typy proste lub typy wbudowane. () Języki opisu dokumentu - XML Schema 9 listopada 2012 23 / 59 Definiowanie typu złożonego Przykład - typ złożony zawierający 3 podelementy i 1 atrybut <xs:complexType name="typ_adres"> <xs:sequence> <xs:element name="ulica" type="xs:string"/> <xs:element name="nrDomu" type="xs:string"/> <xs:element name="miasto" type="xs:string"/> </xs:sequence> <xs:attribute name="rodzaj_adresu" type="xs:token" fixed="czasowy"/> </xs:complexType> Za pomocą typów złożonych można definiować elementy zawierające podelementy i (lub) atrybuty. Definicje atrybutów w typach złożonych zawierających podelementy muszą wystąpić po definicjach podelementów. () Języki opisu dokumentu - XML Schema 9 listopada 2012 24 / 59 Definiowanie własnych typów - zastosowanie () Języki opisu dokumentu - XML Schema 9 listopada 2012 25 / 59 Definiowanie własnych typów - zastosowanie Definiowanie własnych typów ma sens, gdy wykorzystujemy je do określania zawartości wielu elementów. () Języki opisu dokumentu - XML Schema 9 listopada 2012 25 / 59 Definiowanie własnych typów - zastosowanie Definiowanie własnych typów ma sens, gdy wykorzystujemy je do określania zawartości wielu elementów. Jeśli dany typ ma być wykorzystany tylko w jednym miejscu, prościej jest zadeklarować zawartość tego atrybutu lub elementu wprost. Takie deklaracje nazywane są deklaracjami lokalnymi. () Języki opisu dokumentu - XML Schema 9 listopada 2012 25 / 59 Aspekty - rodzaje Aspekty służą do charakteryzowania dopuszczalnych wartości elementów i atrybutów. () Języki opisu dokumentu - XML Schema 9 listopada 2012 26 / 59 Aspekty - rodzaje Aspekty służą do charakteryzowania dopuszczalnych wartości elementów i atrybutów. Rodzaje aspektów określające długość; ograniczające wartości liczbowe; aspekt definiujący wzorce wartości; aspekt określający listę dopuszczalnych wartości (wyliczeniowy); aspekt określający sposób traktowania białych znaków. () Języki opisu dokumentu - XML Schema 9 listopada 2012 26 / 59 Aspekty określające długość () Języki opisu dokumentu - XML Schema 9 listopada 2012 27 / 59 Aspekty określające długość length określa dokładną liczbę znaków lub pozycji listy; () Języki opisu dokumentu - XML Schema 9 listopada 2012 27 / 59 Aspekty określające długość length określa dokładną liczbę znaków lub pozycji listy; maxLength określa maksymalną liczbę znaków lub pozycji listy; musi być większa lub równa 0; () Języki opisu dokumentu - XML Schema 9 listopada 2012 27 / 59 Aspekty określające długość length określa dokładną liczbę znaków lub pozycji listy; maxLength określa maksymalną liczbę znaków lub pozycji listy; musi być większa lub równa 0; minLength określa minimalną liczbę znaków lub pozycji listy; musi być większa lub równa 0. () Języki opisu dokumentu - XML Schema 9 listopada 2012 27 / 59 Aspekty określające długość - przykłady Typ haslo - dokładnie 8 znaków <xs:simpleType name="haslo"> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> Typ haslo - od 5 do 8 znaków <xs:simpleType name="haslo"> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> () Języki opisu dokumentu - XML Schema 9 listopada 2012 28 / 59 Aspekty ograniczające wartości liczbowe Dla typów pochodnych od integer : () Języki opisu dokumentu - XML Schema 9 listopada 2012 29 / 59 Aspekty ograniczające wartości liczbowe Dla typów pochodnych od integer : maxExclusive definiuje górną granicę dla wartości numerycznych (wartość musi być mniejsza); () Języki opisu dokumentu - XML Schema 9 listopada 2012 29 / 59 Aspekty ograniczające wartości liczbowe Dla typów pochodnych od integer : maxExclusive definiuje górną granicę dla wartości numerycznych (wartość musi być mniejsza); maxInclusive definiuje górną granicę dla wartości numerycznych (wartość musi być mniejsza lub równa); () Języki opisu dokumentu - XML Schema 9 listopada 2012 29 / 59 Aspekty ograniczające wartości liczbowe Dla typów pochodnych od integer : maxExclusive definiuje górną granicę dla wartości numerycznych (wartość musi być mniejsza); maxInclusive definiuje górną granicę dla wartości numerycznych (wartość musi być mniejsza lub równa); minExclusive definiuje dolną granicę dla wartości numerycznych (wartość musi być większa); () Języki opisu dokumentu - XML Schema 9 listopada 2012 29 / 59 Aspekty ograniczające wartości liczbowe Dla typów pochodnych od integer : maxExclusive definiuje górną granicę dla wartości numerycznych (wartość musi być mniejsza); maxInclusive definiuje górną granicę dla wartości numerycznych (wartość musi być mniejsza lub równa); minExclusive definiuje dolną granicę dla wartości numerycznych (wartość musi być większa); minInclusive definiuje dolną granicę dla wartości numerycznych (wartość musi być większa lub równa). () Języki opisu dokumentu - XML Schema 9 listopada 2012 29 / 59 Aspekty ograniczające wartości liczbowe Dla typów pochodnych od decimal: () Języki opisu dokumentu - XML Schema 9 listopada 2012 30 / 59 Aspekty ograniczające wartości liczbowe Dla typów pochodnych od decimal: totalDigits określa dokładną liczbę dopuszczalnych cyfr; musi być większa lub równa 0; () Języki opisu dokumentu - XML Schema 9 listopada 2012 30 / 59 Aspekty ograniczające wartości liczbowe Dla typów pochodnych od decimal: totalDigits określa dokładną liczbę dopuszczalnych cyfr; musi być większa lub równa 0; fractionDigits określa dopuszczalną liczbę miejsc dziesiętnych; musi być większa lub równa 0. () Języki opisu dokumentu - XML Schema 9 listopada 2012 30 / 59 Aspekty ograniczające wartości liczbowe - przykłady Typ wiek - wartość od 1 (włącznie )do 150 (włącznie) <xs:simpleType name="typ_wiek"> <xs:restriction base="xs:integer"> <xs:minInclusive value="1"/> <xs:maxInclusive value="150"/> </xs:restriction> </xs:simpleType> Typ waluta - dwa miejsca po przecinku, wartość mniejsza lub równa 999.99 <xs:simpleType name="waluta"> <xs:restriction base="xs:decimal"> <xs:totalDigits value="5"/> <xs:fractionDigits value="2" fixed="true"/> </xs:restriction> </xs:simpleType> () Języki opisu dokumentu - XML Schema 9 listopada 2012 31 / 59 Aspekt definiujący wzorce wartości () Języki opisu dokumentu - XML Schema 9 listopada 2012 32 / 59 Aspekt definiujący wzorce wartości pattern określa dokładny ciąg znaków dla wartości dopuszczalnych. () Języki opisu dokumentu - XML Schema 9 listopada 2012 32 / 59 Aspekt definiujący wzorce wartości pattern określa dokładny ciąg znaków dla wartości dopuszczalnych. Wzorce stosowane w tym aspekcie muszą być wyrażeniami regularnymi. () Języki opisu dokumentu - XML Schema 9 listopada 2012 32 / 59 Aspekt pattern <xs:element name="litera"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie zdefiniowany jest element o nazwie litera, dla którego jedyną dopuszczalną wartością jest DOKŁADNIE JEDNA mała litera od a do z. () Języki opisu dokumentu - XML Schema 9 listopada 2012 33 / 59 Aspekt pattern <xs:element name="inicjaly"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie zdefiniowany jest element o nazwie inicjaly, dla którego jedyną dopuszczalną wartością jest ciąg trzech wielkich liter od A do Z. () Języki opisu dokumentu - XML Schema 9 listopada 2012 34 / 59 Aspekt pattern <xs:element name="inicjaly"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie zdefiniowany jest element o nazwie inicjaly, dla którego jedyną dopuszczalną wartością jest ciąg trzech wielkich lub małych liter od a do z. () Języki opisu dokumentu - XML Schema 9 listopada 2012 35 / 59 Aspekt pattern <xs:element name="wybor"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie zdefiniowany jest element o nazwie wybor, dla którego jedyną dopuszczalną wartością jest jedna z liter x, y lub z. () Języki opisu dokumentu - XML Schema 9 listopada 2012 36 / 59 Aspekt pattern <xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie zdefiniowany jest element o nazwie prodid, dla którego jedyną dopuszczalną wartością jest ciąg pięciu cyfr, z których każda jest z zakresu od 0 do 9. () Języki opisu dokumentu - XML Schema 9 listopada 2012 37 / 59 Aspekt pattern <xs:element name="litera"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie zdefiniowany jest element o nazwie litera, dla którego dopuszczalną wartością jest zero lub więcej małych liter z zakresu od a do z. () Języki opisu dokumentu - XML Schema 9 listopada 2012 38 / 59 Aspekt pattern <xs:element name="litera"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie zdefiniowany jest element o nazwie litera, dla którego dopuszczalną wartością jest jedna lub więcej par liter. Każda para składa się z małej litery, po której następuje duża litera. Przykładem prawidłowej wartości może być: sToP. () Języki opisu dokumentu - XML Schema 9 listopada 2012 39 / 59 Aspekt pattern <xs:element name="plec"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="kobieta|mezczyzna"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie zdefiniowany jest element o nazwie plec, dla którego jedynymi dopuszczalnymi wartościami są kobieta lub mezczyzna. () Języki opisu dokumentu - XML Schema 9 listopada 2012 40 / 59 Aspekt pattern <xs:element name="haslo"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie zdefiniowany jest element o nazwie haslo. Dopuszczalną wartością jest ciąg dokładnie ośmiu znaków, z których każdy może być małą lub dużą literą od a do z lub cyfra z zakresu od 0 do 9. () Języki opisu dokumentu - XML Schema 9 listopada 2012 41 / 59 Aspekt określający listę dopuszczalnych wartości enumeration definiuje listę dopuszczalnych wartości; Przykład <xs:element name="samochod"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie jedynymi wartościami dopuszczalnymi dla elementu samochod są: Audi, Golf i BMW. () Języki opisu dokumentu - XML Schema 9 listopada 2012 42 / 59 Aspekt whiteSpace () Języki opisu dokumentu - XML Schema 9 listopada 2012 43 / 59 Aspekt whiteSpace whiteSpace określa sposób postępowania z ”białymi znakami”. () Języki opisu dokumentu - XML Schema 9 listopada 2012 43 / 59 Aspekt whiteSpace whiteSpace określa sposób postępowania z ”białymi znakami”. Możliwe wartości dla aspektu whiteSpace: preserve; replace; collapse. () Języki opisu dokumentu - XML Schema 9 listopada 2012 43 / 59 Aspekt whiteSpace Wartość preserve <xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie wartość dla whiteSpace jest ustawiona na preserve, co oznacza, że ”białe znaki” nie zostaną usunięte. () Języki opisu dokumentu - XML Schema 9 listopada 2012 44 / 59 Aspekt whiteSpace Wartość replace <xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie wartość dla whiteSpace jest ustawiona na replace, co oznacza, że wszystkie ”białe znaki” zostaną zastąpione spacjami. () Języki opisu dokumentu - XML Schema 9 listopada 2012 45 / 59 Aspekt whiteSpace Wartość collapse <xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element> W powyższym przykładzie wartość dla whiteSpace jest ustawiona na collapse, co oznacza, że wszystkie ”białe znaki” zostaną usunięte i zastąpione spacjami a wielokrotne spacje zastąpione pojedynczą spacją. () Języki opisu dokumentu - XML Schema 9 listopada 2012 46 / 59 Łączenie aspektów () Języki opisu dokumentu - XML Schema 9 listopada 2012 47 / 59 Łączenie aspektów Aspekty mogą byc łączone przez podanie kilku podelementów z poszczególnymi aspektami. () Języki opisu dokumentu - XML Schema 9 listopada 2012 47 / 59 Łączenie aspektów Aspekty mogą byc łączone przez podanie kilku podelementów z poszczególnymi aspektami. Aspekty pattern oraz enumeration są łączone za pomocą logicznego ”lub”. () Języki opisu dokumentu - XML Schema 9 listopada 2012 47 / 59 Łączenie aspektów Aspekty mogą byc łączone przez podanie kilku podelementów z poszczególnymi aspektami. Aspekty pattern oraz enumeration są łączone za pomocą logicznego ”lub”. Pozostałe aspekty są łączone za pomocą logicznego ”i”. () Języki opisu dokumentu - XML Schema 9 listopada 2012 47 / 59 Łączenie aspektów Aspekty mogą byc łączone przez podanie kilku podelementów z poszczególnymi aspektami. Aspekty pattern oraz enumeration są łączone za pomocą logicznego ”lub”. Pozostałe aspekty są łączone za pomocą logicznego ”i”. Można stosować wiele aspektów tego samego rodzaju równocześnie. () Języki opisu dokumentu - XML Schema 9 listopada 2012 47 / 59 Blokowanie wartości aspektów W definicjach typów można blokować wartości aspektów tak, aby nie można było ich zmieniać przy deklaracji konkretnych elementów. Służy do tego atrybut fixed. Typ waluta - dwa miejsca po przecinku, wartość mniejsza lub równa 999.99 <xs:simpleType name="waluta"> <xs:restriction base="xs:decimal"> <xs:totalDigits value="5"/> <xs:fractionDigits value="2" fixed="true"/> </xs:restriction> </xs:simpleType> Korzystając z typu waluta (np. przy wyprowadzaniu typu pochodnego) nie wolno użyć aspektu fractionDigits. () Języki opisu dokumentu - XML Schema 9 listopada 2012 48 / 59 Opcjonalność atrybutów Dany atrybut może wystąpić w elemencie raz lub wcale. Atrybuty domyślnie są opcjonalne. Aby narzucić warunek wymagalności atrybutu należy użyć atrybutu use w elemencie definiującym dany atrybut i nadać mu wartość required: Przykład <xs:attribute name="jezyk" type="xs:string" use="required"/> () Języki opisu dokumentu - XML Schema 9 listopada 2012 49 / 59 Liczba wystąpień elementu () Języki opisu dokumentu - XML Schema 9 listopada 2012 50 / 59 Liczba wystąpień elementu W XML Schema można określać minimalną i maksymalną liczbę wystąpień elementu. Służą do tego atrybuty minOccurs i maxOccurs. () Języki opisu dokumentu - XML Schema 9 listopada 2012 50 / 59 Liczba wystąpień elementu W XML Schema można określać minimalną i maksymalną liczbę wystąpień elementu. Służą do tego atrybuty minOccurs i maxOccurs. Wartościami domyślnymi dla atrybutów minOccurs i maxOccurs jest 1. () Języki opisu dokumentu - XML Schema 9 listopada 2012 50 / 59 Liczba wystąpień elementu W XML Schema można określać minimalną i maksymalną liczbę wystąpień elementu. Służą do tego atrybuty minOccurs i maxOccurs. Wartościami domyślnymi dla atrybutów minOccurs i maxOccurs jest 1. Jeśli liczba wystąpień elementu jest nieograniczona, to atrybutowi maxOccurs należy nadać wartość unbounded. () Języki opisu dokumentu - XML Schema 9 listopada 2012 50 / 59 Liczba wystąpień elementu W XML Schema można określać minimalną i maksymalną liczbę wystąpień elementu. Służą do tego atrybuty minOccurs i maxOccurs. Wartościami domyślnymi dla atrybutów minOccurs i maxOccurs jest 1. Jeśli liczba wystąpień elementu jest nieograniczona, to atrybutowi maxOccurs należy nadać wartość unbounded. Tylko niektóre kombinacje wartości dla atrybutów minOccurs i maxOccurs mają swoje odpowiedniki w DTD. () Języki opisu dokumentu - XML Schema 9 listopada 2012 50 / 59 Liczba wystąpień elementu - przykład <xs:element name="osoba"> <xs:complexType> <xs:sequence> <xs:element name="imie_nazwisko" type="xs:string"/> <xs:element name="imie_dziecka" type="xs:string" minOccurs="0" maxOccurs="10"/> </xs:sequence> </xs:complexType> </xs:element> W powyższym przykładzie element imie dziecka może nie wystąpić ani razu i może wystąpić maksymalnie 10 razy. () Języki opisu dokumentu - XML Schema 9 listopada 2012 51 / 59 Składacze Składacze to elementy wyznaczające kolejność występowania podelementów. Rodzaje składaczy sequence; choice; all. () Języki opisu dokumentu - XML Schema 9 listopada 2012 52 / 59 Składacz sequence Użycie składacza sequence oznacza, że elementy-dzieci muszą występować w ściśle określonej kolejności. Przykład zastosowania <xs:element name="osoba"> <xs:complexType> <xs:sequence> <xs:element name="imie" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> () Języki opisu dokumentu - XML Schema 9 listopada 2012 53 / 59 Składacz choice Użycie składacza choice oznacza, że pojawić się może tylko jeden z elementów-dzieci. Przykład zastosowania <xs:element name="osoba"> <xs:complexType> <xs:choice> <xs:element name="pracownik" type="employee"/> <xs:element name="student" type="member"/> </xs:choice> </xs:complexType> </xs:element> () Języki opisu dokumentu - XML Schema 9 listopada 2012 54 / 59 Składacz choice - wymuszenia występowania <xs:element name="HistoriaSpotkanDwochDruzyn"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="wygrana" type="xs:string"/> <xs:element name="remis" type="xs:string"/> <xs:element name="przegrana" type="xs:string"/> </xs:choice> </xs:complexType> </xs:element> () Języki opisu dokumentu - XML Schema 9 listopada 2012 55 / 59 Składacz all Użycie składacza all oznacza, że elementy-dzieci mogą występować w dowolnej kolejności oraz, że każdy element-dziecko może pojawić się tylko raz. Przykład zastosowania <xs:element name="osoba"> <xs:complexType> <xs:all> <xs:element name="imie" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:all> </xs:complexType> </xs:element> () Języki opisu dokumentu - XML Schema 9 listopada 2012 56 / 59 Składacz all - ograniczenia () Języki opisu dokumentu - XML Schema 9 listopada 2012 57 / 59 Składacz all - ograniczenia W skład all mogą wchodzić jedynie pojedyncze elementy. () Języki opisu dokumentu - XML Schema 9 listopada 2012 57 / 59 Składacz all - ograniczenia W skład all mogą wchodzić jedynie pojedyncze elementy. Podelementy w all nie mogą się powtarzać. () Języki opisu dokumentu - XML Schema 9 listopada 2012 57 / 59 Składacz all - ograniczenia W skład all mogą wchodzić jedynie pojedyncze elementy. Podelementy w all nie mogą się powtarzać. Podelementy w all muszą mieć maksymalną ilość wystąpieć równą 1, zaś minimalną ilość wystąpień równą 0 lub 1. () Języki opisu dokumentu - XML Schema 9 listopada 2012 57 / 59 Składacz all - ograniczenia W skład all mogą wchodzić jedynie pojedyncze elementy. Podelementy w all nie mogą się powtarzać. Podelementy w all muszą mieć maksymalną ilość wystąpieć równą 1, zaś minimalną ilość wystąpień równą 0 lub 1. Składacz all nie może być zagnieżdżony w innych składaczach. () Języki opisu dokumentu - XML Schema 9 listopada 2012 57 / 59 Składacz all - ograniczenia W skład all mogą wchodzić jedynie pojedyncze elementy. Podelementy w all nie mogą się powtarzać. Podelementy w all muszą mieć maksymalną ilość wystąpieć równą 1, zaś minimalną ilość wystąpień równą 0 lub 1. Składacz all nie może być zagnieżdżony w innych składaczach. Uwaga! Nie wszystkie aplikacje zgodne z XML Schema mają zaimplementowany składacz all. () Języki opisu dokumentu - XML Schema 9 listopada 2012 57 / 59 Zagnieżdżanie składaczy Sequence wewnątrz choice - przykład <xs:element name="kontrahent"> <xs:complexType> <xs:choice> <xs:element name="firma" type="xs:string"/> <xs:sequence> <xs:element name="imie" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> </xs:choice> </xs:complexType> </xs:element> () Języki opisu dokumentu - XML Schema 9 listopada 2012 58 / 59 Choice wewnątrz sequence - przykład <xs:element name="osoba"> <xs:complexType> <xs:sequence> <xs:element name="imie" <xs:element name="nazwisko" <xs:choice> <xs:element name="Pesel" <xs:element name="NIP" <xs:element name="nrDowodu" <xs:element name="nrPaszportu" <xs:element name="nrLegitymacji" type="xs:string"/> type="xs:string"/> type="xs:string"/> type="xs:string"/> type="xs:string"/> type="xs:string"/> type="xs:string" maxOccurs="5"/> </xs:choice> <xs:element name="wiek" type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element> () Języki opisu dokumentu - XML Schema 9 listopada 2012 59 / 59