Symbole wieloznaczne w XML Schema

Slides:



Advertisements
Podobne prezentacje
Definiowanie typów dokumentów
Advertisements

Przekształcanie dokumentów XML - XSL
Język C/C++ Funkcje.
Rafał Hryniów Tomasz Pieciukiewicz
Implementacja procesora XSLT w języku Ocaml
Powszechny Elektroniczny System Ewidencji Ludności
XHTML Podstawowe różnice.
XPath XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
Definiowanie typów dokumentów Część 1: DTD 9 października 2003.
11 Poprawne modele zawartości. Zarządzanie zmianami struktury.
XSL – przekształcenia XML-a
XSLT – część XSLT – część 22 Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego (ang. push): –przechodzimy.
XPath. XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema
11 XML a SGML. Standardy pokrewne.. 22 SGML a XML – różnice Deklaracja SGML: konfiguracja wyglądu znaczników, ich maksymalnej długości, itp., definicja.
Definiowanie typów dokumentów Część 3. XML Schema.
XML Schema w przykładach Maciej Ogrodniczuk
Poprawne modele zawartości. Zarządzanie zmianami struktury. 30 października 2003.
Definiowanie typów dokumentów Część 1. DTD, XML Schema.
Definiowanie typów dokumentów Część 2: XML Schema 16 października 2003.
Definiowanie typów dokumentów Część 2. XML Schema
XSL – część 2.
XML w zarządzaniu formularzami ubezpieczeniowymi ZUS
11 RDF Wertykalne zastosowania XML-a. 22 RDF - Wprowadzenie Problemy Sieć jest nieczytelna dla programów komputerowych. Sieć zawiera zbyt wiele informacji.
Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema.
Definiowanie typów dokumentów Część 1. DTD, XML Schema.
XSL Extensible Stylesheet Language 6 listopada 2003.
Zaawansowana składnia XML XML Schema
XSLT – część XSLT – część 22 Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego: –przechodzimy po strukturze.
11 Dowiązania w XML-u. Formy architektoniczne.. 22 XLink – dowiązania w XML-u Linki jakie znamy (HTML): łączą dwa dokumenty: źródło i cel linku, źródłem.
Poprawne modele zawartości. Zarządzanie zmianami struktury.
11 Definiowanie typów dokumentów. 22 Jak wygląda XML? st. asp. Jan Łapówka Dołowice Górne Wypadek dnia r o godzinie 13:13 ( piątek ) miał miejsce.
XPath. XSL – część 1..
XML Schema XML Schema2 Definiowanie języków XML, SGML – metajęzyki. Definiowanie języków (zastosowań, typów dokumentów, schematów): –określanie.
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 1.
P O D S T A W Y P R O G R A M O W A N I A
Dokumentowanie wymagań w języku XML
XML, DTD, Schema Zaawansowane Aplikacje Internetowe Dawid Weiss.
Standardy tworzenia dokumentów [Michał Kuciapski ]

