TIN Techniki Internetowe zima

TIN – zima 2015-2016, Grzegorz Blinowski TIN Techniki Internetowe zima 2015-2016 Grzegorz Blinowski Instytut Informatyki Politechniki Warszawskiej ...
2 downloads 3 Views 695KB Size
TIN – zima 2015-2016, Grzegorz Blinowski

TIN Techniki Internetowe zima 2015-2016

Grzegorz Blinowski Instytut Informatyki Politechniki Warszawskiej

TIN – zima 2015-2016, Grzegorz Blinowski

Plan wykładów 2 3 4 5 6 7 8 9, 10, 11 12 13

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

TIN – zima 2015-2016, Grzegorz Blinowski

XML

TIN – zima 2015-2016, Grzegorz Blinowski

XML • Co jest nie tak z 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

TIN – zima 2015-2016, Grzegorz Blinowski

XML - pierwszy przykład Bułhakow Michał I. Lewandowska Mistrz i Małgorzata Czytelnik 1992 ...

TIN – zima 2015-2016, Grzegorz Blinowski

XML - pierwszy przykład

Nazwa elementu

ELEMENT

Bułhakow Michał I. Lewandowska Mistrz i Małgorzata Czytelnik 1992 ...

Pusty element Wartość atrybutu Nazwa atrybutu

TIN – zima 2015-2016, Grzegorz Blinowski

XML - drzewo bibliography book authors author

Bułhakow

...

book

XML może też reprezentować: – relacyjne bazy danych – struktury obiektowe

title translator

Lewandowska

...

Mistrz i Małgorzata Bułhakow Michał I. Lewandowska

Dokument XML może być przekształcony w drzewo obrazujące hierarchiczne zależności elementów

Mistrz i Małgorzata Czytelnik 1992

TIN – zima 2015-2016, Grzegorz Blinowski

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 (line …) …)))

z

…” )

TIN – zima 2015-2016, Grzegorz Blinowski

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.

TIN – zima 2015-2016, Grzegorz Blinowski

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, Schematron, ISO DSDL

TIN – zima 2015-2016, Grzegorz Blinowski

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.

TIN – zima 2015-2016, Grzegorz Blinowski

Składnia XML • Znaki: Unicode • Deklaracja XML: –

• Znaczniki: – –

• Znacznik elementu pustego: –

->


TIN – zima 2015-2016, Grzegorz Blinowski

DTD XML - gramatyka bezkontekstowa (CFG)

XML DTD:



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)

TIN – zima 2015-2016, Grzegorz Blinowski

DTD - Document Type Definition Definicja nazw elementów i struktury:
Sekwencja 0 lub więcej

Dekl. typu elementu

Sekwencja 1 lub więcej

bibliography book*> book (authors, classification?, title)> authors author+> author (#PCDATA)> classification EMPTY> title (#PCDATA)> classification type ENTITY #REQUIRED> paper ID ID> Dekl. listy atrybutów

Ciąg znaków "Parsed Character Data"

TIN – zima 2015-2016, Grzegorz Blinowski

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:

TIN – zima 2015-2016, Grzegorz Blinowski

DTD - podstawy składni Deklaracja DOCTYPE (nagłówek dokumentu):

Deklaracja elementu:

Deklaracja atrybutów:

TIN – zima 2015-2016, Grzegorz Blinowski

DTD - definicje elementów Deklaracja liczność: R? R* R+ R1 | R2 | ..., | Rn R1, R2, ..., Rn

#PCDATA EMPTY (#PCDATA e*)* ANY

Znaczenie Dokładnie jeden Zero lub jedno R Zero lub więcej R Jedno lub więcej R Dokładnie jedno z Ri

Sekwencja R, kolejność ma znacznie Ciąg znaków Pusty Zawartość mieszana Cokolwiek

TIN – zima 2015-2016, Grzegorz Blinowski

DTD - grupowanie elementów

Ograniczenia: • Wewnątrz grupy nie można mieszać sekwencji i wyboru: Źle: Dobrze: Dobrze :



• gramatyka musi być deterministyczna Źle :

TIN – zima 2015-2016, Grzegorz Blinowski

DTD - Definicje atrybutów Jan Nowak ... Identyfikator obiektu

Wewnątrz-dokumentowe odwołanie typu IDREF

Bułhakow Michał I. Lewandowska Odwołanie do zewn. Mistrz i Małgorzata Encji Czytelnik 1992

TIN – zima 2015-2016, Grzegorz Blinowski

DTD - definicje atrybutów Typ

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 Wyliczenie opcji Enumeration Conditional Section INCLUDE & IGNORE

Atrybuty mogą być: REQUIRED (wymagane), IMPLIED (opcjonalne) mogą mieć też wartości domyślne, które mogą być FIXED (stałe)

TIN – zima 2015-2016, Grzegorz Blinowski

DTD - Definicje atrybutów przykłady

• Każda osoba ma identyfikator osoba.id • Osoba może mieć zdefiniowanego szefa • Identyfikator szefa jest określony jako odwołanie do zdefiniowanego identyfikatora Jan Kowalski Jan Nowak

TIN – zima 2015-2016, Grzegorz Blinowski

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).

