Definiowanie typów dokumentów Część 4. XML Schema, RELAX NG, Schematron

Podobne dokumenty
Symbole wieloznaczne w XML Schema. Definiowanie typów dokumentów Część 4. XML Schema, RELAX NG, Schematron. Schematron

XML Schema. Forma nazwy lokalnych elementów i atrybutów

XML Schema. Alternatywne metody definiowania struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

Dlaczego DTD nie wystarcza? Definiowanie typów dokumentów Część 2. XML Schema. Status XML Schema. DTD XML Schema. Definiowanie elementów i atrybutów

XML a białe znaki. Poprawne modele zawartości. Zarządzanie zmianami struktury. Model błędnej zawartości (1) Model błędnej zawartości (2)

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema. Elementy czy atrybuty? Wartości domyślne i ustalone. Elementy czy atrybuty?

XML i nowoczesne metody zarządzania treścią

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

- wewnątrz elementów prostych występuje tylko jeden typ danych, wewnątrz złoŝonych nie moŝemy dokładnie określić liczby wystąpień elementu

Język XML Schema. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

Rola języka XML narzędziem

29. Poprawność składniowa i strukturalna dokumentu XML

XML Schema. Motywacja, struktura schematu, typy złożone. Patryk Czarnik. Instytut Informatyki UW

Definiowanie typów dokumentów Część 1. DTD, XML Schema

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

Technologia informacyjna

Definiowanie typów dokumentów Część 3. XML Schema

extensible Markup Language, cz. 4 Marcin Gryszkalis, mg@fork.pl

XML Schema. Typy proste, wyprowadzanie typów, modularyzacja schematu. Patryk Czarnik. Instytut Informatyki UW

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Kurs WWW Język XML, część I

XML i nowoczesne metody zarządzania treścią

Przykładowy dokument XML

XML DTD XML Schema CSS

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

Wprowadzenie do technologii XML

Dokumenty SEDU składają się z dwóch części: Opisu sprawy Formularza elektronicznego

XML Schema. Motywacja, struktura schematu, typy złożone. Patryk Czarnik. Instytut Informatyki UW

Instrukcja uŝytkownika

Program do obsługi ubezpieczeń minifort

Jednolity Plik Kontrolny dla ewidencji zakupu i sprzedaży VAT wg wersji 17 deklaracji VAT-7

Zasady budowy i przekazywania komunikatów wykorzystywanych w Systemie IT KDPW_CCP

Zasady budowy i przekazywania komunikatów XML dla rynku OTC w systemie KDPW_CCP

Instrukcja uŝytkownika

Aplikacje internetowe laboratorium XML, DTD, XSL

Komunikaty statystyczne medyczne

DTD - encje ogólne i parametryczne, przestrzenie nazw

Rozdział 1 Cel dokumentu Rozdział 2 Deklaracja Rozdział 3 Nagłówek Rozdział 4 Podmiot Rozdział 5 FATCA...

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

KaŜdy z formularzy naleŝy podpiąć do usługi. Nazwa usługi moŝe pokrywać się z nazwą formularza, nie jest to jednak konieczne.

Jednolity Plik Kontrolny w IFK

Dostępne grupy kontrolek. Podstawowe kontrolki Web

Podręcznik użytkownika Obieg dokumentów

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

11. PROFESJONALNE ZABEZPIECZENIE HASŁEM

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

ZAKRES INFORMACYJNY DOKUMENTÓW UBEZPIECZENIOWYCH ZUS

PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU>

Program do obsługi ubezpieczeń minifort

Jak wygląda XML? Definiowanie typów dokumentów. Struktura logiczna dokumentu XML. Podstawy składni XML. Definiowanie języków. Poprawność dokumentów

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

Paczki przelewów w ING BankOnLine

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

JPK Jednolity Plik Kontrolny

Jednolity Plik Kontrolny w IFK

XML extensible Markup Language. Paweł Chodkiewicz

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

XML i nowoczesne metody zarządzania treścią

Podręcznik Użytkownika LSI WRPO

Modele danych walidacja widoki zorientowane na model

XML i nowoczesne metody zarządzania treścią

Instrukcja użytkownika

Informacja dla organów podatkowych w sprawie wzorów formularzy deklaracji i informacji na podatki: od nieruchomości, rolny i leśny

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD. Struktura logiczna dokumentu XML. Podstawy składni XML. Definiowanie języków

