TIN Techniki Internetowe zima

Podobne dokumenty
TIN Techniki Internetowe zima

Przykładowy dokument XML

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

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

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.

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

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 Schema w przykładach

Podstawy XML-a. Zaawansowane techniki programowania

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

Wykorzystywanie parsera DOM w programach Java i PL/SQL

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

DTD - encje ogólne i parametryczne, przestrzenie nazw

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

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

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

Wprowadzenie do XML schema

Wprowadzenie do technologii XML

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

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

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

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

XML extensible Markup Language. Paweł Chodkiewicz

Model semistrukturalny

c TP: anything: 13 listopada 2004 roku 1

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

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

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

Wprowadzenie do XML. Tomasz Przechlewski

Procesowanie dokumentów XML

XML Path Language (XPath)

SAX i DOM wykorzystanie XML-a we własnych aplikacjach. Simple API for XML Parsing Document Object Model

Rola języka XML narzędziem

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

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

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

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Schematy XML. Tomasz Traczyk.

XML DTD XML Schema CSS

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

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

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

TIN Techniki Internetowe zima

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Słowem wstępu. Standard: W3C XPath razem XSLT 1.0. XPath razem z XQuery 1.0 i XSLT 2.0. XPath trwają prace nad XPath 3.

Programowanie internetowe

Relacyjne bazy danych a XML

XML extensible Markup Language. część 4

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

- 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

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

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

Prezentacja i transformacja

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

XML i nowoczesne technologie zarządzania treścią

XQuery. XQuery. Przykład. dokument XML. XQuery (XML Query Language) XQuery 1.0: An XML Query Language. W3C Recommendation

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

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

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

INTEGRACJA I EKSPLORACJA DANYCH

Programowanie obiektowe

Języki XPath i XQuery

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

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

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

Wprowadzenie do technologii XML

XML i nowoczesne metody zarządzania treścią

Drzewa DOM. Maciej Zakrzewicz.

Technologie zarządzania treścią

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

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

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

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

XML extensible Markup Language. część 3

Komunikacja i wymiana danych

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

XML i nowoczesne metody zarządzania treścią

JAVA W SUPER EXPRESOWEJ PIGUŁCE

TIN Techniki Internetowe zima

Biblioteki dzielone, XML i readline

SAX2 pakiet org.xml.sax

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

Aplikacje internetowe laboratorium XML, DTD, XSL

TIN Techniki Internetowe zima

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

XML i Java 1. XML Budowa dokumentu XML. Projektowanie systemów informatycznych

Zaawansowany kurs języka Python

Języki XPath i XQuery

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Modele dostępu do dokumentu XML. Implementacja modelu parser. SAX2 pakiet org.xml.sax. Działanie modelu SAX przykład

libxml2 parser DOM dla C++ czwartek, 8 grudnia 11

Prezentacja i transformacja

Języki XPath i XQuery

XML w bazach danych i bezpieczeństwie

Metody reprezentacji informacji Przedmiot:

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

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

Programowanie Komponentowe WebAPI

Transkrypt:

TIN Techniki Internetowe zima 2016-2017 Grzegorz Blinowski Instytut Informatyki Politechniki Warszawskiej

Plan wykładów 2 Intersieć, ISO/OSI, protokoły sieciowe, IP 3 Protokół IP i prot. transportowe: UDP, TCP 4 Model klient-serwer, techniki progr. serwisów 5 Protokoły aplikacyjne: telnet, ftp, smtp, nntp, inne 6 HTTP 7 HTML i okolice 8 XML 9, 10, 11 Aplikacje WWW, CGI, sesje, serwery aplikacji serwlety, integracja z backended SQL 12 Aspekty zaawansowane: wydajność, przenośność, skalowalność; klastering 13 SOAP

XML

XML Rola HTML? (przypomnienie): HTML opisuje wyłącznie formatowanie tj. sposób prezentacji dokumentu Meta-informacja nie jest w żaden sposób wyrażana w HTML HTML nie wyraża i nie opisuje też semantyki (znaczenia informacji) w HTML nie ma oddzielenia znaczenia tekstu i sposobu jego prezentacji Czego nie da się zrealizować w HTML? (przykłady): Jednoznaczego opisu dokumentów co oznacza tytuł? Wyszukiwania dokumentów np. wg. tytułu, autora lub innych atrybutów znaczeniowych W konsekwencji np. wymiany danych między aplikacjami

XML - pierwszy przykład <bibliography> <book ID= "MiM"> <authors> <author>bułhakow Michał</author > <translator>i. Lewandowska </translator> </authors > <title> Mistrz i Małgorzata </title > <publisher>czytelnik</publisher > <year>1992</ year> </ book >... </bibliography >