Proszę skopiować eclipse najlepiej do c:\temp uruchamiamy rejestrujemy jako academic.
Bibliotekarz – odkrywca. Agenda Proces tworzenia informacji Indeksy wyszukiwawcze Budowa rekordu w Promaxie Zapytania.
Instytut Tele- i Radiotechniczny WARSZAWA
Podstawy programowania
XML – eXtensible Markup Language 4. XSL transformations (XSLT) XSLT (ang. eXtensible Stylesheet Language Transformations) jest opartym na XML językiem.
System e-zamówienia.
Budowanie tabel i relacji
Prezentacja i szkolenie
Języki i automaty część 3.
XML – eXtensible Markup Language 2. Nazwy atrybutów i elementów w języku XML muszą spełniać te same reguły (te same reguły musza spełniać też inne, rzadziej.
Programowanie obiektowe 2013/2014
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.

Proces rozliczania recept realizowanych od
Projektowanie stron WWW
Symbole wieloznaczne w XML Schema
XML Publisher Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przeznaczenie XML Publisher Przeznaczenie XML Publisher Definiowanie Definiowanie.
Walidacja danych alina suchomska.
XML i nowoczesne technologie zarządzania treścią Wykład monograficzny Semestr zimowy 2008/09 Szymon ZiołoPatryk Czarnik
Czyli króciutki opis języka programowania jakim jest HTML.
Dokumentacja obsługi programów Kamil Smużyński Piotr Kościński.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Adresowanie elementów struktury dokumentów - XPath.
XML w bazach danych.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Moduł e-Kontroli Grzegorz Dziurla.
The Poznan University of Economics Department of Management Information Systems XML - wprowadzenie.
Aplikacje internetowe XML Paweł Lenkiewicz. Aplikacje internetowe – XML2 eXtensible Markup Language Uniwersalny język opisu danych Często używany we współpracy.
KNW - wykład 3 LOGIKA MODALNA.
ASP.NET Tworzenie i zarządzanie wyglądem aplikacji, tworzenie mapy witryny. Kontrolki nawigacyjne.
Zapis prezentacji:

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

Symbole wieloznaczne w XML Schema Symbole wieloznaczne dla elementów (ang. element wildcards). Symbole wieloznaczne dla atrybutów (ang. 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> 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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> 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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. 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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Czego nie można zamodelować w XML Schema? (2/2) Niejednoznaczność (ang. ambiguity): egzemplarz jest poprawny względem kilku wzorców, np.: (nazwisko | nazwisko) Każdy model niejednoznaczny jest jednocześnie niedeterministyczny. Niedeterminizm (ang. non-determinism): procesor ma do wyboru wiele pasujących wzorców (produkcji gramatyki), np.: (nazwisko | (nazwisko, imię)) Równoważny model deterministyczny (nie zawsze istnieje): (nazwisko, imię?) 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Przykład DTD: RELAX NG: <!DOCTYPE addressBook [ <!ELEMENT addressBook (card*)> <!ELEMENT card (name, email)> <!ELEMENT name (#PCDATA)> <!ELEMENT email (#PCDATA)> ]> 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 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Przykład – niedeterminizm (odd, even)*, odd? Model jednoznaczny, ale niedeterministyczny. Nie istnieje równoważny model deterministyczny. Nie da się zapisać w XML Schema. <element name="even-odd"> <zeroOrMore> <ref name="odd"/> <ref name="even"/> </zeroOrMore> <optional> </optional> </element> Źródło: Vlist, E. van der, RELAX NG, http://books.xmlschemata.org/relaxng 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Examplotron Definiowanie schematu „przez przykład”: Ograniczenia: egzemplarz 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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Examplotron – przykład <?xml version="1.0" encoding="UTF-8"?> <order date="2003-02-01" eg:content="eg:interleave" xmlns:eg="http://examplotron.org/0/"> <eg:attribute name="no">1234 </eg:attribute> <quantity>1</quantity> <ref>AZERTY</ref> <ref>ZXCVBN</ref> <item>Tee shirt</item> <price unit="USD">10.</price> </order> atrybut opcjonalny typu data element powtarzalny atrybut wymagany typu liczba dowolna kolejność podelementów 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Zmiany struktury a aplikacje Typowa zależność między treścią programu a strukturą danych: w treści programu zakładamy konkretną postać struktur danych, jeśli są to dane wejściowe lub wyjściowe, ich postać może się zmieniać w czasie, zmiana struktury danych powoduje konieczność zmian w kodzie. Tworzenie aplikacji niezależnych od zmian struktury danych: ignorowanie elementów i atrybutów, które nie są znaczące dla aplikacji, unikanie nadmiernej zależności od struktury dokumentu, parametryzowanie aplikacji dodatkowymi informacjami umieszczonymi w schemacie, np.: <xsd:element name="NIP"> <xsd:complexType> ... <xsd:attribute name="opis" type="xsd:string" fixed="Numer Identyfikacji Podatkowej"/> </xsd:complexType> </xsd:element> 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Przestrzenie nazw a aplikacje niezależne od struktury 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> 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Przestrzenie nazw a aplikacje niezależne od struktury Przykład: aplikacja weryfikująca numery PESEL i daty urodzenia w dokumencie XML, nie powinna zależeć od struktury dokumentu wejściowego, jak „przekazać” aplikacji, co ma zweryfikować? Rozwiązanie: <podanie xmlns:pv="http://PeselValidator.pl"> <nadawca nr-ewid="60101012345" pv:PESEL="nr-ewid"> <nazwisko>Zenon Niemrawy</nazwisko> <urodzony pv:data-ur="#CONTENT">1960-10-10 </urodzony> </nadawca> ... </podanie> 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Case study XML jako format dokumentów ubezpieczeniowych ZUS

Tło projektu Formularze ubezpieczeniowe: Przyczyny zmiany formatu: 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. 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! 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Kolekcja Elektronicznych Dokumentów Ubezpieczeniowych 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Przykład: fragment formularza ZUS RCB 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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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. 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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Logiczny model struktury dokumentów Semantyczny: Składniowy: DRZB dane-organizacyjne termin-przys-dekl ident-deklaracji dane-ident-platnika NIP REGON ... RCB DRZB DRZB.01 DRZB.01.01 DRZB.01.02 DRZB.02 DRZB.02.01 DRZB.02.02 ... RCB RCB.01 RCB.02 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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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. 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! 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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. 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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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"> 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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Informacje zwrotne – przykład <!ELEMENT BLAD EMPTY> <!ATTLIST BLAD 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*)), ... )> 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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

Przykład: reprezentacja w XML-u 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. 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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 Examplotron examplotron.org 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 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron

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 Górski, C., Zioło, Sz., Wykorzystanie XML-a w zarządzaniu formularzami ubezpieczeniowymi ZUS www.empolis.pl  Materiały  Artykuły 2006-11-09 Definiowanie typów dokumentów – część 4: XML Schema, RELAX NG, Schematron