Szkolenie systemu POL-on

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 02

Struktura pliku Płatnik dla importu zleceń

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

DANE INFORMACYJNE Lp. BLOK TYTUŁ OPIS 1. Wewnętrzny Dokument Rozliczeniowy (WDR)

GML w praktyce geodezyjnej

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści

JPK Jednolity Plik Kontrolny

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

9.5 Rozliczanie zaopatrzenia w przedmioty ortopedyczne i środki pomocnicze

Środowisko XML (Extensible Markup Language).

1. Wymagania techniczne Uruchomienie aplikacji Zasady pracy z aplikacją Interfejs aplikacji formularza elektronicznego...

Modelowanie związków encji. Oracle Designer: Diagramy związków encji. Encja (1)

Obsługa serwisu kształcenie kwalifikacyjne w zawodzie - nowa formuła egzaminu zawodowego

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

Dlaczego GML? Gdańsk r. Karol Stachura

Program do obsługi ubezpieczeń minifort

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

Język XSLT. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Program Zamiana towarów dla Subiekta GT.

Struktura pliku wejściowego ipko biznes ELIXIR - O

Komponent Formularz. Rys. 1. Strona programu Joomla - Rys. 2. Instalacja komponentu

Instrukcja uŝytkownika Krajowego Systemu Informatycznego SIMIK 07-13

Mechanizm generowania edeklaracji

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

JPK.guru Excel (podgląd JPK) Instrukcja Użytkownika

Transkrypt:

Definiowanie typów dokumentów Część 4. XML Schema, RELAX NG, Schematron 1

Symbole wieloznaczne w XML Schema Symbole wieloznaczne dla elementów (element wildcards). Symbole wieloznaczne dla atrybutów (attribute wildcards). <xsd:complextype name="osobatyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> <xsd:any namespace="##other" minoccurs="0" maxoccurs="unbounded" processcontents="skip"/> </xsd:sequence> <xsd:anyattribute namespace="##other" processcontents="lax"/> </xsd:complextype> 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 2 Przy pomocy symboli wieloznacznych dla elementów (ang. element wildcards) moŝna określić, Ŝe w modelu zawartości moŝe pojawić się dowolny element. Przy pomocy symboli wieloznacznych dla atrybutów (ang. attribute wildcards) moŝna określić, Ŝe w typie złoŝonym moŝe pojawić się dowolny atrybut. Przy pomocy atrybutu namespace moŝna określić do jakich przestrzeni nazw mogą naleŝeć elementy zastępujące. Atrybut ten moŝe mieć wartość ##any lub ##other, albo moŝe być listą wartości. Jeśli ma wartość ##any, elementy zastępujące mogą naleŝeć do dowolnej przestrzeni nazw lub nie naleŝeć do Ŝadnej przestrzeni nazw. Jeśli wartością atrybutu namespace jest ##other, elementy zastępujące mogą naleŝeć do dowolnej przestrzeni nazw, z wyjątkiem docelowej przestrzeni nazw dokumentu schematu. Jeśli dokument schematu nie ma docelowej przestrzeni nazw, elementy zastępujące mogą naleŝeć do dowolnej przestrzeni nazw, ale nie mogą nie naleŝeć do Ŝadnej przestrzeni nazw. Wartością atrybutu namespace moŝe teŝ być lista wartości oddzielonych białymi znakami, zawierająca dowolne spośród następujących pozycji: ##targetnamespace oznacza, Ŝe elementy zastępujące mogą naleŝeć do docelowej przestrzeni nazw dokumentu schematu, ##local oznacza, Ŝe elementy zastępujące mogą nie naleŝeć do Ŝadnej przestrzeni nazw, konkretne przestrzenie nazw, do których mogą naleŝeć elementy zastępujące. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 2