XML - pierwszy przykład <bibliography> Nazwa elementu ELEMENT... <book ID= "MiM"> <authors> <author>bułhakow Michał</author > <translator>i. Lewandowska </translator> </authors > <title> Mistrz i Małgorzata </title > <publisher>czytelnik</publisher > <classification type="fiction"/> <year>1992</ year> </ book > </bibliography > Pusty element Wartość atrybutu Nazwa atrybutu

XML - drzewo book bibliography book... XML może też reprezentować: relacyjne bazy danych authors title struktury obiektowe author Bułhakow translator Lewandowska Dokument XML może być przekształcony w drzewo obrazujące hierarchiczne zależności elementów... Mistrz i Małgorzata <bibliography> <book ID= "MiM"> <authors> <author>bułhakow Michał</author > <translator>i. Lewandowska </translator> </authors > <title> Mistrz i Małgorzata </title > <publisher>czytelnik</publisher > <classification type="fiction"/> <year>1992</year> </ book > </bibliography >

XML i inne notacje tekstowe XML porządkuje systemy reprezentacji danych w Internecie (i nie tylko) W sensie czysto teoretycznym XML nie wnosi wiele nowego - koncepcje stosowane w XML znane są od co najmniej 30-40 lat: XML w LISP: (books (book (author Bułhakow ) (title Mistrz i Małgorzata ) (citation (line W białym płaszczu z ) (line ) )))

XML - Zalety Może być tworzony przy pomocy najprostszych narzędzi tekstowych Prosty w automatycznej analizie (prosty parser) Dokument zawiera "w sobie" drzewo rozbioru składniowego (parse tree) Dokument może zawierać bezpośrednio w swojej treści opis schematu danych (DTD) Pozwala na całkowitą separację treści od prezentacji (XML+XSL(T)) Jest niezależny od systemów operacyjnych, konkretnego oprogramowania, itd.

Definicja struktury dok. XML Co to znaczy "zdefiniujemy strukturę"? Określimy zestaw dopuszczalnych: elementów, atrybutów, itd. zdefiniujemy dopuszczalne zawartości elementów (np.: tekst, inne), przypiszemy atrybuty do elementów Jak zdefiniujemy strukturę? dokument XML bez określonej struktury - dobre do prostych "nie publicznych" zastosowań, DTD Document Type Definition, XML Schema Inne, np.: Relax NG (OASIS), Schematron, ISO DSDL (obejmuje Relax NG i Schematron)

Poprawność składni XML Koniec ze złymi nawykami (z HTML-a)! Dokument musi być poprawny syntaktycznie - składniowo ("well-formed"): wartości atrybutów ujęte w apostrofy lub cudzysłowy Niepusty element musi mieć znacznik otwierający i zamykający Znaczniki muszą być poprawnie zagnieżdżone (nie ma nakładających się elementów) Dokument musi być poprawny strukturalnie - semantycznie: struktura dokumentu zgodna ze strukturą zdefiniowaną w definicji typu dokumentu, w odpowiednich elementach obecne wszystkie wymagane atrybuty.

Składnia XML Znaki: Unicode Deklaracja XML: <?xml version="1.0" encoding="iso-8859-2" standalone="no"?> Znaczniki: <tag attributename="attribute-value"> </tag> Znacznik elementu pustego: <br> </br> -> <br/>

DTD XML - gramatyka XML DTD: bezkontekstowa (CFG) <!ELEMENT bibliography book*> <!ELEMENT book (authors,classification?,title)> <!ELEMENT authors author+> <!ELEMENT ElementName ContentModel> Gramatyka CFG bibliography book authors book* authors,classification?,title author+ lhs = element (name) rhs = wyr. reg. złożone z elementów + stringów (PCDATA)

