przykładowy dokument xml - ii.pwr.edu.plpietranik/documents/isi/wyklad_5.pdf · dtd - wady (2) •...

36
Przykładowy dokument XML

Upload: vokien

Post on 01-Mar-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

Przykładowy dokument XML

DTD - wady• Ograniczona kontrola nad strukturą dokumentów.

• Zbyt „wysokopoziomowe” typy danych: liczby, daty są zawsze reprezentowane jako tekst!

• Bardzo ogólne metody definiowania częstości wystąpień. Aby określić, że zwrotka wiersza może mieć od 4 do 8 wersów musimy ją zdefiniować tak:

<!ELEMENT zwrotka (wers, wers, wers, wers, wers?, wers?, wers?, wers?)>

DTD - wady (2)

• Mało „obiektowe” definicje. Chcielibyśmy np. zdefiniować zwrotkę w jednym DTD, a następnie rozszerzyć ją w innym bez przepisywania całej definicji.

• Inna składnia

Przykładowy schemat XML

Najważniejsze dokumenty• 1999: dokument W3C opisujący wymagania stawiane

przed nowym formatem: mechanizmy tworzenia struktury, typy proste i reguły przetwarzania

• 2001: XML Schema staje się oficjalną rekomendacją W3C: • XML Schema Part 0: Primer • XML Schema Part 1: Structures • XML Schema Part 2: Datatypes

• 2004: aktualne, drugie wydanie specyfikacji

W wielkim skrócie• XML Schema to rozwinięcie pomysłu DTD

• Do definicji typu dokumentu w formacie XML Schema wykorzystywana jest standardowa składnia XML

• Składniki definicji należą do przestrzeni nazw XML Schema http://www.w3.org/2001/XMLSchema

• Cała definicja zawarta jest w elemencie głównym <xsd:schema>, węzły i atrybutów definiuje się za pomocą znaczników <xsd:element> i <xsd:attribute>

Typy danych

• Typy proste (ang. simple type) odpowiadają zawartości bez wewnętrznej struktury (bez podelementów ani atrybutów). Mogą być przypisywane elementom i atrybutom.

• Typy złożone (ang. complex type) mogą mieć zawartość elementową i wprowadzać atrybuty.

Typy proste

• Typami prostymi są wszystkie typy wbudowane (np. liczba, napis, bool), jak również typy stworzone na ich bazie.

<xsd:element name="definicja" type=„xsd:string"/>

• W DTD odpowiada to definicji:

<!ELEMENT definicja (#PCDATA)>

Typy wbudowane• string –– ciąg znaków,

• boolean — wartość logiczna (true, false, 0 lub 1),

• decimal — liczby rzeczywiste o określonej długości

• float — 32-bitowa liczba rzeczywista

• double — 64-bitowa liczba rzeczywista

• normalizedString –– napis, w którym każdy biały znak jest podczas przetwarzania zastępowany przez spację,

Typy wbudowane (2)• token — napis, w którym każdy ciąg białych znaków jest

podczas przetwarzania zastępowany przez jedną spację, zaś białe znaki na początku i końcu są usuwane,

• hexBinary — dane binarne zapisane szesnastkowo

• integer — liczba całkowita z przedziału od -126789 do 126789,

• date, time, dateTime, duration, gYearMonth, ...

• ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENS, CDATA, language, normalizedString, token, uriReference...

Drzewo typów prostych

Typy pierwotne • Typ xsd:anyType może być użyty jawnie do

definiowania zawartości elementu:

<xsd:element name="fragmentKodu" type="xsd:anyType"/>

• Taka definicja zezwala na dowolną zawartość znakową i elementową.

• Podobną funkcję pełni typ xsd:anySimpleType, który dopuszcza tylko zawartość o typie pierwotnym

Własne typy proste - fasety• minInclusive, maxInclusive, minExclusive, maxExclusive zawężają zakres dozwolonych wartości liczbowych (wartości minimalna i maksymalna, przedział otwarty i domknięty)

• pattern — zgodność z podanym wyrażeniem regularnym

• enumeration — typ wyliczeniowy

• list — listy wartości typu prostego (jak NMTOKENS)

• union — suma teoriomnogościowa wartości kilku typów,

• length, minLength, maxLength — odpowiednio wymagana, minimalna lub maksymalna długość napisu lub listy

Własne typy proste

• Nowy typ prosty tworzymy poprzez użycie elementu <xsd:simpleType>

• Skorzystanie z fasety wymaga zastosowania w definicji elementu znacznika <xsd:restriction> ograniczającego typ wskazany atrybutem base lub podany w treści tego elementu.

Własne typy proste

Własne typy proste

Własne typy proste

Typ wyliczeniowy

Ograniczenia• Zakres wartości wyprowadzonego typu prostego

musi być podzbiorem zakresu wartości typu bazowego.

Listy wartości

Łączenie typów

Unie - łączenie typów

• Unia to połączenie zakresów wartości kilku typów w jeden nowy zakres. Instancja może mieć przypisaną wartość należącą do dowolnego z połączonych zakresów wartości.

Unia - przykład

Unia - przykład

Typy anonimowe i nazwane

Organizacja przestrzeni nazw

• Schemat zapisuje się przy pomocy minimum jednego dokumentu schematu.

• Schemat deklaruje nazwy należące do zero lub więcej przestrzeni nazw.

Powiązanie schematu z dokumentem

• Powiązanie schematu z dokumentem składa się z trzech elementów:

• deklaracji przestrzeni nazw dla egzemplarza dokumentu zgodnego z XML Schema: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

• powiązań listy używanych przestrzeni nazw z URL-ami schematów mających posłużyć do walidacji elementów, których nazwy należą do używanych w dokumencie przestrzeni nazw — w atrybucie xsi:schemaLocation

• powiązania schematu dla elementów nie należących do żadnej przestrzeni nazw — poprzez podanie URL-a schematu w atrybucie xsi:noNamespaceSchemaLocation

Nazwy kwalifikowane i niekwalifikowane

• Nazwy kwalifikowane (ang. qualified) należą do pewnej przestrzeni nazw. Mogą być poprzedzone prefiksem lub należeć do domyślnej przestrzeni nazw.

• Nazwy niekwalifikowane (ang. unqualified) nie należą do żadnej przestrzeni nazw.

Dołączenie schematu do dokumentu

Przestrzenie nazw - prefiksy

Dokumenty schematów• Schemat (struktura logiczna) może być zapisany w

wielu dokumentach schematów (plikach .xsd)

• Specyfikacja XML Schema określa trzy metody łączenia dokumentów schematów:

• include

• import

• redefine

<xsd:include>

• Metoda include dołącza dokument schematu do docelowej przestrzeni nazw głównego dokumentu schematu.

• Dołączany dokument musi mieć taką samą docelową przestrzeń nazw jak dokument główny lub nie mieć w ogóle docelowej przestrzeni nazw.

<xsd:include>

<xsd:redefine> i <xsd:import>Metoda redefine dołącza dokument schematu do docelowej przestrzeni nazw głównego dokumentu schematu z możliwością przedefiniowania komponentów:

<xsd:redefine schemaLocation="redefine.xsd"/>

Metoda import dołącza dokument schematu z innej przestrzeni nazw (inną przestrzeń nazw):

<xsd:import schemaLocation="import.xsd” namespace="http://www.example.org/firmy"/>

<xsd:import>