Definiowanie symboli wieloznacznych Atrybut namespace: ##any, ##other, lista wartości: nazwa przestrzeni nazw, ##targetnamespace, ##local. Atrybut processcontents: strict, lax, skip. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 3 Przy pomocy atrybutu processcontents moŝna sterować tym, w jaki sposób sprawdzana jest poprawność elementów zastępujących. Atrybut ten moŝe mieć jedną z trzech wartości: skip oznacza, Ŝe procesor schematów nie sprawdza w jakikolwiek sposób poprawności strukturalnej elementów zastępujących i nie próbuje zlokalizować dokumentów schematów związanych z przestrzeniami nazw, do których naleŝą te elementy. KaŜdy element zastępujący musi być jednak poprawnym składniowo XML-em i musi naleŝeć do jednej z przestrzeni nazw określonej w symbolu wieloznacznym. lax oznacza, Ŝe procesor sprawdzi poprawność tych elementów zastępujących, dla których moŝe znaleźć deklaracje, i zgłosi błędy, jeśli te elementy nie są poprawne. Procesor schematów nie zgłosi natomiast błędów w odniesieniu do tych elementów, dla których nie znajdzie deklaracji. strict oznacza, Ŝe procesor schematów spróbuje zlokalizować dokumenty schematów związane z przestrzeniami nazw, do których naleŝą elementy zastępujące, i sprawdzić poprawność tych elementów. Procesor zgłosi błędy, jeśli nie znajdzie odpowiednich deklaracji, lub jeśli elementy są niepoprawne. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 3

Symbole wieloznaczne typowe zastosowanie <xsd:element name="description"> <xsd:complextype mixed="true"> <xsd:sequence> <xsd:any namespace="http://www.w3.org/1999/xhtml" minoccurs="0" maxoccurs="unbounded" processcontents="skip"/> </xsd:sequence> </xsd:complextype> </xsd:element> 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 4 4

Czego nie moŝna zamodelować w XML Schema? (1/2) Brak kontekstowego sprawdzania poprawności, 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 kontekstowego sprawdzania poprawności : zaprogramowane w kodzie aplikacji, transformacja XSLT, wykorzystanie innego języka schematów, np. Schematron. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 5 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. 5

Czego nie moŝna zamodelować w XML Schema? (2/2) Niejednoznaczność (ambiguity): egzemplarz jest poprawny względem kilku wzorców, np.: Niedeterminizm (non-determinism): procesor ma do wyboru wiele pasujących wzorców (produkcji gramatyki), np.: RównowaŜny model deterministyczny (nie zawsze istnieje): Język schematów, który radzi sobie z niejednoznacznością i niedeterminizmem: RELAX NG. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 6 Procesor schematów, analizując kolejne podelementy pewnego egzemplarza elementu, musi bez spoglądania wprzód i analizowania kolejnych podelementów wybrać jedyną pasującą gałąź modelu zawartości. Dlatego nie radzi sobie z modelami niedeterministycznymi i niejednoznacznymi. Na szczęście zwykle łatwo jest skonstruować równowaŝny model, który jest jednoznaczny i deterministyczny. 6

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: norma ISO (ISO/IEC 19757-3:2006). Implementacja referencyjna: przekształcenie (generator) XSLT, dla zadanego schematu Schematronowego, generuje XSLT sprawdzający poprawność dokumentów. Dostępnych kilkanaście implementacji. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 7 Implementacja referencyjna (wzorcowa) Schematronu działa w sposób następujący: dla zadanego schematu schematronowego, generuje przekształcenie XSLT, które pozwala na weryfikację dokumentów XML względem tego schematu. Jeśli przez to wygenerowane przekształcenie przepuścimy dokument XML, to jako wynik otrzymamy dokument XML zawierający listę błędów. Jeśli lista jest pusta (dokument wynikowy zawiera tylko pusty element główny), to oznacza to, Ŝe dokument jest poprawny względem schematu. 7

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: <rule context="towar"> <assert test="@wartosc = @cena * @liczba"> wartość = cena * liczba</assert> </rule> <rule context="faktura"> <report test="@platnosc!= 'przelew' and./przelew"> Przelew określony, a nie płacimy przelewem </report> </rule> Źródło: Czarnik, P., DTD, XML Schema i co dalej?, Software 2.0, nr 6/2003 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 8 8