DTD - Document Type Definition Definicja nazw elementów i struktury: Sekwencja 0 lub więcej Dekl. typu elementu Sekwencja 1 lub więcej <!ELEMENT bibliography book*> <!ELEMENT book (authors, classification?, title)> <!ELEMENT authors author+> <!ELEMENT author (#PCDATA)> <!ELEMENT classification EMPTY> <!ELEMENT title (#PCDATA)> <!ATTLIST classification type ENTITY #REQUIRED> <!ATTLIST paper ID ID> Dekl. listy atrybutów Ciąg znaków "Parsed Character Data"

PCDATA i CDATA PCDATA - Parsed character data nie może zawierać znaków i sekwencji: "<", "&", "]]>" CDATA - Character data dane nie analizowane (ignorowane) przez parser Przykład: <![CDATA[ function matchwo(a,b) {. } ]]>

DTD - podstawy składni Deklaracja DOCTYPE (nagłówek dokumentu): <!DOCTYPE nazwa id-zewnętrzny [ deklaracje ]> Deklaracja elementu: <!ELEMENT nazwa (reguła)> <!ELEMENT ElementName ContentModel> Deklaracja atrybutów: <!ATTLIST element nazwa-attr typ-attr wart-domyślna nazwa-attr typ-attr wart-domyślna...>

DTD - definicje elementów Deklaracja <element e> liczność: R? R* R+ R 1 R 2..., R n R 1, R 2,..., R n #PCDATA EMPTY (#PCDATA e*)* ANY Znaczenie Dokładnie jeden <element e> Zero lub jedno R Zero lub więcej R Jedno lub więcej R Dokładnie jedno z R i Sekwencja R, kolejność ma znacznie Ciąg znaków Pusty Zawartość mieszana Cokolwiek

DTD - grupowanie elementów <!ELEMENT book ((author editor), title, isbn)> <!ELEMENT author (first, last)> <!ELEMENT foo (a b (c, d, e, (f g (h, i))))> Ograniczenia: Wewnątrz grupy nie można mieszać sekwencji i wyboru: Źle: <!ELEMENT foo (a b, c)> Dobrze: <!ELEMENT foo (a (b, c))> Dobrze : <!ELEMENT foo ((a b), c))> gramatyka musi być deterministyczna Źle : <!ELEMENT foo ((a, b) (a, c))>

DTD - Definicje atrybutów <person ID="bm"> Jan Nowak </person>... <bibliography> <book ID= "MiM"> <authors> <author authorref="bm">bułhakow Michał</author > <translator>i. Lewandowska </translator> </authors > <title> Mistrz i Małgorzata </title > <classification type="fiction"/> <publisher>czytelnik</publisher > <year>1992</ year> </book > Identyfikator obiektu Wewnątrz-dokumentowe odwołanie typu IDREF Odwołanie do zewn. Encji

Typ DTD - definicje atrybutów Znaczenie ID Identyfikator (token) unikalny w dokum. IDREF Odwołanie do identyfikatora ID IDREFS Odwołanie do identyfikatorów ID ENTITY Zewnętrzna encja (obraz, wideo, ) ENTITIES Zewnętrzne encje CDATA Ciąg znaków NMTOKEN Leksem (name token) NMTOKENS Leksemy NOTATION Dane inne niż XML Enumeration Wyliczenie opcji Conditional SectionINCLUDE & IGNORE Atrybuty mogą być: REQUIRED (wymagane), IMPLIED (opcjonalne) mogą mieć też wartości domyślne, które mogą być FIXED (stałe)

DTD - Definicje atrybutów - przykłady <!ATTLIST pudelko dlugosc CDATA "0"> <!ATTLIST pudelko szerokosc CDATA "0"> <!ATTLIST krawedz widoczna (tak nie) "nie"> <!ATTLIST osoba stan.cywilny (wolny zonaty zamezna wdowiec wdowa rozwiedziony rozwiedziona nieznany) #IMPLIED> Każda osoba ma identyfikator osoba.id Osoba może mieć zdefiniowanego szefa Identyfikator szefa jest określony jako odwołanie do zdefiniowanego identyfikatora <!ATTLIST osoba osoba.id ID #REQUIRED> <!ATTLIST osoba szef.ref IDREF #IMPLED> <osoba osoba.id= 110 >Jan Kowalski</osoba> <osoba osoba.id= 120 szef.ref= 110 >Jan Nowak</osoba>

Encje Encja (entity): Nazwany tekst lub inna dana fizyczna reprezentacja obiektu informacyjnego, uogólniony "plik", jednostka fizycznej budowy dokumentu, uogólnienie pojęcia "makro". Dokument to nie plik i to nie encja: encja dokumentu ( document entity ), zawartość dokumentu może znajdować się w wielu encjach (reprezentowanych np. przez pliki).

Encje Typy encji: ogólne - w dok. XML zastępują ciąg znaków parametryczne - występują wyłącznie w def. typu dokumentu i są rozwijane wg. definicji we wcześniejszym DTD, odpowiadają prostym makrodefnicjom w preprocesorze C zewnętrzne - pozwalają na "wstawienie" zewnętrznego dokumentu XML do dok. bieżącego binarne - pozwalają na zadeklarowanie danych nietekstowych

Encje ogólne Encje ogólne predefinowane (znakowe): & & < < > > &apos; ' " " <!ENTITY nazwa "tekst"> Przykład: <!ENTITY copyright "&#A9;"?> Używamy zamiast ciągu znaków, np. wtedy gdy wystąpił by konflikt z zarezerwowanymi znakami parsera W dekl. encji nie mogą wystąpić odwołania wzajemne!