TIN – zima 2015-2016, Grzegorz Blinowski

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

TIN – zima 2015-2016, Grzegorz Blinowski

Encje ogólne Encje ogólne predefinowane (znakowe): &

&




'

'

"

"



Przykład: • 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!

TIN – zima 2015-2016, Grzegorz Blinowski

Encje parametryczne Przykład: .. ]]>

Porównaj z definicją INCLUDE, IGNORE!



Rozwijane między znakami % i ;

• • •

Rodzaj "makrodefinicji" Są rozwijane wyłącznie w obrębie DTD W deklaracjach encji parametrycznych nie mogą wystąpić odwołania wzajemne!

TIN – zima 2015-2016, Grzegorz Blinowski

DTD - Definicje warunkowe Włączanie i wyłączanie fragmentów DTD: ]]> ]]>

Konstrukcje te mają praktyczny sens w połączeniu z encjami parametrycznymi

TIN – zima 2015-2016, Grzegorz Blinowski

Encje binarne / nieprzetwarzalne (unparsed entity)

Przykład: Deklaracja Notacji

• 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

TIN – zima 2015-2016, Grzegorz Blinowski

Encje ogólne: wewnętrzne i zewętrzne Encje wewnętrzne: DTD: Instancja dokumentu: &mb; urodził się w 1891 roku.

Encje zewnętrzne:

URL, pokazuje na zewnętrzny plik

DTD: Logicznie odpowiada Instancja dokumentu: wstawieniu zawartości pliku &abstr1; &abstr2; &intro;

TIN – zima 2015-2016, Grzegorz Blinowski

Rodzaje encji - podsumowanie

Encje ogólne

Encje parametryczne

Encje przetwarzane

Encje binarne

Encje przetwarzane

Encje binarne

Encje wewnętrzne









Encje zewnętrzne









TIN – zima 2015-2016, Grzegorz Blinowski

DOCTYPE • Deklaracja DTD może mieć dwie postacie:

• 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)

TIN – zima 2015-2016, Grzegorz Blinowski

DOCTYPE SYSTEM

– 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:

TIN – zima 2015-2016, Grzegorz Blinowski

DOCTYPE PUBLIC

• 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

TIN – zima 2015-2016, Grzegorz Blinowski

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,

TIN – zima 2015-2016, Grzegorz Blinowski

DTD w encji dokumentu ... ]> Bułhakow Michał Mistrz i Małgorzata ...

TIN – zima 2015-2016, Grzegorz Blinowski

DTD w zawnętrznej encji bibliografia.dtd:
bibliography book*> book (authors, classification?, title)> authors author+> author (#PCDATA)>

Moja-bib.xml: Bułhakow Michał Mistrz i Małgorzata

TIN – zima 2015-2016, Grzegorz Blinowski

DTD zewnętrzne i wewnętrzne Bibliografia.dtd: (zewnętrzny podzbiór DTD) ... Moja-bib.xml: podzbiór DTD ]> &mb;

TIN – zima 2015-2016, Grzegorz Blinowski

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.

TIN – zima 2015-2016, Grzegorz Blinowski

Przestrzenie nazw XML

TIN – zima 2015-2016, Grzegorz Blinowski

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

TIN – zima 2015-2016, Grzegorz Blinowski

XML - Przestrzenie nazw • Jak zapewnić unikalność nazw? • Wprowadzić "prefiksy": Book Review ... XML: A Primer ... • Bez ryzyka pomyłki możemy mieszać różne "słowniki" • Uwaga: przestrzeń nazw tylko identyfikuje słownik,

definicja to kwestia odrębna

TIN – zima 2015-2016, Grzegorz Blinowski

XML Schema

TIN – zima 2015-2016, Grzegorz Blinowski

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

TIN – zima 2015-2016, Grzegorz Blinowski

XML Schema http://www.w3.org/2001/XMLSchema

• XML Schema definiuje: – nowe elementy poprzez tagi: – dla tak zdefiniowanego elementu określamy jego typ (to co może się znaleść między tagami ... : n.p.: – nowe atrybuty podobnie

• ... aby powiedzieć więcej o zawartości elementu dostępne są typy proste • ... aby móc wielokrotnie wykorzystać raz zdefiniowane elementy dostępne są typy elementów

TIN – zima 2015-2016, Grzegorz Blinowski

XML Schema - Typy Atrybut type - definicja typu:

Podelement complexType lub simpleType: ... 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. •

TIN – zima 2015-2016, Grzegorz Blinowski

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.

TIN – zima 2015-2016, Grzegorz Blinowski

XML Schema - Typy c.d.

TIN – zima 2015-2016, Grzegorz Blinowski

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:

TIN – zima 2015-2016, Grzegorz Blinowski

XML Schema - tworzenie typów prostych Wyrażenia regularne w def. typów prostych:



TIN – zima 2015-2016, Grzegorz Blinowski

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:

TIN – zima 2015-2016, Grzegorz Blinowski

XML Schema - deklaracje i typy typ anonimowy:

typ nazwany:

TIN – zima 2015-2016, Grzegorz Blinowski

XML Schema - rozszerzenia typu definicyjnego

TIN – zima 2015-2016, Grzegorz Blinowski

XML Schema - deklaracja globalne i lokalne



TIN – zima 2015-2016, Grzegorz Blinowski

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)