Schematron + XML Schema (1/2) <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.demo.org" xmlns="http://www.demo.org" xmlns:sch="http://www.ascc.net/xml/schematron" elementformdefault="qualified"> <xsd:annotation> <xsd:appinfo> <sch:title>schematron validation</sch:title> <sch:ns prefix="d" uri="http://www.demo.org"/> </xsd:appinfo> </xsd:annotation>... Źródło: Extending XML Schemas. A Collectively Developed Set of Schema Design Guidelines http://www.xfront.com/extendingschemas.html 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 9 Schematron nie jest konkurencją dla XML Schema, poniewaŝ w Schematronie bardzo trudno i nieintuicyjnye zapisuje się reguły sprawdzające budowę strukturalną dokumentu. Dlatego zaleca się, aby uŝywać łącznei schematu XMl Schema i schematu schematronowego. W schemacie XML Schema moŝemy zamodelować strukturę dokumentu, zaś w schemacie schematronowym reguły kontekstowe. Schemat schematronowy moŝna wręcz zanurzyć w schemacie XML Schema, korzystając z elementów annotation, w których, w podelemencie appinfo moŝna umieszczać dowolne dane przeznaczone dla innych aplikacji niŝ procesor XML Schema. Oczywiście procesor XML Schema nie sprawdzi reguł schematronowych, poniewaŝ z załoŝenia ignoruje on zawartość elementów annotation. Aby sprawdzić reguły schematronowe, trzeba najpierw wyłowić schemat schematronowy ze schematu XML Schema. SłuŜy do tego specjalne przekształcenie XSLT XSD2Schtrn.xsl. 9

Schematron + XML Schema (2/2) <xsd:element name="demo"> <xsd:annotation> <xsd:appinfo> <sch:pattern name="check A greater than B"> <sch:rule context="d:demo"> <sch:assert test="d:a > d:b"> A should be greater than B. </sch:assert> </sch:rule> </sch:pattern> </xsd:appinfo> </xsd:annotation> <xsd:complextype> <xsd:sequence> <xsd:element name="a" type="xsd:integer"/> <xsd:element name="b" type="xsd:integer"/> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:schema> Źródło: Extending XML Schemas. A Collectively Developed Set of Schema Design Guidelines http://www.xfront.com/extendingschemas.html 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 10 10

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 nie występujące 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. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 11 Dzięki zupełnie innemu niŝ w XML Schema podejściu do przetwarzania dokumentów, w RELAX NG moŝna uŝywać modeli niedostępnych w DTD i XML Schema. Dzięki łatwej do nauczenia i zapamiętania składni oraz duŝej sile wyrazu, RELAX NG zyskuje coraz większą popularność. 11

Przykład RELAX NG: <element name="addressbook" xmlns="http://relaxng.org/ns/structure/1.0"> <zeroormore> <element name="card"> <element name="name"> <text/> </element> <element name="email"> <text/> </element> </element> </zeroormore> </element> Źródło: RELAX NG Tutorial, http://www.relaxng.org/tutorial-20011203.html 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 12 12

Przykład Konstrukcja zabroniona w XML Schema: <element name="name"> <choice> <text/> <group> <element name="firstname"><data type="token"/> </element> <optional> <element name="middlename"><data type="token"/> </element> </optional> <element name="lastname"><data type="token"/> </element> </group> </choice> </name> Źródło: RELAX NG Tutorial, http://www.relaxng.org/tutorial-20011203.html 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 13 W XMl Schema nie moŝna stworzyć alternatywy pomiędzy zawartością prostą i zawartością elementową. Nie moŝna zatem zadeklarować elementu name, który będzie mógł zawierać: <name>jan Krzysztof Kowalski</name> lub: <name> <firstname>jan</firstname> <middlename>krzysztof</middlename> <lastname>kowalski</lastname> </name> W RELAX NG taka alternatywa jest dopuszczalna. 13

Przykład niedeterminizm Model jednoznaczny, ale niedeterministyczny. Nie istnieje równowaŝny model deterministyczny. Nie da się zapisać w XML Schema. <element name="parzysty-nieparzysty"> <zeroormore> <ref name="nieparzysty"/> <ref name="parzysty"/> </zeroormore> <optional> <ref name="nieparzysty"/> </optional> </element> Źródło: Vlist, E. van der, RELAX NG, http://books.xmlschemata.org/relaxng 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 14 Niedeterminizm tego modelu bierze się stąd, Ŝe gdy procesor schematów napotyka znacznik początkowy <nieparzysty>, to nie wie (bez spoglądania wprzód), czy jest to juŝ ostatni, opcjonalny element nieparzysty, czy teŝ za chwilę wystąpi element parzysty. RELAX NG radzi sobie z takim modelem dzięki temu, Ŝe przetwarzanie jest w nim oparte na wyraŝeniach regularnych. 14