Encje parametryczne <!ENTITY % nazwa tekst> Przykład: <!ENTITY % pcdata "(#PCDATA)"> <!ELEMENT author %pcdata;> <!ENTITY % expandme "INCLUDE">.. <![ %expandme; [ ELEMENT description (#PCDATA)> ]]> Rozwijane między znakami % i ; Rodzaj "makrodefinicji" Są rozwijane wyłącznie w obrębie DTD Porównaj z definicją INCLUDE, IGNORE! W deklaracjach encji parametrycznych nie mogą wystąpić odwołania wzajemne!

DTD - Definicje warunkowe Włączanie i wyłączanie fragmentów DTD: <![INCLUDE[ <!ELEMENT book (authors, classification?, title)]> ]]> <![IGNORE[ <!ELEMENT book (authors, classification?, title)]> ]]> Konstrukcje te mają praktyczny sens w połączeniu z encjami parametrycznymi

Encje binarne / nieprzetwarzalne (unparsed entity) Przykład: <!ENTITY %obraz1 SYSTEM "http://www.xyz.pl/img1.gif" NDATA GIF89a> Deklaracja Notacji <!Notation GIF89a SYSTEM "-//CompuServe/NOTATION Grafic Interchange Format 89a//EN"> Encje binarne pozwalają na zadeklarowanie danych nietekstowych Notacje używane w połączeniu z encjami binarnymi uzupełniają informację o typach encji binarnych Notacje informują parser z jakim rodzajem danych nietekstowych ma do czynienia Parser nie analizuje danych binarnych, ale może je przekazać do zewnętrznego programu

Encje ogólne: wewnętrzne i zewętrzne Encje wewnętrzne: DTD: <!ENTITY mb "Michał Bułhakow"> Instancja dokumentu: &mb; urodził się w 1891 roku. Encje zewnętrzne: DTD: <!ENTITY abstr1 SYSTEM "file:///abstrakt.xml"> <!ENTITY abstr2 SYSTEM "file:///intro.xml"> <!ENTITY intro SYSTEM "file:///wstep.xml"> Instancja dokumentu: <paper> &abstr1; &abstr2; &intro; </paper> URL, pokazuje na zewnętrzny plik Logicznie odpowiada wstawieniu zawartości pliku

Rodzaje encji - podsumowanie Encje ogólne Encje parametryczne Encje przetwarzane Encje binarne Encje przetwarzane Encje binarne Encje wewnętrzne Encje zewnętrzne

DOCTYPE Deklaracja DTD może mieć dwie postacie: <!DOCTYPE RootElement SYSTEM DTD_URI? [InternalDeclarations]? > <!DOCTYPE RootElement PUBLIC PUBLIC_ID URI [InternalDeclarations]? > Pierwsza postać jest używana gdy DTD jest "lokalne" w stosunku do danego dokumentu Druga postać jest używana dla ogólnie znanych i przyjętych DTD (np. XHTML)

DOCTYPE SYSTEM <!DOCTYPE RootElement SYSTEM DTD_URI? [InternalDeclarations]? > RootElement - nadrzędny element tego DTD DTD_URI - położenie DTD URI może być względne lub bezwzględne (w sensie ścieżki) Deklaracje wewnętrzne - patrz wcześniej Przykłady: <!DOCTYPE BookList SYSTEM "bookstore.dtd"> <!DOCTYPE BookList SYSTEM http://www.xyz.edu.pl:8888/abc/bookstore.dtd >

DOCTYPE PUBLIC <!DOCTYPE RootElement PUBLIC PUBLIC_ID URI [InternalDeclarations]? > Ta postać używana dla ogólnie znanych, zestandaryzowanych DTD DTD wykraczające poza kręgi jednej organizacji PUBLIC_ID Ogólnie znany, niezmienny URI jak w SYSTEM

Umieszczanie DTD W encji dokumentu: deklaracje encji deklaracje notacji W zewnętrznej encji - definicje wspólne dla wszystkich dokumentów danego typu: elementy atrybuty encje parametryczne I tu, i tu (metoda mieszana) przedefiniowywanie encji parametrycznych, przedefiniowywanie atrybutów, dodawanie nowych atrybutów,

DTD w encji dokumentu <!DOCTYPE bibliography SYSTEM [ <!ELEMENT bibliography book*> <!ELEMENT book (authors, classification?, title)> <!ELEMENT authors author+> <!ELEMENT author (#PCDATA)>... ]> <bibliography> <book> <authors> <author>bułhakow Michał</ author > </authors > <title> Mistrz i Małgorzata </ title >...

bibliografia.dtd: DTD w zawnętrznej encji <!ELEMENT bibliography book*> <!ELEMENT book (authors, classification?, title)> <!ELEMENT authors author+> <!ELEMENT author (#PCDATA)>... Moja-bib.xml: <!DOCTYPE bibliography SYSTEM "bibliografia.dtd"> <bibliography> <book> <authors> <author>bułhakow Michał</author > </authors > <title> Mistrz i Małgorzata </title >

<bibliography> <book class="fikcja"> <authors> <author>&mb;</author > </authors > TIN zima 2016-2017, Grzegorz Blinowski DTD zewnętrzne i wewnętrzne Bibliografia.dtd: (zewnętrzny podzbiór DTD) <!ELEMENT bibliography book*> <!ELEMENT book (authors, classification?, title)> <!ELEMENT authors author+> <!ELEMENT author (#PCDATA)>... Moja-bib.xml: <!DOCTYPE bibliography SYSTEM "bibliografia.dtd"[ <!ENTITY mb "Michał Bułhakow"> Wewnętrzny <!ATTLIST book class #IMPLIED> podzbiór DTD ]>

DTD/XML Terminalogia - Pamiętajmy! DTD - to nie plik.dtd: DTD tworzą zarówno DTD zewnętrzne jak i definicje z DTD wewnętrznego Dokument XML to nie plik.xml: dokument = definicja języka + oznakowanie + dane, instancja dokumentu = tekst zgodny ze zdefiniowanym językiem.

Przestrzenie nazw XML

XML - Przestrzenie nazw "Czyste" DTD - Nazwy elementów i atrybutów tworzone są dowolnie może to prowadzić do niejednoznaczoności: Geometria: <element>circle</element> Chemia: <element>oxygen</element> Jak zapewnić unikalność nazw? Wprowadzić "prefiksy"!

XML - Przestrzenie nazw Jak zapewnić unikalność nazw? Wprowadzić "prefiksy": <h:html xmlns:xdc="http://www.xml.com/books" xmlns:h="http://www.w3.org/html/1998/html4"> <h:head><h:title>book Review</h:title></h:head>... <xdc:bookreview> <xdc:title>xml: A Primer</xdc:title>... </h:html> Bez ryzyka pomyłki możemy mieszać różne "słowniki" Uwaga: przestrzeń nazw tylko identyfikuje słownik, definicja to kwestia odrębna

XML Schema

XML Schema Wady DTD: odrębny język (czy nie byłoby przyjemnie zdefiniować strukturę XML w XML?) Brak: przestrzeni nazw, typów danych, dziedziczenia Zalety DTD Elastyczny, semi-strukturalny Szeroko przyjęty Bazuje na SGML

XML Schema http://www.w3.org/2001/xmlschema XML Schema definiuje: nowe elementy poprzez tagi: <element name= nazwa-elementu...> dla tak zdefiniowanego elementu określamy jego typ (to co może się znaleść między tagami <e>... </e>: n.p.: <element name=... type= string > nowe atrybuty podobnie... aby powiedzieć więcej o zawartości elementu stosujemy typy proste... aby móc wielokrotnie wykorzystać raz zdefiniowane elementy stosujemy typy elementów

XML Schema - Typy Atrybut type - definicja typu: <element name="name" type="string"/> Podelement complextype lub simpletype: <element name="order"> <complextype>... </complextype> <element> Typy proste definiują zbiory wartości atomowych (nie posiadających wewnętrznej struktury XML). Typy proste: wszystkie typy wbudowane (np. string), oraz typy stworzone na ich bazie Typów prostych używa się ich do określania poprawnych wartości atrybutów i zawartości elementów.

XML Schema Typy proste: string, boolean, integer, float, datetime, ID, IDREF, CDATA, Typy złożone: sequence, choice, group, all. Niektóre typy proste: ID, IDREF, CDATA są zastrzeżone tylko dla atrybutów. Kontrola krotności elementów podrzędnych: minoccurs, maxoccurs. Kontrola użycia atrybutów: atrybut use o dopuszczalnych wartościach: required, optional lub prohibited.

XML Schema typy złożone <xsd:element name="person"> <xsd:complextype> <xsd:sequence> <xsd:element name="firstname" type="xsd:string" minoccurs="1" maxoccurs="2"/> <xsd:element name="surname" type="xsd:string"/> <xsd:element name="gender" type="xsd:string"/> <xsd:element name="age" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:id" use="required"/> </xsd:complextype> </xsd:element>

XML Schema - tworzenie typów prostych Własne typy proste można tworzyć przy pomocy aspektów (facets): enumeration, length, minlength, maxlength. list, mininclusive, maxinclusive, minexclusive, maxexclusive, pattern, union, P. Typ utworzony poprzez restrykcję typu prostego: <xsd:element name="wiek"> <xsd:simpletype> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="0"/> <xsd:maxinclusive value="140"/> </xsd:restriction> </xsd:simpletype> </xsd:element>

XML Schema - tworzenie typów prostych Wyrażenia regularne w def. typów prostych: <xsd:attribute name="kod"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{2}-[0-9]{3}"/> </xsd:restriction> </xsd:simpletype> </xsd:attribute>

XML Schema - model mieszany Model mieszany DTD nie pozwala na ograniczenie liczby oraz kolejności podelementów. W XML Schema typ o modelu mieszanym definiuje się jak każdy inny typ: <xsd:element name="event"> <xsd:complextype mixed="true"> <xsd:sequence> <xsd:element name="eventtype" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="duration" type="xsd:string" maxoccurs="2"/> </xsd:sequence> </xsd:complextype> </xsd:element>

XML Schema - deklaracje i typy typ anonimowy: <xsd:simpletype> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="0"/> <xsd:maxinclusive value="140"/> </xsd:restriction> </xsd:simpletype> typ nazwany: <xs:simpletype name="stringtype"> <xs:restriction base="xs:string"/> </xs:simpletype> <xs:complextype name="shiptotype"> <xs:sequence> <xs:element name="name" type="stringtype"/> <xs:element name="address" type="stringtype"/> </xs:sequence> </xs:complextype>

XML Schema - rozszerzenia typu definicyjnego <xsd:complextype name="publication"> <xsd:sequence> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:year"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="paper"> <xsd:complexcontent> <xsd:extension base="publication"> <xsd:sequence> <xsd:element name="publisher" type="xsd:string"/> </xsd:sequence> </xsd:extension> </xsd:complexcontent> </xsd:complextype>

XML Schema - deklaracja globalne i lokalne <xsd:complextype name="publication"> <xsd:sequence> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:year"/> <xsd:element ref="isbn"/> </xsd:sequence> </xsd:complextype> <xsd:element name="isbn"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{2}-\d{3}"/> </xsd:restriction> </xsd:simpletype> </xsd:element>

XML Schema - deklaracje i typy DTD - deklaracja elementu definiuje jednocześnie typ jego zawartości. DTD - w przypadku gdy mamy przypisać ten sam model zawartości wielu elementom musimy powtórzyć definicję modelu (można też użyć encji parametrycznych). XML Schema - typ zawartości - definiujemy nadając nazwę, a następnie przypisujemy do dowolnie wielu elementów I/lub atrybutów. Typ anonimowy można zdefiniować bezpośrednio w deklaracji elementu (jak DTD)

XML - DTD (zestawienie) DTD: Wywodzi się z SGML XML Schema: Zaprojektowany na potrzeby XML-a Specyficzna składnia Składnia XML 10 typów danych 41+ typów danych Brak kontroli tekstowej zawartości elementów Zaawansowana kontrola tekstowej zawartości elementów Mieszany model zawartości Możliwość definiowania własnych typów danych.

XPath, XPointer

XPath Dokument XML ma postać hierarchiczną i może być reprezentowany w postaci drzewa, węzły: elementy, atrybuty, komentarze,... XPATH - język pozwalający na "poruszanie się" po dokumencie XML jak po drzewie XPath = XSLT XPointer ta część Xpointer, która została użyta w XSLT (dalej) Status - rekomendacja W3C

XPath Poruszanie się w hierarchii elementów: /book/chapter - poczynając od korzenia chapter/section - relatywnie /book//section - nie jest bezpośrednim przodkiem */section - dowolny przodek../chapter - wyżej o poziom w hierarchii book[indeks]/chapter - indeks musi być rodzeństwem chapter book[@title="mistrz I małgorzata]/chapter - wybór wg. wartości atrybutu tak naprawdę powyższe konstrukcje są skrótowe - posługujemy się wyrażeniami Xppath:. = self::node().. = parent::node() // = /descendant-or-self::node()/ @ = attribute::

XPATH - poruszanie się po drzewie Krok w sieżce składa się z: kierunku, testu węzła, predykatu Kierunki w ścieżce: child descendant parent ancestor following-sibling preceding-sibling following preceding attribute namespace self descendand-or-self ancestor-or-self Test węzła: nazwa węzła, * wszystkie w. podstawowego typu node() text() comment() Ścieżki: /book/section/ /child::book/child::section (child:: możemy pominąć).//para self::node()/descendant-orself::node()/child::para /doc/chapter[5]section[2]

Przetwarzanie XML Parser XML: analizuje dokument XML, przekazuje wyniki analizy Sprawdza poprawność leksykalną i syntaktyczną Może, ale nie musi sprawdzić poprawności semantycznej (zgodności z modelem) Dostępne parsery XML: b. wiele systemów darmowych i komercyjnych dość typowe - "model parsera" (API) niezależny w dużej mierze od języka programowania i dostępny dla wielu języków (C++, Java, Python, Perl)

Przetwarzanie XML Parser nie walidujący (prosty) sprawdza wyłącznie syntaktyczną poprawność, tj. zgodność z XML nie sprawdza zgodności z DTD (XML Schema) ewentualna kontrola poprawności - po stronie programisty Parser walidujący sprawdzi zgodność z daną definicją (DTD, XML Schema,...) Wynik działania parsera reprezentacja dokumentu w postaci drzewa lub hierarchii obiektów, n.p. - Document Object Model (DOM) Strumień zdarzeń - otwarty/zamknięty element, atrybut, etc. - Simple API for XML - SAX

SAX (parser zdarzeniowy) Definiujemy funkcję callback SetContentHandler() Wywołujemy funkcję parse() Parser przetwarza tekst XML wywołując dostarczone przez programistę funkcje callback: startdocument(), enddocument(), startelement(), endelement(), characters(), ignorablewhitespaces Programista może dowiedzieć się więcej o przetwarzanym elemencie, atrybucie korzystając z funkcji: getlength(), getvalue()

import org.xml.sax.*; import org.xml.sax.helpers.*; class SAXHandler extends DefaultHandler { public void startdocument() { System.out.println("BEGIN"); } public void enddocument() { System.out.println("Koniec."); } public void startelement(string namespaceurl, String localname, String qname, Attributes atts) { System.out.print("[ELEMENT: " + localname); } public void endelement(string namespaceurl, String localname, String qname) { System.out.print(localName + " ELEMENT]" ); }

public class SAXExample { public static void main(string[] args) throws Exception { String uri; if(args.length == 0) { throw new Exception("File name?"); } else { uri = args[0]; } } } XMLReader parser = XMLReaderFactory.createXMLReader(); SAXHandler handler = new SAXHandler(); parser.setcontenthandler(handler); parser.parse(uri);

SAX - wady, zalety Zalety: Jednoprzebiegowy, Szybki Mała zajętość pamięci (w szczególności np. plik XML nie musi być cały w pamięci) Dane nieistotne mogą być ignorowane Wady: Nie umożliwia modyfikacji i ponownego wygenerowania dokumentu Szereg rutynowych czynności zrzuconych na programistę, np. budowa drzewa (o ile jest w danym zastosowaniu konieczne) Nie przetwarza i nie waliduje modelu (DTD, XMLSchema)

Parser libxml2 Darmowe narzędzie dostępne dla szeregu platform (Windows, Linux, Unix) Kod źródłowy i API C xmldocptr doc; xmlnodeptr cur; doc = xmlparsefile(docname); if (doc == NULL ) { fprintf(stderr,"niepoprawny dokument\n"); return; } cur = xmldocgetrootelement(doc); if (cur == NULL) { fprintf(stderr,"pusty dokument\n"); xmlfreedoc(doc); return; } if (xmlstrcmp(cur->name, (const xmlchar *) "story")) { fprintf(stderr,"niepoprawny dokument, root node!= <story>"); xmlfreedoc(doc); return; }

Parser libxml2 Iterowanie po drzewie dokumentu: cur = cur->xmlchildrennode; while (cur!= NULL) { if ((!xmlstrcmp(cur->name, (const xmlchar *)"keyword"))) { } key = xmlnodelistgetstring(doc, cur->xmlchildrennode, 1); printf("keyword: %s\n", key); xmlfree(key); cur = cur->next; } Tekst wewnątrz elementu jest jego potomkiem

libxml2 Libmxl2 umożliwia też: Nawigację w drzewie poprzez wyrażenia XPATH Modyfikację drzewa rozbioru Modyfikację elementów Modyfikację atrybutów Zapis drzewa w postaci XML

DOM (Document Object Model) Parser DOM tworzy hierarchię obiektów: document, element, attribute, text, comment API DOM (W3C DOM API) jest w dużej mierze niezależne od języka programowania: get... first/last child, prev/next sibling, childnodes, insertbefore, replace, getelementsbytagname Bazowy model parsera DOM: budowanie dokumentów, nawigacja w strukturze dokumentów, dodawanie elementów i atrybutów, modyfikacje elementów i atrybutów, usuwanie elementów/atrybutów i ich zawartości.

DOM - obiekty parsera Typ Node - węzeł XML: element, tekst,... Właściwości: attributes, childnodes, firstchild, lastchild, parentnode, nodename, nodetype, nodevalue, Operacje: appendchild(n), clonenode(b), removechild(n), haschildnodes(), Typ NodeList pomocniczy lista węzłow (length, item(i)) Type Element Document: Właściwości: documentelement, doctype Operacje: createelement(), createtextnode,...

DOM - wady, zalety Zalety: Pozwala na arbitralne "chodzenie" po drzewie dokumentu Uniwersalny Pozwala na modyfikację i ponowne generowanie dokumentu Istnieją wersje walidujące Wady: Wolny i pamięciożerny Zbyt rozbudowany do prostych aplikacji

Dostępne (wybrane) parsery XML XP (James Clark) - Java, prosty, niewalidujący Expat (James Clark) - Java, C/C++, Python, Perl (xml::parser) Xerces (walidujący, Java, C++ i Perl), Oracle XML Parser for Java (walidujący, DOM), XML4C - IBM XML Parser for C++ (walidujący, DOM), Microsoft XML Core Services (MSXML 4.0, komponent COM)

XML - Standardy Pochodne XML (Extensible Markup Language) XML Namespaces XML DTDs, XML Schema RDF (Resource Description Framework) XSL (Extensible Style Sheet Language) XPath (=XSLT XPointer), XLink XQL, XML-QL (XML Query Language) XMAS (XML Matching And Structuring language) XMLP (XML Protocol (SOAP)) OWL (Web Ontology Language) excelon,...

XML - przykłady formatów http://www.oasis-open.org/cover/xml.html#applications Advertising: adxml place an ad onto an ad network or to a single vendor Literature: Gutenberg convert the world s great literature into XML Directories: dirxml Novell s Directory Services Markup Language (DSML) Web Servers: apachexml parsers, XSL, web publishing Travel: opentravel information for airlines, hotels, and car rental places News: NewsML creation, transfer and delivery of news Human Resources: XML-HR standardization of HR/electronic recruiting XML definitions International Dvt: IDML improve the mgt. and exchange of info. for sustainable development Voice: VoxML markup language for voice applications Wireless: WAP (Wireless Application Protocol) wireless devices on the World Wide Web Weather: OMF Weather Observation Markup Format (simulation) Geospatial: ANZMETA distributed national directory for land information Banking: MBA Mortgage Bankers Association of America --> credit report, loan file, underwriting Healthcare: HL7 DTDs for prescriptions, policies & procedures, clinical trials Math: MathML (Mathematical Markup Language) Surveys: DDI (Data Documentation Initiative) codebooks in the social and behavioral sciences

XML - przykłady formatów CommerceNet eco Framework XML specs. to support interoperability among e-businesses Commerce One Common Business Library (CBL): set of business components, docs. In DTD, XDR, SOX BizTalk Microsoft spec. based on XML schemas cxml (Commerce XML) -- tag-sets for e-procurement into BizTalk Electronic Data Interchange (EDI) RosettaNet Common format for online ordering FpML (Financial products Markup Language): sharing of financial data (interest rate & foreign exchange products) Open Buying on the Internet (OBI) OBI high volume b2b purchasing transactions over the Internet (Office Depot, Lockheed, barnesandnoble, AX... E-commerce and XML VISA Invoices The Visa Extensible Markup Language (XML) Invoice Specification provides a comprehensive list of data elements contained in most invoices, including: Buyer/Supplier, Shipping, Tax, Payment, Currency, Discount, and Line Item Detail. B2B Integration code360 XML-Broker is middleware software that manages XML based transactions

XML - Podsumowanie XML nie jest językiem programowania XML to sposób zapamiętywania danych wraz z ich strukturą w dokumencie tekstowym: bezpłatny, otwarty, elastyczny, niezależny od platformy XML to zbiór mechanizmów do tworzenia języków specyficznych dla zastosowań. Użycie XML-a nie zwalnia od konieczności analizy, projektowania,...

XML - Podsumowania c.d. - Zastosowania Interfejs maszyna - człowiek Prezentacja Formatowanie dokumentów na potrzeby danej platformy (PC - GDI/text, PDA, telefon,...) Metoda komunikacji maszyna - maszyna: uzyskiwanie informacji w dobrze znanej (standardowej postaci) - np. notowania giełdowe, zapytania do baz danych, itp komunikacja "ad hoc" między aplikacjami automatyczne tworzenie i przetwarzanie dokumentów dokumenty tworzone "w locie"