1 Definiowanie typów dokumentów Część 2. XML Schema
2 Dlaczego DTD nie wystarcza?Zastosowania w integracji aplikacji – struktury danych: przeniesienie zadania sprawdzania poprawności z tworzonej aplikacji na narzędzie walidujące daje spore oszczędności. 60% tworzonego kodu dotyczy weryfikacji poprawności danych. Roger L. Costello, XML Schema Tutorial Cechy DTD: jedynie podstawowa kontrola nad strukturą dokumentów, bardzo ogólne metody definiowania częstości wystąpień, mało „obiektowe”, nierozszerzalne modele struktury. Taką kontrolę poprawności możemy oczywiście zaimplementować sami w kodzie naszej aplikacji (ewentualnie parametryzując aplikację przy pomocy atrybutów #FIXED), jest to jednak dość pracochłonne. Dobrze byłoby zrzucić walidację na parser XML. Standard XML Schema pozwala na definiowanie struktur dokumentów z dużo bardziej niż w DTD zaawansowaną kontrolą zawartości. Definiowanie typów dokumentów – część 2: XML Schema
3 DTD – XML Schema Wywodzi się z SGML-a Zaprojektowany na potrzeby XML-aSpecyficzna składnia Składnia XML 10 typów danych 41+ typów danych Brak kontroli tekstowej zawartości elementów Zaawansowana kontrola tekstowej zawartości elementów Typowy mieszany model zawartości Możliwość definiowania własnych typów danych. Definiowanie typów dokumentów – część 2: XML Schema
4 Status XML Schema 15 lutego 1999: Dokument W3C opisujący wymagania stawiane przed nowym formatem: mechanizmy tworzenia struktury, typy proste, reguły przetwarzania. 2 maja 2001: XML Schema staje się oficjalną rekomendacją W3C: XML Schema Part 0: Primer, XML Schema Part 1: Structures, XML Schema Part 2: Datatypes. Obecnie: trwają prace nad wymaganiami do wersji 1.1 XML Schema. Przestrzeń nazw XML Schema: Definiowanie typów dokumentów – część 2: XML Schema
5 Definiowanie elementów i atrybutów
6 Określanie typu elementu/atrybutuAtrybut type:
7 Typy proste Wbudowane typy proste: string, boolean, integer, float,dateTime, ID, IDREF, CDATA, ... Typy proste definiują zbiory wartości atomowych (tzn. bez wewnętrznej struktury XML). Są nimi wszystkie typy wbudowane (np. liczba, napis, wartość logiczna), jak również typy stworzone na ich bazie (o tym później). Używa się ich do określania dopuszczalnych wartości atrybutów i zawartości elementów. Niektóre typy proste (ID, IDREF, CDATA) są zastrzeżone tylko dla atrybutów. Definiowanie typów dokumentów – część 2: XML Schema
8 Typy proste Tworzenie własnych typów prostych przy pomocy aspektów (facets): minInclusive, maxInclusive, minExclusive, maxExclusive, pattern, enumeration, list, union, length, minLength, maxLength.
9 Przykłady Lista wartości: Wyrażenia regularne:
10 Typy złożone Możliwość definiowania typów złożonych:sequence, choice, group, all. Kontrola użycia podelementów: minOccurs, maxOccurs. Kontrola użycia atrybutów: atrybut use o dopuszczalnych wartościach: required, optional lub prohibited. sequence - sekwencja wystąpień podelementów. chioce – alternatywa podelementów. group – grupowanie podelementów (nawiasy). all – wszystkie elementy muszą wystąpić, ale w dowolnej kolejności (konstrukcja dostępna w SGML DTD w postaci operatora &, lecz wycofana w XML DTD dla uproszczenia przetwarzania). Atrybuty minOccurs i maxOccurs określają liczby wystąpień elementów. Mogą one przyjmować wartości całkowite oraz specjalną wartość unbounded (nieograniczona liczba wystąpień). Definiowanie typów dokumentów – część 2: XML Schema
11 Kontrola użycia elementów i atrybutów
12 Typ złożony, ale prosty
13 Model mieszany w XML SchemaMożliwość kontroli ilości i kolejności podelementów:
14 Typ zawartości jako samodzielny bytOddzielenie deklaracji elementu od typu zawartości: typy anonimowe:
15 Inne możliwości XML SchemaDziedziczenie typów: rozszerzenie typu bazowego, zawężenie typu bazowego, typy abstrakcyjne. Grupy zamiennych elementów (substitution groups): możliwość zamiennego użycia elementów z grupy w dokumentach, przykładowe zastosowanie: schemat wielojęzyczny. Zaawansowana kontrola referencji: key – keyref: dowolna ilość kluczy: definiowane przy pomocy ścieżek XPath, wartości w ramach klucza muszą być unikatowe; referencja odwołuje się do konkretnego klucza: wartości referencji musi odpowiadać wartość klucza. Mechanizm typów pozwala znakomicie zmodularyzować schematy o skomplikowanej strukturze dzięk8i możliwości dziedziczenia, wzorowanej na dziedziczeniu dostępnym w obiektowych językach programowania. Mamy do dyspozycji takie konstrukcje, jak: typy abstrakcyjne (których nie można bezpośrednio przypisać do elementu, służą jedynie do dziedziczenia z nich konkretnych typów) czy konstrukcja final, zabraniająca dziedziczenia z danego typu. Dzięki grupom zamiennych elementów można np. przygotowywać wielojęzyczne schematy przeznaczone dla zastosowań międzynarodowych. Każdy element może mieć w takim schemacie wiele nazw w różnych językach. Kontrola referencji dostępna w DTD, przy pomocy atrybutów ID i IDREF, ma spore ograniczenia. Nie można zdefiniować wielu niezależnych zbiorów ID i odwoływać się do wybranego – kontrola obejmuje jedynie, czy IDREF wskazuje na dowolny ID w dokumencie. Klucze w XML Schema adresują ten problem. Dodatkowo, wartości klucza mogą być dowolne, mogą nawet być kombinacjami wartości kilku elementów i/lub atrybutów. Definiowanie typów dokumentów – część 2: XML Schema
16 Rozszerzanie typów
17 Czego nie można zamodelować w XML Schema?Brak walidacji kontekstowej, np.: zawartość elementu cena-netto jest mniejsza lub równa od zawartości elementu cena-brutto, jeżeli wartością atrybutu sposób-transportu jest powietrze, to element środek-transportu ma zawartość samolot lub balon. Metody walidacji kontekstowej: zaprogramowana w kodzie aplikacji, transformacja XSLT, Schematron: definiowanie własności, jakie ma spełniać dokument, komunikaty o błędach poprawności. Transformacje XSLT w ogólności służą do przekształcania dokumentu XML w inny dokument XML, HTML lub tekstowy. Można je jednak także wykorzystać do walidacji – tworząc transformację, która generuje dokument zawierający np. listę komunikatów o błędach walidacji (jeżeli dokument jest pusty, walidacja przebiegła pomyślnie). Można także wykorzystać dedykowany język Schematron, w którym zapisuje się asercje dotyczące dokumentu XML, tzn. warunki, które muszą być spełnione w pewnym kontekście. Darmowe narzędzie o tej samej nazwie pozwala przekształcać zbiory reguł Schematronowych do postaci transformacji XSLT. Definiowanie typów dokumentów – część 2: XML Schema
18 Schematron Język oparty na własnościach (asercjach), a nie na gramatyce: łatwe wyrażanie reguł walidacji kontekstowej, trudne, nieintuicyjne modelowanie struktury dokumentu, użyteczny w połączeniu ze zwykłą DTD lub schematem XML Schema. Status: obecna wersja: 1.5, rozpoczęty proces normalizacji (ISO/IEC ) dostępny draft specyfikacji ISO Schematron. Implementacja referencyjna: przekształcenie (generator) XSLT, dla zadanego schematu Schematronowego, generuje XSLT walidujący dokumenty. Dostępne kilkanaście implementacji. Definiowanie typów dokumentów – część 2: XML Schema
19 Język Schematron Własności ewaluowane w kontekście konkretnego węzła dokumentu: assert – własność, która musi być spełniona, report – własność, której spełnienie oznacza błąd. Określanie kontekstu i własności: wyrażenia XPath. Przykład:
20 RELAX NG REgular LAnguage description for XML – New Generation:składnia XML-owa, „bliska opisowi struktury w języku naturalnym”, wspiera typy danych (np. XML Schema Datatypes), atrybuty opisywane (prawie) tak samo, jak elementy, prosta technika modularyzacji: define / ref, model przetwarzania oparty na wyrażeniach regularnych. RELAX NG a inne języki: dostępne konstrukcje z SGML DTD, usunięte w XML DTD: elementy wymagane, ale bez określonego porządku, model mieszany – więcej możliwości; pozwala opisać niedostępne w XML Schema: niejednoznaczne i niedeterministyczne modele zawartości, modele zawartości wrażliwe na kontekst. Definiowanie typów dokumentów – część 2: XML Schema
21 Przykład DTD: RELAX NG: ]> RELAX NG:
22 Przykład – niedeterminizmKonstrukcja zabroniona w XML Schema:
23 Przykład – niejednoznacznośćModel niejednoznaczny. Nie istnieje równoważny model jednoznaczny. Nie da się zapisać w XML Schema.
24 Examplotron Definiowanie schematu „przez przykład”: Ograniczenia:instancja dokumentu definiuje schemat, konwencje, np.: powtórzenie elementu oznacza dowolną krotność, przykładowa zawartość elementu definiuje typ. Ograniczenia: „przez przykład” nie można wyrazić konstrukcji abstrakcyjnych, dodatkowa, specyficzna składnia pozwala na dokładniejszą kontrolę struktury. Status: projekt na wczesnym etapie rozwoju (wersja 0.7), dostępne narzędzie: compile.xsl – przekształca schematy Examplotronowe do RELAX NG. Definiowanie typów dokumentów – część 2: XML Schema
25 Examplotron – przykład
26 Gdzie szukać dalej W3C Architecture Domain: XML Schema Costello, R., XML Schema Tutorial RELAX NG Home Page Schematron Examplotron examplotron.org Vlist, E. van der, Comparing XML Schema Languages Vlist, E. van der, Relax NG Compared Czarnik, P., DTD, XML Schema – i co dalej? Software 2.0, nr 6/2003, Wydawnictwo Software Definiowanie typów dokumentów – część 2: XML Schema