Zarządzanie zmianami struktury Zmiany niekompatybilne wstecz przykład: dodanie elementu wymaganego. Sposób postępowania w Ŝywym systemie: wprowadzamy zmianę modelu kompatybilną wstecz (np. dodajemy element, ale opcjonalny), migrujemy dokumenty: przekształcamy automatycznie i/lub instruujemy uŝytkowników o konieczności migracji do nowej struktury, po dodaniu brakujących elementów (lub po upływie wyznaczonego czasu) wprowadzenie zmiany docelowej. Większe zmiany modelu: deklarujemy osobny element z nowym modelem i przez pewien czas dopuszczamy stary lub nowy model, stosujemy przez pewien czas równolegle dwie wersje schematu. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 15 15

Aplikacje odporne na zmiany struktury dokumentów Aplikacja odporna na zmiany struktury dokumentów: przetwarza dokumenty zgodne z pewnym schematem, radzi sobie z dowolnym sensownym rozszerzeniem lub ograniczeniem schematu. Zalecane techniki programistyczne: pomijanie nieistotnych elementów i atrybutów (szczególnie jeśli naleŝą do innych przestrzeni nazw), unikanie sprawdzania poprawności struktury dokumentu w kodzie. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 16 Nie moŝna przewidzieć, w jaki sposób schemat będzie modyfikowany i rozszerzany w miarę upływu czasu. Ze zmianami moŝna sobie jednak radzić w elegancki sposób, korzystając z następujących dwóch technik: Pomijanie nieistotnych elementów i atrybutów. Aplikacja powinna przetwarzać elementy i atrybuty, których oczekuje. Nie powinna natomiast sygnalizować błędów, jeśli napotka dodatkowe elementy lub atrybuty, szczególnie jeśli naleŝą one do innej przestrzeni nazw. Aplikacja powinna przetwarzać kaŝdy model zawartości w taki sposób, jakby zawierał on symbole wieloznaczne dla elementów i dla atrybutów, nawet jeśli w rzeczywistości model zawartości ich nie zawiera. Unikanie nadmiernej zaleŝności od struktury dokumentu. Powinniśmy ograniczyć do minimum sprawdzanie poprawności struktury dokumentu w kodzie aplikacji. Jeśli korzystamy z parsera SAX, powinniśmy przetworzyć element korzystając z jego nazwy, unikając sprawdzania, jaki element jest jego rodzicem czy dziadkiem. W języku XSLT powinniśmy korzystać z wyraŝeń takich jak.//produkt/numer zamiast./katalog/produkt/numer. Dzięki temu wyraŝenie będzie poprawne takŝe wtedy, gdy pomiędzy elementami katalog i produkt zostanie dodany element dział. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 16

Aplikacje sparametryzowane schematem Wykorzystanie atrybutów fixed do parametryzowania aplikacji np.: etykiety pól na formularzach, odwzorowanie elementów na tabele i pola w bazie danych. <xsd:element name="nip"> <xsd:complextype>... <xsd:attribute name="opis" type="xsd:string" fixed="numer Identyfikacji Podatkowej"/> </xsd:complextype> </xsd:element> 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 17 Pewne informacje związane z przetwarzanymi dokumentami, w normalnej sytuacji wbudowywane w kod aplikacji, moŝna zapisać w schemacie jako atrybuty fixed. Atrybutów takich nie trzeba podawać w egzemplarzach dokumentów, poniewaŝ są one dodawane do egzemplarza automatycznie podczas przetwarzania dokumentu przez parser. Dzięki temu, Ŝe aplikacja z nich korzysta, przy zmianie schematu aplikacja dostosowuje się automatycznie. 17

Przestrzenie nazw a aplikacje niezaleŝne od struktury dokumentów Przykład: XLink: linki w elementach o dowolnych nazwach, typ linku i jego parametry przekazywane przez specjalne atrybuty. <osoba xmlns:xlink="http://www.w3.org/1999/xlink"> <nazwisko>kopernik, Mikołaj</nazwisko> <biogram>wybitny polski astronom, urodzony w <geogr xlink:type="simple" xlink:href="torun.xml"> Toruniu</geogr>.</biogram> </osoba> 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 18 Aby jeszcze bardziej uniezaleŝnić aplikację od struktury dokumentu, moŝna wykorzystać atrybuty naleŝące do pewnej przestrzeni nazw. Zamiast szukać w dokumencie elementów o pewnych ustalonych nazwach, aplikacja moŝe szukać elementów o dowolnych nazwach, posiadających atrybuty naleŝące do naszej przestrzeni nazw. W ten sposób zaprojektowano standard XLink, słuŝący do zapisywania linków w dokumentach XML. Link moŝe być zapisany w elemencie o dowolnej nazwie, poniewaŝ procesor XLink rozpoznaje linki nie po nazwach elementów, lecz po atrybucie type naleŝącym do przestrzeni nazw XLink. 18

