Metody reprezentacji informacji Przedmiot:

Podobne dokumenty
Przykładowy dokument XML

METODY REPREZENTACJI INFORMACJI

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

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.

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

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

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

METODY REPREZENTACJI INFORMACJI

Wprowadzenie do technologii XML

- 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

Rola języka XML narzędziem

DTD - encje ogólne i parametryczne, przestrzenie nazw

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

Model semistrukturalny

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

XML Schema w przykładach

Implementacja schematów i statycznej kontroli typów w systemie JLoXiM

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

XML DTD XML Schema CSS

XML i nowoczesne technologie zarządzania treścią

Podstawy XML-a. Zaawansowane techniki programowania

Systemy baz danych. mgr inż. Sylwia Glińska

BAZY DANYCH. Dr hab. Sławomir Zadrożny, prof. PR

Wykorzystywanie parsera DOM w programach Java i PL/SQL

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

Programowanie obiektowe

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

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

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

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Programowanie obiektowe

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

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

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

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

XML extensible Markup Language. część 3

Schematy XML. Tomasz Traczyk.

Integracja Obieg Dokumentów - GiS Spis treści

Bazy danych - wykład wstępny

Metody reprezentacji informacji Przedmiot:

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

Plan prezentacji DTD. Wiązanie DTD z dokumentem XML Deklaracja typu dokumentu. Co to jest DTD. Wstęp. Przedmiot: XML i jego zastosowania

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

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

Dlaczego GML? Gdańsk r. Karol Stachura

XML extensible Markup Language. Paweł Chodkiewicz

Zaawansowane aplikacje WWW - laboratorium

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

XML i nowoczesne metody zarządzania treścią

BAZY DANYCH wprowadzenie. Opracował: dr inż. Piotr Suchomski

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

WYKŁAD 2 DTD DOCUMENT TYPE DEFINITION CZĘŚĆ 1

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

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

Programowanie obiektowe

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

Programowanie obiektowe

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

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

XML w bazach danych i bezpieczeństwie

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

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

Podstawowe wykorzystanie Hibernate

Bazy danych dokumentów XML wykład 1 wprowadzenie

Procesowanie dokumentów XML

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Baza danych sql. 1. Wprowadzenie

akademia androida Składowanie danych część VI

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

Diagramy klas. dr Jarosław Skaruz

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

INTEGRACJA I EKSPLORACJA DANYCH

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Aplikacje internetowe laboratorium XML, DTD, XSL

Programowanie internetowe

Język JAVA podstawy. wykład 1, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Baza danych. Modele danych

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Zdalna edycja i przeglądanie dokumentacji medycznej.

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Bazy danych 2. Wykład 1

1 Wprowadzenie do J2EE

Wykład 3 Składnia języka C# (cz. 2)

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

Załącznik nr 14 Struktura logiczna korekty informacji podsumowującej o dokonanych wewnątrzwspólnotowych dostawach/nabyciach towarów (VAT-UEK)

Wprowadzenie do XML schema

Alicja Marszałek Różne rodzaje baz danych

Aplikacje w środowisku Java

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

PRZEWODNIK PO PRZEDMIOCIE

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Transkrypt:

Metody reprezentacji informacji cz.2 Jacek Rumiński Kontakt: Katedra Inżynierii Biomedycznej, pk. 106, tel.: 3472678, fax: 3461757, e-mail: jwr@eti.pg.gda.pl Projekt Przygotowanie i realizacja kierunku inżynieria biomedyczna studia międzywydziałowe współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.

Parsowanie XML Innym modelem rozbioru składniowego dokument XML jest model SAX (Simple API for XML parsing). SAX jest modelem wypracowanym przez użytkowników XML niezależnie od standardu DOM. Głównym założeniem modelu jest szybki dostęp do wybranych węzłów dokumentu XML bez konieczności składowania całego drzewa. SAX wychodzi z założenia, iż analizując dokument XML natrafiamy na różne encje. Encje te wywołują zdarzenia, których kategorie zależą od znalezionych encji. Jeżeli eli znajdujemy element, to generowane jest zdarzenie typu <jest element>, jeśli znak pusty to generowane jest zdarzenie <znak pusty>, itd. Obsługiwanie zdarzeń i pobieranie danych jakie niosą prowadzi do uzyskania danych dokumentu XML. Zestaw klas i interfejsów modelu SAX w wersji 2.0, zgodnie ze składnią języka Java, prezentuje kolejny slajd. 2

Parsowanie XML Główny zestaw metod obsługujących zdarzenia wywoływane w procesie analizy treści dokumentu XML. 3

Parsowanie XML 4

Parsowanie XML startdocument Przykładowy proces analizy dokumentu XML według modelu SAX 5

Parsowanie XML startelement (nazwa= salon, brak atrybutów) Przykładowy proces analizy dokumentu XML według modelu SAX 6

