Projektowanie systemów informatycznych wszystkie typu tekstowego (PCDATA).
1.4. XML Schema
Metajęzyk XML Schema bazuje na składni XML i jest o wiele bogatszy od DTD. Służy do definiowania struktury dokumentów XML i pozwala na definiowanie typów danych. XML Schema zaprojektowano pod kątem współpracy z mechanizmem przestrzeni nazw. W schemacie (dokumencie XML Schema) wszystkie elementy definiujące strukturę dokumentu noszą nazwy o prefiksie xsd (ang. XML Schema Definitiori). Prefiks jest odwzorowywany na identyfikator przestrzeni nazw postaci : http://www.w3.org/2001/XMLSchema. Adres ten wskazuje lokalizację specyfikacji XML Schema rekomendowaną przez organizację W3C.
Elementem głównym schematu jest xsd: schema. Wewnątrz niego mogą występować inne elementy, atrybuty i typy danych. Jeżeli dokument XML posiada zdefiniowane przestrzenie nazw, to należy je określić w schemacie za pomocą atrybutów elementu głównego. Dzięki temu możemy odróżnić elementy XML wchodzące w skład dokumentu XML, od elementów zawartych w specyfikacji schematu. Atrybut targetNamespace definiuje przestrzeń nazw dla dokumentów zgodnych z regułami danego schematu.
Specyfikacja XML Schema w przeciwieństwie do DTD zawiera duży zbiór predefiniowanych typów podstawowych (np. daty, dodatnie liczby całkowite). Istnieje również mechanizm definiowania własnych typów, które można wykorzystać do określenia typu wartości danego elementu lub atrybutu. Nowy typ musi wywodzić się z bazowego (predefiniowanego lub innego wcześniej utworzonego typu prostego), który jest ograniczony przez pewne kryteria. Nie możemy oczywiście zastosować do wszystkich typów każdego kryterium. Pojęcie liczby cyfr dziesiętnych po przecinku nie ma sensu na przykład dla dat, napisów. Kryteria charakteryzują typy danych i posiadają następujące cechy:
• minLength, maxLength, length - minimalna, maksymalna i dokładna liczba znaków w zapisie wartości
• enumeration - lista wszystkich możliwych wartości
• pattem - wzorzec wyrażenia regularnego dla wartości
• minExclusive, minlnclusive, maxlnclusive, maxExclusive - dopuszczalny zakres wartości liczbowych
• totalDigits - ilość cyfr dziesiętnych w zapisie wartości liczbowych
• fractionDigits - ilość cyfr dziesiętnych po przecinku
• whiteSpace - sposób interpretacji białych znaków w zapisie wartości
Przykłady definicji typów prostych:
<xsd:simpleType name="typ_kod_pocztowy">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{2} - \d{3}"/>
</ xsd:restriction>
<xsd:simpleType>
Fragment powyższego schematu definiuje typ prosty dla elementu kod_pocztowy. Nazwą typu jest typ_kod_pocztowy. Bazuje on na typie napisowym (string) i jest ograniczony przez wzorzec dwóch cyfr, myślnika i trzech cyfr.
Michał Bleja
Uniwersytet Łódzki