Case study XML jako format dokumentów ubezpieczeniowych ZUS 19

Tło projektu Formularze ubezpieczeniowe: 22 typy formularzy, przesyłane okresowo przez płatników do ZUS, dotychczas kodowane w pseudo-sgml-u. Przyczyny zmiany formatu: błędny projekt formatu SGML-owego, rosnąca popularność XML-a, nadchodząca zmiana rozporządzenia określającego strukturę formularzy. Projekt badawczo-rozwojowy prowadzony przez empolis Polska w 2000 roku. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 20 Wszystkie formularze powstają najpierw w wersji papierowej i dopiero na jej podstawie projektuje się wersje elektroniczne, dbając, aby były one zgodne co do struktury z wersjami papierowymi. Dotychczas formularze są kodowane w formacie zaprojektowanym przez Prokom. Był to SGML, obwarowany wieloma zastrzeŝeniami, często niezgodnymi z ideą SGML-a. Wszystkie wartości pól trzeba np. uzupełniać spacjami do ich pełnej długości takiej jak na formularzu papierowym. Elementy posiadają ponadto wewnętrzną strukturę, nie modelowaną w SGML-u. Dlatego tak na prawdę jest to format stałopozycyjny, dla którego nie jest potrzebne oznakowanie SGML-owe. Na marginesie, nikt nie uŝywa zaprojektowanego przez Prokom DTD w parserze SGML-owym, poniewaŝ DTD to zawiera błąd. Wygląda więc na to, Ŝe wszystkie aplikacje generujące dane w tym formacie uŝywają własnych mechanizmów generowania, a nie standardowych parserów! 20

Kolekcja Elektronicznych Dokumentów Ubezpieczeniowych KEDU Kolekcja Elektronicznych Dokumentów Ubezpieczeniowych ZUS ZFB... ZUS RCB... I. Dane organizacyjne II. Dane identyfikacyjne płatnika składek III. Dane dotyczące osoby ubezpieczonej V. Oświadczenie płatnika składek 01. Identyfikator raportu 01. NIP A.01. Nazwisko 01. Data wypełnienia 1 Nr raportu 2 Okres rozliczeniowy 02. Kod terytorialny...... 02. REGON 03. PESEL... A.02. Imię pierwsze... B.01. Kod tytułu ubezpieczenia... 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 21 21

Przykład: fragment formularza ZUS RCB 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 22 Formularze mają ściśle określoną strukturę: składają się z bloków, bloki z podbloków lub bezpośrednio z pól, pola zawierają właściwe wartości, lub niekiedy składają się z sekcji. NiezaleŜnie od tej budowy logicznej, grupy pól w ramach bloków są często wizualizowane w postaci tabelek lub inaczej grupowane. 22

Problemy Wybór logicznego modelu struktury dokumentów: model semantyczny, model składniowy. Modelowanie w DTD informacji pozwalających na sprawdzanie poprawności treści dokumentów. Modelowanie informacji zwrotnych: informacje o błędach w dokumentach, informacje o korektach automatycznie wprowadzonych przez ZUS. Oznaczenie pól wypełnianych przez ZUS. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 23 Podstawowym problemem do rozwiązania był sposób modelowania logicznej struktury dokumentów ubezpieczeniowych (szczegóły dalej). Wartości umieszczane w polach formularzy mają określone typy i maksymalne długości (odpowiadające długości pól w formularzach papierowych). Często takŝe dla zawartości pól (np. dla dat) określa się sposób ich formatowania. Mechanizm DTD oraz parsery z niego korzystające nie pozwalają na modelowanie takich ograniczeń na wartości pól. Dlatego trzeba było znaleźć inny sposób na zapisanie tych informacji w DTD, pozwalający na ich wykorzystanie przez aplikacje przetwarzające. W tym miejscu najbardziej brakowało nam standardu XML-Schema i narzędzi go wspierających. W przypadku błędów w formularzach, są one zwracane płatnikom wraz z informacjami o błędach oraz o wprowadzonych korektach (niekiedy ZUS moŝe sam skorygować wartość błędnego pola). Dlatego projektowane DTD musiało umoŝliwiać kodowanie takich informacji. Wreszcie niektóre pola formularzy są wypełniane dopiero przez ZUS. MoŜna by więc ich nie modelować w wersji DTD przeznaczonej dla płatników, gdyby nie fakt, Ŝe formularze są zwracane płatnikom w razie wykrycia w nich błędów. Dlatego pola takie trzeba było umieścić w modelu, zaznaczając (w sposób umoŝliwiający wykorzystanie przez aplikacje), Ŝe są one wypełniane przez ZUS. 23

