przykładowy dokument xml - ii.pwr.edu.plpietranik/documents/isi/wyklad_5.pdf · dtd - wady (2) •...
TRANSCRIPT
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
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...
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.
Ograniczenia• Zakres wartości wyprowadzonego typu prostego
musi być podzbiorem zakresu wartości typu bazowego.
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.
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.
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: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"/>