Parsowanie XML ignorablewhitespace ignorablewhitespace Przykładowy proces analizy dokumentu XML według modelu SAX 7

Parsowanie XML startelement (nazwa= samochod Atrybuty( VIN, nrsilnika ) Przykładowy proces analizy dokumentu XML według modelu SAX 8

Parsowanie XML ignorablewhitespace ignorablewhitespace Przykładowy proces analizy dokumentu XML według modelu SAX 9

Parsowanie XML startelement (nazwa= marka, brak atrybutów) Przykładowy proces analizy dokumentu XML według modelu SAX 10

Parsowanie XML characters Przykładowy proces analizy dokumentu XML według modelu SAX 11

Parsowanie XML endelement (nazwa= marka ) itd. Przykładowy proces analizy dokumentu XML według modelu SAX 12

Parsowanie XML Przykład zastosowania (na podstawie http://sax.sourceforge.net/) (SAX 1.0) Obsługa zdarzeń potrzebny HANDLER (rdzeń klasy): import org.xml.sax.helpers.defaulthandler; public class MySAXApp extends DefaultHandler { public MySAXApp () { super(); } } Uruchomienie programu (po wypełnieniu rdzenia): java -Dorg.xml.sax.driver=com.example.xml.SAXDriver MySAXApp sample.xml Podaj przy wywołaniu lub ustaw w plikach konfiguracyjnych gdzie jest implementacja modelu SAX (tj. gdzie jest zbiór zaimplementowanych klas modelu) 13

Parsowanie XML public class MySAXApp extends DefaultHandler{ public static void main (String args[]) throws Exception{ XMLReader xr = XMLReaderFactory.createXMLReader(); MySAXApp handler = new MySAXApp(); xr.setcontenthandler(handler); xr.seterrorhandler(handler); // Dokonaj rozbioru każdego pliku podanego w lini poleceń for (int i = 0; i < args.length; i++) { FileReader r = new FileReader(args[i]); xr.parse(new InputSource(r)); } } public MySAXApp () { super();} } 14

Parsowanie XML DODAJ implementacje metod HANDLERA, np. public void characters (char ch[], int start, int length) { System.out.print("Characters: \""); for (int i = start; i < start + length; i++) { switch (ch[i]) { case '\\': System.out.print("\\\\"); break; case '"': System.out.print("\\\""); break; case '\n': System.out.print("\\n"); break; case '\r': System.out.print("\\r"); break; case '\t': System.out.print("\\t"); break; default: System.out.print(ch[i]); break; } } System.out.print("\"\n"); } 15

Parsowanie XML DEMO 4 DEMONSTRACJA: Kod SAXParser.java, modyfikacje i przykładowe działanie. Uwaga praktyczna: Szybkość operacji rozbioru składniowego dokumentu XML, bez względu na model, zależy od jego zawartości. Zatem im mniej znaków pustych w dokumencie (spacji, CR, LF, itd.) tym lepiej. 16

Parsowanie XML Obsługa XML w różnych środowiskach.net C# (MSXML-DOM/SAX) C# - System.XML 17

Parsowanie XML Obsługa XML w różnych środowiskach PHP (www.php.net\xml) 18

Parsowanie XML require 'rexml/document' include REXML string = <<EOF Obsługa XML w różnych środowiskach Ruby (www.ruby-lang.org) Parser XML REXML (Ruby Electric XML): http://www.ruby-doc.org/stdlib/libdoc/rexml/rdoc/ <?xml version="1.0"?> <Salon> <Samochod> <Model>BMW</Model> </Samochod> <Samochod> <Model>BMW</Model> </Samochod> </Salon> EOF doc = Document.new(string) puts doc 19

Plan wykładu: 1. Wprowadzenie XML a bazy danych; 2. Podstawowe definicje i pojęcia; 3. Cele XML; 4. Charakterystyka dokumentu XML; 5. Rozbiór składniowy dokumentu XML; 6. Poprawność dokumentu XML; 7. Metody definicji typów dokumentów: DTD, XML-Schema; 8. Rodzaje dokumentów XML i formy ich składowania; 9. NXD Native XML Databases; 10. Wyszukiwanie i przeszukiwanie dokumentów XML: XPath a XQuery; 11. XML w technologii Web Services: XML-RPC, SOAP, WSDL 12. Zastosowania XML 20

Walidacja dokumentów XML Programy dokonujące rozbioru składniowego dokumentów XML mogą być wzbogacane o możliwość weryfikacji: 1. Czy poddany przetwarzaniu obiekt danych jest dokumentem XML, czyli czy jest dobrze-sformułowany? 2. Czy poddany przetwarzaniu dokument XML jest poprawny. 21

Walidacja dokumentów XML Dla przypomnienia, zgodnie z przedstawioną już specyfikacją XML, obiekt danych jest dobrze-sformułowany jeśli uwzględnia wszystkie wymagania jawnie zapisane w rekomendacji. Jawny zapis wymagań przedstawiony jest jako ścisła definicja budowy logicznej dokumentu, oraz zbioru wymagań szczegółowych poprzedzonych wyróżnikiem: Well-formedness constraint: Przykładowo: Well-formedness constraint: Element Type Match The Name in an element's end-tag must match the element type in the start-tag. {Nazwa (zgodna z typem Name) znacznika końca elementu musi być identyczna jak nazwa znacznika początku tego samego elementu.} 22

Walidacja dokumentów XML Poprawność dokumentu XML (validity) określana jest na podstawie definicji typu dokumentu (DOCTYPE), najczęściej realizowanego poprzez DTD lub XML Schema. Podobnie jak w badaniu czy obiekt danych jest dobrze sformułowany, tak i w przypadku sprawdzania poprawności dokumentu XML konieczne jest spełnienie wymagań podanych w specyfikacji XML. Jawny zapis wymagań w rekomendacji poprzedzony jest wyróżnikiem: Validity constraint: Przykładowo: Validity constraint: Root Element Type The Name in the document type declaration must match the element type of the root element. {Nazwa (zgodna z typem Name) występująca w deklaracji typu dokumentu musi być identyczna jak nazwa głównego elementu (korzenia).} 23

Walidacja dokumentów XML Sprawdzanie poprawności wymaga definicji schematu dokumentu zawierającego definicje wszystkich możliwych do stosowania encji w tworzonym dokumencie. Sprawdzanie poprawności jest opcjonalne, tzn. obiekt danych nie musi być poprawny aby być dokumentem XML. Znakomita większość oprogramowania dostępnego na rynku, dostarcza mechanizmy umożliwiające weryfikację czy dany obiekt jest dobrze sformułowany. Tylko niektóre z nich umożliwiają dodatkowo sprawdzenie poprawności dokumentu. Rozpatrzmy kilka przykładów zastosowania programu badającego formułę i poprawność obiektów danych. Przeprowadzone analizy wykonano z zastosowaniem darmowego programu xmlvalid firmy ElCel ( http://www.elcel.com ). 24

Walidacja dokumentów XML 1. dla obiektu danych salon.xml (wcześniejsze przykłady), nie zawierającego definicji typu dokumentu, sprawdzenie czy jest on dobrze sformułowany przebiega następująco: Polecenie: xmlvalid v salon.xml Wynik: salon.xml is well-formed Zatem badany obiekt jest dokumentem XML. Wprowadzając sztucznie błąd, np. zmieniając nazwę znacznika początku elementu względem nazwy znacznika końca, wynik testu jest następujący: Wynik:salon.xml [58:9] : Fatal error: end tag '</silnik>' does not match start tag. Expected '</ilnik>' Pojawia się błąd krytyczny (podanie miejsca w kodzie źródłowym oraz informacji o rodzaju błędu). Zatem badany obiekt nie jest dokumentem XML! 25

Walidacja dokumentów XML 2. dla dokumentu salon.xml (wcześniejsze przykłady), zawierającego definicję typu dokumentu, sprawdzanie czy jest on poprawny przebiega następująco: Polecenie: xmlvalid salon.xml Wynik: salon.xml is valid Zatem badany dokument XML jest poprawny. Wprowadzając sztucznie błąd jak poprzednio wynik testu jest następujący: Wynik: salon.xml [56:20] : Error: element content invalid. Element 'ilnik' is not expected here, expecting 'silnik' salon.xml [58:9] : Fatal error: end tag '</silnik>' does not match start tag. Expected '</ilnik>' Pojawia się błąd i błąd krytyczny (podanie miejsca w kodzie źródłowym oraz informacji o rodzaju błędu). Zatem badany obiekt nie jest poprawny i nie jest dokumentem XML! 26

Plan wykładu: 1. Wprowadzenie XML a bazy danych; 2. Podstawowe definicje i pojęcia; 3. Cele XML; 4. Charakterystyka dokumentu XML; 5. Rozbiór składniowy dokumentu XML; 6. Poprawność dokumentu XML; 7. Metody definicji typów dokumentów: DTD, XML-Schema Schema; 8. Rodzaje dokumentów XML i formy ich składowania; 9. NXD Native XML Databases; 10. Wyszukiwanie i przeszukiwanie dokumentów XML: XPath a XQuery; 11. XML w technologii Web Services: XML-RPC, SOAP, WSDL 12. Zastosowania XML 27

Walidacja dokumentów XML Definicja typu dokumentu określa schemat możliwych dokumentów XML tworzonych zgodnie z danym typem. W schemacie definiowane są: -znaczniki (elementy), jakie mogą być wykorzystane w dokumencie; -atrybuty dla określonych elementów; -wybór (lub definicja) typów danych dla powyższych encji, -encje. Najbardziej popularne (rekomendacje W3C) metody definicji schematu dokumentu XML to: -DTD (Document Type Definition); -XML Schema. DTD jest definiowany bezpośrednio w rekomendacji XML. Schemat XML Schema, jako późniejszy, definiowany jest w oddzielnej specyfikacji: (struktura) http://www.w3.org/tr/xmlschema-1/ (typy danych) http://www.w3.org/tr/xmlschema-2/ 28

Walidacja dokumentów XML - DTD Obsługa schematu dokumentu XML zawiera zawsze dwa zasadnicze elementy: 1. Definicję schematu 2. Wywołanie schematu. W przypadku wykorzystania DTD definicja schematu może być: 1. częścią składową dokumentu XML (wówczas atrybut standalone= yes ), 2. rozdzielnym dokumentem (wówczas atrybut standalone= no ). Zanim rozpatrzymy reguły definicji DTD rozpatrzmy sposób jego powiązania z dokumentem XML. 1. {dokument samodzielny} - <!DOCTYPE salon[ tu definicja DTD ]>, 2. {dokument złożony} - <!DOCTYPE salon SYSTEM "salon.dtd">,czyli stosuje się identyfikator systemowy (ew. publiczny). 29

Walidacja dokumentów XML - DTD Definicja DTD zawiera listę typów encji możliwych do wykorzystania w tworzonym dokumencie instancji DTD. 1. ELEMENT deklaracja typu: elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>' contentspec ::= 'EMPTY' 'ANY' Mixed children children ::= (choice seq) ('?' '*' '+')? cp ::= (Name choice seq) ('?' '*' '+')? choice ::= '(' S? cp ( S? ' ' S? cp )+ S? ')' seq ::= '(' S? cp ( S? ',' S? cp )* S? ')' Mixed ::= '(' S? '#PCDATA' (S? ' ' S? Name)* S? ')*' '(' S? '#PCDATA' S? ')' Przykłady: <!ELEMENT salon (samochod)+> <!ELEMENT samochod (marka, model, kolor, silnik)> <!ELEMENT marka (#PCDATA)> 30

Walidacja dokumentów XML - DTD Warto szczególnie zwrócić uwagę na jednostkę Mixed. Jej wykorzystanie umożliwia bowiem stworzenie treści elementu jako przeplatanego tekstu z subelementami. W DTD można określić wymagania co do typu tych elementów, lecz nie można zdefiniować kolejności ich występowania czy ich liczby w dokumencie XML. Jednostka Mixed umożliwia w zastosowaniach XML stworzenie wersji obiektu danych XML nazywanego jako ukierunkowany na dokument ( Document oriented ). Druga postać obiektów danych XML, nazywanych jako ukierunkowane na dane ( Data oriented ), nie zawiera przeplatania tekstu z subelementami. 31

Walidacja dokumentów XML - DTD 2. ATTLIST deklaracja listy atrybutów elementu AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>' AttDef ::= S Name S AttType S DefaultDecl AttType ::= StringType TokenizedType EnumeratedType StringType ::= 'CDATA' TokenizedType ::= 'ID' 'IDREF' 'IDREFS' 'ENTITY' 'ENTITIES' 'NMTOKEN' 'NMTOKENS' EnumeratedType ::= NotationType Enumeration NotationType ::= 'NOTATION' S '(' S? Name (S? ' ' S? Name)* S? ')' Enumeration ::= '(' S? Nmtoken (S? ' ' S? Nmtoken)* S? ')' DefaultDecl ::= '#REQUIRED' '#IMPLIED' (('#FIXED' S)? AttValue) #REQUIRED atrybut zawsze musi wystąpić, #IMPLIED atrybut nie ma wartości domyślnej, #FIXED atrybut ma podaną wartość stałą 32

Walidacja dokumentów XML - DTD Przykłady: <!ATTLIST salon wlasciciel CDATA #REQUIRED> <!ATTLIST samochod VIN NMTOKEN #REQUIRED nrsilnika NMTOKEN #REQUIRED> <!ATTLIST silnik miara CDATA #REQUIRED> 33

Walidacja dokumentów XML - DTD 3. ENTITY deklaracje i definicje encji zgodnie z opisem podanym na wcześniejszych slajdach. Przykłady: <!ENTITY wlasciciel "Jacek W. Rumiński"> <!ENTITY kontakt "&wlasciciel; jwr@eti.pg.gda.pl"> 34

Walidacja dokumentów XML - DTD DTD pełna definicja DTD (zgodna z poprzednim przykładem dokumentu XML salon ) <!ENTITY wlasciciel "Jacek W. Rumiński"> <!ENTITY kontakt "&wlasciciel; jwr@eti.pg.gda.pl"> <!ELEMENT salon (samochod)+> <!ELEMENT samochod (marka, model, kolor, silnik)> <!ELEMENT marka (#PCDATA)> <!ELEMENT model (#PCDATA)> <!ELEMENT kolor (#PCDATA)> <!ELEMENT silnik (#PCDATA)> <!ATTLIST salon wlasciciel CDATA #REQUIRED> <!ATTLIST samochod VIN NMTOKEN #REQUIRED nrsilnika NMTOKEN #REQUIRED> <!ATTLIST silnik miara CDATA #REQUIRED> 35

Walidacja dokumentów XML - DTD Przykładowe wady DTD: 1. ograniczone możliwości definicji struktury dokumentu (np. brak grupowania, referencji, opisów,itp.), 2. brak typów danych innych niż tekstowy, 3. brak możliwości definicji własnych typów danych, 4. brak możliwości definicji kolejności i liczebności występowania elementów, 5. niezgodność ze specyfikacją XML (efekt: specjalne programy rozbioru i syntezy dokumentu DTD). Eliminacja tych wad XML Schema 36

Walidacja dokumentów XML XML Schema XML Schema tworzony jest jako dokument XML zawierający główny element o nazwie <schema> zgodnie z wymaganą i definiowaną dla niego przestrzenią nazw: <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> 37

Walidacja dokumentów XML XML Schema Weryfikacja poprawności danego dokumentu XML względem schematu XML Schema wymaga wskazania pliku schematu. Realizowane to jest albo poprzez program dokonujący rozbioru (pliki jako parametry) albo poprzez jawne zapisanie w dokumencie XML referencji do schematu. Referencję zapisuje się z wykorzystaniem przestrzeni nazw: xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" Przykładowo: <salon xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.jtech.com/salon http://www.jtech.com/salon.xsd" <!-- etc. --> </salon> wlasciciel= Jacek Ruminski > 38

Walidacja dokumentów XML XML Schema Definicja schematu dokumentu zgodna z XML Schema wymaga zbudowania dokumentu XML, zawierającego elementy zgodne z wymaganą przestrzenią nazw ( xsd ). Każdy element umożliwia zdefiniowanie określonego aspektu schematu poprzez podanie wartości atrybutów tego elementu. Atrybuty są integralną częścią elementów przestrzeni XSD, zdefiniowanych w rekomendacji. Przykładowo definicja typu elementu projektowanego dokumentu XML wymaga określenia: <xsd:element name= TU_NAZWA_PROJEKTOWANEGO_ELEMENTU type= TU_TYP_DANYCH_ZGODNIE_Z_XML_SCHEMA... inne atrybuty> <...subelementy/> </xsd:element> np.: <xsd:element name= samochod type= xsd:string /> Definicja elementu o nawie samochod i typie danych jego treści jako łańcuch znaków. Element nie posiada żadnych atrybutów ani subelementów. 39

Walidacja dokumentów XML XML Schema Element główny dokumentu XML (root) zawiera najczęściej subelementy. Zgodnie ze specyfikacją XML Schema, subelementy są częścią definicji typu elementu. Specyfikacja wyróżnia dwie klasy typów: simpletype oraz complextype. Typ simpletype jest zarezerwowany tylko do przechowywania wartości, bez określania subelementów czy atrybutów. Zatem jeśli dany element ma mieć subelementy to konieczne jest zapisanie ich w elemencie przestrzeni XSD o nazwie <xsd:complextype>. Przykładowo: <xsd:element name= samochod > <xsd:complextype> <...> <...> <xsd:element name= marka type= xsd:string /> <xsd:element name= model type= xsd:string /> </xsd:complextype> </xsd:element> 40

Walidacja dokumentów XML XML Schema Tworząc złożony typ danych dla elementu można określić warunki wykorzystania czy kolejności występowania subelementów. Do tych celów służą trzy podstawowe specyfikatory: <xsd:sequence> - subelementy zdefiniowane w tym elemencie muszą w instancji schematu (dokumencie XML) wystąpić w podanej kolejności; <xsd:all> - kolejność występowania subelementów w dokumencie XML jest dowolna; <xsd:choice>- element dokumentu XML zawierać może jeden ze zdefiniowanych subelementów lub jedną z grup subelementów. Przykład: <xsd:element name= marka > <xsd:complextype> <xsd:choice> </xsd:choice> <xsd:element name= BMW type= xsd:string /> <xsd:element name= Mercedes type= xsd:string /> </xsd:complextype> </xsd:element> 41

Walidacja dokumentów XML XML Schema Złożony typ danych może być zdefiniowany poza elementem i oznaczony określoną nazwą typu. Wówczas można go używać jako typu danych (podobnie jak xsd:string). Przykład: <xsd:element name= komputer type= PC > </xsd:element> <xsd:complextype name= PC > <xsd:choice> <xsd:element name= IntelBased type= xsd:string /> <xsd:element name= AMDBased type= xsd:string /> </xsd:choice> </xsd:complextype> 42

Walidacja dokumentów XML XML Schema Deklaracje elementów i atrybutów można łączyć w grupy. Elementy lub grupy należą do danej grupy, jeśli są subelementami elementu <xsd:group>, np.: <xsd:group name= samochod ><xsd:sequence> <xsd:element name= marka type= xsd:string /> <xsd:element name= model type= xsd:string /> </xsd:sequence></xsd:group> Do deklaracji grupy, deklaracji elementu lub atrybutu można się odwołać poprzez użycie atrybutu ref, np.: <xsd:element name= auto ><xsd:complextype> <xsd:group ref= samochod /> </xsd:complextype> </xsd:element> Za pomocą atrybutów minoccurs oraz maxoccurs elementu <xsd:element> można ponadto określić dopuszczalną powtarzalność deklarowanego elementu. 43

Walidacja dokumentów XML XML Schema Definiując złożony typ danych dla elementu docelowego można wykorzystać atrybut mixed elementu <xsd:complextype>, którego wartość true oznacza, że tekst może przeplatać się z subelementami (Document-oriented). Podobnie jak w DTD również i w XML Schema nie ma możliwości określania lokalizacji treści elementu względem subelementów. Przykład: XML Schema: <xsd:element name= student ><xsd:complextype mixed= true > <xsd:group ref= samochod /> </xsd:complextype> </xsd:element> Element dokumentu XML: <student> Franek ma <marka> Renault</marka> <model>clio</model>, którym jeździ codziennie nad morze</student> 44

Walidacja dokumentów XML XML Schema Deklaracja atrybutu występuje zawsze na końcu deklaracji złożonego typu danych. Atrybut definiowany jest poprzez atrybuty elementu <xsd:attribute>, np.: <xsd:element name= auto ><xsd:complextype> <xsd:group ref= samochod /> <xsd:attribute name= VIN type= xsd:decimal /> </xsd:complextype> </xsd:element> XML Schema umożliwia również deklaracje określające, które elementy muszą być unikalne. Do tych celów służą elementy <xsd:unique> lub <xsd:key>. Elementy te zawierają zgodnie ze specyfikacją XPath adres unikalnego elementu, np.: <xsd:key name= peselkluczem > <xsd:selector xpath= student /> <xsd:field xpath= pesel /> </xsd:key> 45

Walidacja dokumentów XML XML Schema W XML Schema można definiować własne, proste typy danych. Służy do tego element <xsd:simpletype>. Nazwa nowego typu definiowana jest jako wartość atrybutu elementu simpletype. Typ bazowy oraz dziedzinę określa szereg subelementów zdefiniowanych w rekomendacji, np..: <xsd:simpletype name="wiek"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="0"/> <xsd:maxinclusive value="130"/> </xsd:restriction> </xsd:simpletype> (typ o nazwie wiek możliwe wartości to liczby całkowite z zakresu 0-130.) <xsd:simpletype name="kod"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{2}-[a-z]{5}"/> </xsd:restriction> </xsd:simpletype> (typ o nazwie kod możliwe wartości muszą być zgodne z wzorcem w postaci wyrażenia regularnego: po dwóch cyfrach występuje myślnik oraz 5 wielkich liter z zakresu kodu ASCII.) W deklaracjach elementów, atrybutów i prostych typów danych stosowane są typy danych zdefiniowane w specyfikacji XML. Należą do nich (kolejny slajd): 46

Walidacja dokumentów XML XML Schema (unconstrained) 47

Walidacja dokumentów XML XML Schema Specyfikacja XML Schema podaje znacznie więcej możliwości kompozycji schematu dokumentu niż te podstawowe wymienione w tym dokumencie. Do ciekawszych zaliczyć jeszcze można następujące elementy: <xsd:union> - unia elementów lub grup; <xsd:annotation> - opis dokumentu, zawiera szereg subelementów, jest stosowany do dokumentacji schematu zamiast tradycyjnego komentarza XML; <xsd:include> - załączenie innego schematu. 48

Walidacja dokumentów XML XML Schema Tylko 10 możliwych elementów samochod Element silnik zawiera atrybut, stąd jest complextype 49

Walidacja dokumentów XML Sprawdzanie poprawności dokumentów - walidacja 1. Omówienie dostępnych narzędzi. 2. Demonstracja 3. Programowanie i walidacja. 50

Walidacja dokumentów XML XML Schema 51

Walidacja dokumentów XML 52

Walidacja dokumentów XML DEMO 5 DEMO 1. Przykładowa walidacja 2. Programowanie 53

Plan wykładu: 1. Wprowadzenie XML a bazy danych; 2. Podstawowe definicje i pojęcia; 3. Cele XML; 4. Charakterystyka dokumentu XML; 5. Rozbiór składniowy dokumentu XML; 6. Poprawność dokumentu XML; 7. Metody definicji typów dokumentów: DTD, XML-Schema; 8. Rodzaje dokumentów XML i formy ich składowania; 9. NXD Native XML Databases; 10. Wyszukiwanie i przeszukiwanie dokumentów XML: XPath a XQuery; 11. XML w technologii Web Services: XML-RPC, SOAP, WSDL 12. Zastosowania XML 54

Składowanie dokumentów XML Składowanie dokumentów XML jest najczęściej związane z rodzajem dokumentu, lub jego zaklasyfikowaniem do danego rodzaju. Zgodnie z tym co przedstawiono wcześniej dokumentu podzielono na: -ukierunkowane na dane -ukierunkowane na dokumenty. Pierwszy rodzaj dokumentu posiada wyraźny podział struktury, bez przeplatania treści elementu XML ze znacznikami. Umożliwia to na proste rozbicie struktury XML i jej odwzorowanie na znane modele danych jak np. hierarchiczny, relacyjny czy obiektowy. Systemy zarządzania bazami danych obsługujące tego rodzaju dokumenty nazywane są XML enabled. Czasami możliwe jest również zastosowanie warstwy pośredniczącej (middleware) odwzorowującej XML na model danych obsługiwany przez określony SZBD. Oprogramowanie warstwy pośredniej realizuje najczęściej odwzorowanie: XML->SQL. 55

Składowanie dokumentów XML W przypadku drugiego typu dokumentów ( document-centric ) tworzone SZBD składają całe dokumenty. Stanowią zatem swoiste kolekcje dokumentów, stąd często słowo kolekcja jest zamienne w tym przypadku względem tabeli (relacji). Kolekcje dokumentów XML są zorganizowane w ramach tzw. Native XML Database (NXD). Bazy dokumentów XML są dedykowane tym właśnie dokumentom, a tworzone dla nich systemy zarządzania umożliwiają podstawowe operacje zapisywania, usuwania, aktualizacji czy wyszukiwania. Z tych względów tworzone są również propozycje norm (rekomendacji) jak np. XML:DB (http://www.xmldb.org/). 56

Składowanie dokumentów XML Wymiana danych pomiędzy bazą danych a dokumentem XML wymaga odwzorowania schematu dokumentu (DTD, XML Schema) na schemat bazy danych. Odwzorowanie jest często realizowane za pomocą implementacji wyrażeń SQL, XQuery czy XPath. Jeżeli z jakiś przyczyn dana struktura dokumentu XML nie może być bezpośrednio odwzorowana na strukturę bazy danych stosuje się dodatkową transformację dokumentu XML do innej postaci (zastosowanie XSLT, o czym później). Odwzorowanie schematu dokumentu wykorzystuje zasadniczo tylko logiczną strukturę dokumentu, i co więcej, ogranicza się jedynie do najważniejszych jej części tj.: elementów i atrybutów. Odwzorowanie realizowane jest najczęściej do dwóch postaci: -tablicowej, -obiektowo-relacyjnej. 57

Składowanie dokumentów XML Odwzorowanie tablicowe jest bardzo często realizowane przez warstwy pośrednie, a polega na utworzeniu lub odtworzeniu struktury drzewiastej dokumentu XML w formie uszczegółowiania elementów bazy danych: <bazadanych> <tabela> <wiersz> <kolumna1>...</kolumna1> <kolumna2>...</kolumna2>... <kolumnan>...</kolumnan> </wiersz>... </tabela> <tabela>... </tabela>... </bazadanych> 58

Składowanie dokumentów XML Odwzorowanie obiektowo-relacyjne dokumentu XML polega na utworzeniu struktury klasy danego typu (np. bazując na complex element type dla XML Schema), a później odwzorowaniu go na model relacyjny (klasy na tabele; pola na kolumny, itd.). Należy podkreślić iż odwzorowanie obiektowo-relacyjne nie wykorzystuje modelu DOM danego dokumentu, który jest raczej właściwy dla organizacji logicznej dokumentu XML (relacja Element- >Element zamiast Samochod->Kierowca), niż dla reprezentacji danych. Dokumenty typu data-centric są również przechowywane w bazach danych typu NXD. Jedną z przyczyn zastosowania tego rodzaju bazy dla dokumentów data-centric może być potrzeba szybkiego pobierania dokumentów XML z bazy. Ponieważ w NXD składowane są dokumenty, zatem nie ma potrzeby ich tworzenia w odpowiedzi na dane żądanie pobrania. 59

Składowanie dokumentów XML Oddzielnym zagadnieniem jest odwzorowanie typów danych. W XML zasadniczym typem danych jest tekst. Zatem konieczne jest przeprowadzenie konwersji typów uwzględniającej zarówno zakres jak i rodzaj danych. Ponadto należy pamiętać o stosowanych zestawach danych. XML bazuje zasadniczo na Unicodzie, z wyjątkiem wybranych znaków sterujących, które nie powinny być wykorzystane jako treść danych. Kolejnym problemem są dane binarne. Odniesienie do nich jest możliwe poprzez zastosowanie encji, nie podlegających rozbiorowi (interpretacji przez procesor XML). Ponieważ encja jest jednak elementem fizycznym a nie logicznym struktury XML zatem nie jest odwzorowywana. Inna możliwość to zakodowanie bajtów znakami (kodowanie Base64). Brak jest jednak standardowych notacji na oznaczenie, że dany element zawiera tego typu zakodowane dane, stąd jest to tylko i wyłącznie w opcji oprogramowania realizującego odwzorowanie. 60

Składowanie dokumentów XML Składowanie dokumentów XML może również być zrealizowane na wiele sposobów. Pierwsze możliwe rozwiązanie to zapis dokumentu XML w modelu hierarchicznym -> jako plik w systemie plików. Innym rozwiązaniem może być zastosowanie typów danych LOB (Large OBject, np.. CLOB -> Character Large OBject). Jeszcze innym rozwiązaniem jest składowanie dokumentu XML jako obiektu w obiektowej bazie danych. Składowanie dokumentów XML wymaga w tym wypadku spełnienia warunku identyczności dokumentu dostarczonego do archiwum z dokumentem pobieranym z archiwum (round-tripping). Jest to niezwykle ważna własność szczególnie dla procesu podpisywania dokumentów XML (XML Digital Signature Standard); gdzie każdy znak dokumentu musi wystąpić aby pozytywnie zweryfikować podpis. Składowanie dokumentów XML (tzn. w formie document-centric) realizowane jest w ramach technologii Native XML Databases. 61

Plan wykładu: 1. Wprowadzenie XML a bazy danych; 2. Podstawowe definicje i pojęcia; 3. Cele XML; 4. Charakterystyka dokumentu XML; 5. Rozbiór składniowy dokumentu XML; 6. Poprawność dokumentu XML; 7. Metody definicji typów dokumentów: DTD, XML-Schema; 8. Rodzaje dokumentów XML i formy ich składowania; 9. NXD Native XML Databases; 10. Wyszukiwanie i przeszukiwanie dokumentów XML: XPath a XQuery; 11. XML w technologii Web Services: XML-RPC, SOAP, WSDL 12. Zastosowania XML 62

Składowanie dokumentów XML Native XML Databases (NXD) określa ogólną klasę systemów zarządzania bazami danych tworzących kolekcje dokumentów XML w formie pełnej (tzn., wszystkie znaki dokumentu XML są składowane). Podsumowanie metod organizacji baz danych XML przedstawia poniższy diagram (na przykładzie Oracle XML DB). http://otn.oracle.com/tech/xml/htdocs/xdbdemo1_viewlet.html 63

Składowanie dokumentów XML NXD umożliwiają składowanie zarówno elementów/atrybutów jak i komentarzy, encji nie podlegających rozbiorowi, itp. NXD obsługują dedykowane dla XML języki zapytań. Jest to istotna funkcja, gdyż trudno jest zdefiniować i wykonać w SQL lub OQL niektóre zapytania dotyczące składni dokumentu XML. Podjęto szereg prób definicji NXD; jedna z najbardziej popularnych została sformułowana przez XML:DB (na łamach listy dyskusyjnej): NXD: Definiuje logiczny model dokumentu XML w odróżnieniu do danych dokumentu oraz umożliwia składowanie i odzyskiwanie dokumentów zgodnie z tym modelem. Przykładowymi modelami są: XPath, DOM, SAX. Jednostką danych modelu jest dokument XML (w modelu relacyjnym krotka, w modelu obiektowym obiekt). Model nie określa fizycznej organizacji danych. 64

Składowanie dokumentów XML Cechy realizacji NXD: - operują na pojęciu kolekcji (relacja w RDB) dokumentów XML (krotka w RDB); - wykorzystują dedykowane języki zapytań, np.: XPath, XQL, Xquery; - wykorzystują dedykowane metody aktualizacji danych, np.: XUpdate; - dostarczają API dla rozwoju aplikacji; - wspomagają indeksowanie dokumentów; - normalizacja dokumentów realizowana jest na poziomie projektu schematu (możliwe są jednak elementy wielowartościowe); - integralność referencyjna zapewnia istnienie poprawnych dokumentów XML wskazywanych przez XLink lub inne mechanizmy referencyjne. Popularną (poza komercyjnymi) wersją NXD jest Xindice (Apache, dawniej dbxml). 65

Składowanie dokumentów XML Składowanie dokumentów XML w bazach danych zostało również określone przez 14 rozdział normy SQL. Zagadnienia te omówimy po zapoznaniu się z technologiami XPath i XQuery. 66

Projekt Przygotowanie i realizacja kierunku inżynieria biomedyczna studia międzywydziałowe współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.