Logiczny model struktury dokumentów Semantyczny: DRZB dane-organizacyjne termin-przys-dekl ident-deklaracji... dane-ident-platnika NIP REGON... RCB dane-organizacyjne... dane-ident-platnika... Składniowy: DRZB DRZB.01 DRZB.01.01 DRZB.01.02... DRZB.02 DRZB.02.01 DRZB.02.02... RCB RCB.01... RCB.02... 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 24 Model semantyczny polega na wyodrębnieniu z zestawu formularzy bloków i pól o takim samym znaczeniu i strukturze oraz zamodelowaniu ich jako pojedynczych elementów. Nazwy elementów opisują wówczas ich znaczenie, a nie pozycje w formularzach. Model składniowy polega na zdefiniowaniu osobnego elementu XML dla kaŝdego pola i kaŝdego bloku istniejących formularzy. Powtarzające się pola i bloki o tym samym znaczeniu są w tym modelu definiowane jako osobne elementy. Model ten pozwala na nadanie elementom nazw odpowiadających numeracji bloków, podbloków, pól i sekcji. 24

Logiczny model struktury dokumentów Model semantyczny: zwięzły i elegancki, pozwala na modelowanie relacji wiele-do-wielu, ale: nazwy szybko przestają być semantyczne. Model składniowy: łatwość automatyzacji przetwarzania: operowanie nazwami elementów, generowanie DTD oraz samych dokumentów, moŝliwość wzbogacenia o informacje semantyczne. Wybór: model składniowy. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 25 Wydaje się, Ŝe model semantyczny jest lepszy, bo oferuje się w nim elementami, których nazwy opisują znaczenie zawartości zgodnie z ideologią XML-a. Ale w formularzach jest wiele pól o barokowych opisach, np. Liczba dni kalendarzowych, za które naleŝy opłacić składki za dany miesiąc (wpisać tylko dla osób, które mają ustaloną minimalną podstawę, gdy liczba ta jest mniejsza niŝ liczba dni w danym miesiącu). Takie nazwy trzeba by skracać, co doprowadziłoby do bałaganu przy tworzeniu skrótów. Skróty przestały by być semantyczne i nie byłoby gwarancji, Ŝe niechcący nie skrócimy dwóch róŝnych nazw do tego samego skrótu. Wybraliśmy model składniowy, mimo jego rozwlekłości i brzydoty. MoŜna go bowiem wzbogacić o informacje semantyczne np. w postaci atrybutów OPIS zawierających etykiety pól z formularzy papierowych. Po takim wyborze jedynym wyjściem było wygenerowanie DTD z bazy danych zawierającej definicje bloków, podbloków, pól i sekcji. Tak utworzone DTD ma ok. 400 KB! 25

Modelowanie informacji dodatkowych Informacje dodatkowe: opisy pól, informacje o sposobie sprawdzania poprawności wartości pól, informacje o polach wypełnianych przez ZUS. Sposób kodowania: atrybuty #FIXED: umieszczane w DTD wraz z wartościami, wartości dostępne w egzemplarzach, nie ma moŝliwości zmiany wartości atrybutu w egzemplarzu. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 26 Zgodnie z opisanymi wcześniej problemami, informacje zwrotne powinny być zakodowane w DTD w sposób umoŝliwiający ich wykorzystanie przez aplikacje generujące lub przetwarzające dokumenty. Takim sposobem mogą być atrybuty #FIXED, których ustalone wartości (tylko do odczytu) podaje się w DTD. Jedynie informacje zwrotne są kodowane w inny sposób. 26