TIN – zima 2015-2016, Grzegorz Blinowski

XML - DTD (zestawienie) DTD:

XML Schema:



Wywodzi się z SGML



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.

TIN – zima 2015-2016, Grzegorz Blinowski

XHTML

TIN – zima 2015-2016, Grzegorz Blinowski

XHTML - podstawy • XHTML - Extensible Hypertext Markup Language – XHTML ma zastąpić HTML – XHTML jest prawie identyczny z HTML 4.01 – XHTML to bardziej rygorystyczna składniowo i czystsza wersja HTML

• XHTML 1.0 – HTML 4.01 specyfikowany jako XML DTD

• Obecnie HTML5 “przejął” XHTML

TIN – zima 2015-2016, Grzegorz Blinowski

XHTML - reguły • Elementy XHTML muszą być poprawnie zagnieżdżone: bold, italic - źle!!!

• Dokumenty XHTML muszą być w pełni sformułowane: ... ...

• Nazwy znaczników muszą być pisane małymi literami • Wszystkie elementy XHTML muszą być domknięte – Elementy puste:
, , – Uwaga - niektóre przeglądarki wymagają spacji przed zamykającym /

TIN – zima 2015-2016, Grzegorz Blinowski

XHTML - reguły • Nazwy atrybutów muszą być pisane małymi literami: – Przykład:

• Wartości atrybutów muszą być ujęte w cydzysłowy – Przykład :

• "Minimalizacja" atrybutów jest zakazana – Przykład : , nie może być zapisane jako:

• Atrybut id zastępuje atrybut name: – Źle: – Dobrze: – Lepiej:

TIN – zima 2015-2016, Grzegorz Blinowski

XHTML - odmiany • Trzy podstawowe DTD dla XHTML to: – Strict (ścisły) • Czyste oznakowanie, bez atrybutów "wizualnych" (font, color, size) • Używać wyłacznie CSS (Cascading Style Sheets) do definicji wyglądu dokumentu

– Transitional (przejściowy) • W zgodzie z mieszaniną standardowego formatowania HTML oraz CSS • Zezwala na przestarzałe konstrukcje HTML

– Frameset • Zgodne z HTML frames

TIN – zima 2015-2016, Grzegorz Blinowski

XHTML - odmiany • Każdy dokument zgodny z XHTML musi rozpoczynąc się deklaracją DOCTYPE ze wskazaniem DTD: – – –

• HTML5:

TIN – zima 2015-2016, Grzegorz Blinowski

XHTML - narzędzia • HTML TIDY (Dave Raggett) http://www.w3.org/People/Raggett/tidy/ darmowe narzędzie pracujące pod UNIX-em służące do walidacji oraz "czyszczenia" dokumentów XHTML • W3C HTML Validation Tool http://validator.w3.org/ narzędzie on-line przeprowadzające walidację (ale nie poprawiające) dokumentów XHTML

TIN – zima 2015-2016, Grzegorz Blinowski

XPath, XPointer

TIN – zima 2015-2016, Grzegorz Blinowski

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

TIN – zima 2015-2016, Grzegorz Blinowski

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::

TIN – zima 2015-2016, Grzegorz Blinowski

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]

TIN – zima 2015-2016, Grzegorz Blinowski

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)

TIN – zima 2015-2016, Grzegorz Blinowski

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

TIN – zima 2015-2016, Grzegorz Blinowski

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()

TIN – zima 2015-2016, Grzegorz Blinowski

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]" ); }

TIN – zima 2015-2016, Grzegorz Blinowski

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); }

}

TIN – zima 2015-2016, Grzegorz Blinowski

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)

TIN – zima 2015-2016, Grzegorz Blinowski

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,"empty document\n"); xmlFreeDoc(doc); return; } if (xmlStrcmp(cur->name, (const xmlChar *) "story")) { fprintf(stderr,"niepoprawny dokument, root node != story"); xmlFreeDoc(doc); return; }

TIN – zima 2015-2016, Grzegorz Blinowski

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

TIN – zima 2015-2016, Grzegorz Blinowski

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

TIN – zima 2015-2016, Grzegorz Blinowski

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.

TIN – zima 2015-2016, Grzegorz Blinowski

DOM - obiekty parsera • Document: – Właściwości: documentElement, doctype – Operacje: createElement(), createTextNode, ...

• 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

TIN – zima 2015-2016, Grzegorz Blinowski

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

TIN – zima 2015-2016, Grzegorz Blinowski

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)

TIN – zima 2015-2016, Grzegorz Blinowski

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, ...

TIN – zima 2015-2016, Grzegorz Blinowski

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

• • • • •

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,

• • •

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

development

underwriting…

sciences

TIN – zima 2015-2016, Grzegorz Blinowski

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

TIN – zima 2015-2016, Grzegorz Blinowski

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, ...

TIN – zima 2015-2016, Grzegorz Blinowski

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"