Informacje dodatkowe przykład <!ELEMENT DRSB.01.04 (#PCDATA)> <!ATTLIST DRSB.01.04 OPIS CDATA #FIXED "Data nadania" TYP CDATA #FIXED "data" DLUGOSC CDATA #FIXED "8" WYPELNIA.ZUS CDATA #FIXED "TAK"> <!ELEMENT DRSB.02.04 (#PCDATA)> <!ATTLIST DRSB.02.04 OPIS CDATA #FIXED "Rodzaj dokumentu" TYP CDATA #FIXED "kod" SLOWNIK CDATA #FIXED "rodzaj.dok"> 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 27 Atrybut OPIS zawiera etykietę pola taką, jak na formularzu papierowym. Informacje semantyczne są kodowane przy pomocy atrybutów TYP, DLUGOSC oraz FORMAT. TYP zawiera nazwę typu (lista typów jest ustalona). FORMAT zawiera wyraŝenie regularne opisujące dopuszczalny format zawartości pola. JeŜeli wartość pola naleŝy do ustalonego zbioru wartości (kodów), wówczas przy pomocy atrybutu SLOWNIK odwołujemy się do słownika (umieszczonego w osobnym pliku) zawierającego zbiór dopuszczalnych wartości. Informacja o tym, Ŝe pole jest wypełniane przez ZUS jest podawana przy pomocy atrybutu WYPELNIA.ZUS, którego dla ułatwienia zarządzania uŝywa się przy pomocy encji parametrycznej a.wypelnia.zus. 27

Informacje zwrotne Informacje o błędach i korektach wykrytych podczas przetwarzania dokumentu przez ZUS: błąd powoduje odrzucenie formularza, korekta drobny błąd poprawiany automatycznie przez ZUS. Nie mogą być kodowane w atrybutach: moŝe być więcej niŝ jeden błąd lub korekta, dotycząca tego samego pola, zawartości mogą zawierać podelementy, niedozwolony model (#PCDATA, BLAD*, KOREKTA*) Rozwiązanie: opcjonalne elementy po elemencie, w którym wystąpił błąd. 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 28 28

Informacje zwrotne przykład <!ELEMENT BLAD <!ATTLIST BLAD EMPTY> KOD CDATA #REQUIRED OPIS CDATA #IMPLIED> <!ELEMENT KOREKTA ANY> <!ATTLIST KOREKTA NR CDATA #REQUIRED TYP (OCR.1 OCR.2 OCR.3 SYSTEM) #REQUIRED> <!ELEMENT DRSB ((DRSB.01, (BLAD*, KOREKTA*)), (DRSB.02, (BLAD*, KOREKTA*)), (DRSB.03, (BLAD*, KOREKTA*)),... )> 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 29 Definiujemy wspólne dla wszystkich bloków i pól elementy reprezentujące błędy i korekty. Zawartością elementu KOREKTA jest skorygowana wartość (słowo kluczowe ANY pozwala na dowolną zawartość). Elementów tych uŝywamy odwołując się do encji parametrycznej cm.inf.zwr. PoniewaŜ w XML-u zawartością elementu nie moŝe być #PCDATA, %cm.inf.zwr;, trzeba było umieścić elementy dla błędu i korekty obok elementu, którego błąd lub korekta dotyczy. 29

Przykład: reprezentacja w XML-u 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 30 Slajd przedstawia częściowo zwiniętą wersję reprezentacji elektronicznej formularza z poprzedniego slajdu, tak jak wyświetla go Internet Exploerer przy pomocy domyślnego arkusza stylów. Szczegóły: główny element KEDU2, element RCB odpowiada całemu dokumentowi ZUS RCB, bloki I, II i V są zwinięte, blok III jest rozwinięty w całości, pole RCB.III.B.08 składa się z dwóch segmentów, do pola RCB.III.B.12 została przypięta korekta systemowa, do całego bloku RCB.III przypięto błędy. 30

Gdzie szukać dalej Extending XML Schemas. A Collectively Developed Set of Schema Design Guidelines www.xfront.com/extendingschemas.html RELAX NG Home Page www.relaxng.org Schematron www.schematron.com Vlist, E. van der, Comparing XML Schema Languages www.xml.com/pub/a/2001/12/12/schemacompare.html Vlist, E. van der, Relax NG Compared www.xml.com/pub/a/2002/01/23/relaxng.html 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 31 31

Gdzie szukać dalej Zioło, Sz., Jak pozostać niezaleŝnym od DTD Software 2.0, nr 6/2002, Wydawnictwo Software Czarnik, P., DTD, XML Schema i co dalej? Software 2.0, nr 6/2003, Wydawnictwo Software 2008-10-30 Definiowanie typów dokumentów część 4: XML Schema, RELAX NG, Schematron 32 32