Transcript Document
Technologie Internetu
wykład 7: XML - wprowadzenie
Piotr Habela
Polsko-Japońska Wyższa Szkoła
Technik Komputerowych
1
W poprzednich wykładach…
• Koncepcja znaczników w dokumentach tekstowych
poznana na przykładzie HTML;
• Konieczność bezpośredniej interpretacji przez przeglądarkę
wymaga standaryzacji znaczników HTML => brak
rozszerzalności;
• Przemieszanie znaczników struktury i formatu wyświetlania
stanowi słabość HTML, częściowo kompensowaną przez
definicji stylów (CSS); nie wszędzie jednak są stosowane…
• HTML posiada dość swobodne reguły składniowe:
– Nie wymaga cudzysłowów wokół wartości atrybutów;
– Dopuszcza pomijanie tagów zamykających;
– Swoboda w zastosowaniu małych i wielkich liter;
… czyniące dokument trudniejszym w obróbce.
2
Plan wykładu
•
•
•
•
•
Geneza XML – koncepcja i możliwości języka SGML;
Powstanie języka HTML;
Konsorcjum W3C: organizacja i inicjatywy;
Składnia języka XML;
Możliwości definiowania typów dokumentów dla XML;
3
Języki znaczników – motywacja i rozwój
• Pojęcie znacznika, jeszcze w tekstach nie elektronicznych
wiązało się przede wszystkim ze sposobem wyróżnienia w
tekście informacji o zadanej docelowej formie wydruku
danego fragmentu (np. naniesione ręcznie w maszynopisie znaki
nakazujące zastosowanie dla danego fragmentu pochylonej czcionki).
• Bezpośrednią motywacją wprowadzenia języków
znaczników było umożliwienie formatowania treści w
postaci przetwarzalnej maszynowo: wsparcie w tworzeniu
dużej skali publikacji elektronicznych.
• Pierwsze przedsięwzięcia: powstałe w latach 60-tych języki
GML (IBM) oraz GenCode (GCA).
• Legły one u podstaw standardu ISO 8879:1986:
Standard Generalized Markup Language (SGML):
– Standard grupy: Information processing -- Text and office
systems .
– Zatwierdzony standard międzynarodowy; 155 stron.
4
SGML - charakterystyka
• Język znaczników (markup language) – zbiór konwencji
znaczników stosowanych do opisywania (kodowania)
tekstu. Określa:
– znaczniki dozwolone i wymagane;
– zapewnia niezawodny sposób ich wyróżniania ze zwykłego tekstu;
– [definiuje znaczenie poszczególnych znaczników].
• SGML = standard opisu tekstu za pomocą znaczników.
Określany jako metajęzyk (?) (wrócimy jeszcze do tego pojęcia).
• Charakter opisowy a nie proceduralny: w tekście
umieszczone są znaczniki określające interpretację
poszczególnych elementów, a ew. elementy proceduralne,
opisujące wymagane czynności np. sformatowania tekstu,
istnieją odrębnie – w postaci osobnych zasobów.
5
Typ dokumentu
• SGML wprowadza pojęcie typu dokumentu, specyfikując
DTD (Dynamic Type Definitions).
• Typ dokumentu jest formalnie zdefiniowany w terminach
jego składowych i ich struktury.
• Dla znanych typów dokumentów (tj. dla których istnieją
definicje typu), można sprawdzić zgodność dokumentu ze
specyfikacją typu. Program dokonujący takiego
sprawdzenia nazywamy parserem.
• Znając typ dokumentu można w bardziej efektywny i
wyspecjalizowany sposób przetwarzać wszelkie dokumenty
zgodne z tym typem. Jeśli wykonywane jest przetwarzanie
dokumentu, to odpowiedni program nazywamy z kolei
procesorem.
6
Niezależność od platformy
• Celem zapewnienia niezależności, język zdefiniowano jako
oparty na zwykłym tekście.
• Deklaracja dokumentu SGML zawiera oprócz definicji typu
dokumentu specyfikację sposobu kodowania znaków.
• Dla znaków nieprzenośnych można zastosować reguły
zastępowania łańcuchów (string substitution).
• Dokumenty ani definicje ich typów nie określają sposobu
wizualizacji. W tym celu stworzono specyfikację DSSSL
(Document Style Semantics and Specification Language).
7
Struktura dokumentu SGML
• Zawiera jednostki tekstowe zwane elementami (element).
• Poszczególne rodzaje elementów posiadają identyfikujące je
nazwy, jednakże znaczenie może być nakreślone jedynie
jako współzależności z innymi elementami. Standard nie
zajmuje się semantyką poszczególnych rodzajów
elementów.
• Nazwy elementów, określane poprzez Generic Identifier
(GI), powinny być znane oprogramowaniu i użytkownikom
którzy przetwarzają stosujący je dokument.
• Tekst ze znacznikami = document instance, czyli
wystąpienie dokumentu.
• Istnieją różne sposoby oznaczania elementów.
Najważniejszym z nich jest objęcie tekstu tagami
(znacznikami) otwierającym i zamykającym.
8
Definiowanie typów dokumentów SGML
• Notacja DTD (Document Type Definition) dla SGML
pozwala określić następujące właściwości:
– określenie identyfikatora elementu, tj. nazwy;
– minimization rules, czyli obowiązkowość tagów otwierającego i
zamykającego;
• Model zawartości – tj. jakie podelementy są dopuszczalne:
– Nazwy i liczności (? -> opcjonalna, * -> dowolna liczba
powtórzeń, + -> jedno lub więcej);
– Możliwość kombinowania deklaracji (”,” -> sekwencja lub ”|” ->
jedna z wymienionych) oraz grupowania przy użyciu nawiasów.
Np.:
<!ELEMENT refren - - (#PCDATA | line+)>
<!ELEMENT poemat - O (tytuł?,
( (wers+) | (refren?, (strofa, refren?)+ ) )) >
9
Zaawansowane możliwości
• Takie definicje pozwalają zdefiniować precyzyjną hierarchiczną
strukturę dokumentu. Nie zawsze jest to wystarczające.
• Mogą istnieć elementy „pływające” (np. adnotacje), które
dopuszczalne są w różnych miejscach hierarchii. Ich wprowadzanie
do definicji wszystkich elementów byłoby bardzo niewygodne.
Stosuje się w tym celu dwa rodzaje „wyjątków” (exception).
Definiuje się je na szczycie hierarchii, której dotyczą:
– inclusions – elementy, które mogą pojawić się w dowolnym miejscu;
– exclusions – elementy, które są w danym obszarze zabronione;
• Różne kryteria określania struktury dokumentu mogą współistnieć i
nakładać się na siebie. Może to być struktura logiczna, typograficzna,
językowa (np. formy zdań).
• Wzajemnie przeplatające się struktury można zdefiniować stosując
tzw. współbieżne struktury dokumentów:
– tworzone są dwie deklaracje typów dokumentu;
– elementy występujące tylko w jednej strukturze są prefiksowane nazwą
stosownej definicji typu;
10
Definicje atrybutów SGML
• Typ elementu jest definiowany przez dopuszczalną (i
obowiązkową) jego zawartość (w postaci nazw
zagnieżdżanych podelementów).
• Drugim składnikiem definicji jest lista atrybutów właściwa
danego typu elementowi. Specyfikacji podlega:
– Nazwa atrybutu;
– Typ wartości: identyfikator, referencja do identyfikatora, dane
znakowe, wartość alfanumeryczna, wartość liczbowa albo
zdefiniowana wartość wyliczeniowa;
– Sposób określenia wartości: wymagana, opcjonalna, lub „jak
poprzednio”.
11
Język czy metajęzyk?
• Pojęcie meta-poziomu oznacza zwykle definicję rozpatrywanego
przez nas zbioru elementów, z którą ten ostatni jest związany relacją
„jest wystąpieniem”.
• Pojęcie dotyczy często danych i metadanych (schemat jest poziomem
„meta” w stosunku do danych gromadzonych w bazie) albo języków
programowania (mechanizmu pozwalający kontrolować zachowanie
rozpatrywanego przez nas poziomu; np. wołanie procedury).
Przykładem może być klasa, jako definicja narzucająca ograniczenie
na strukturę jej obiektów oraz definiująca metody czy aktywne reguły
dla tych obiektów. Zob. też – metamodel w UML.
• Pojęcie metajęzyka sugerowałoby zatem, że SGML oraz XML są
językami służącymi definiowanie innych języków. Termin zatem
pasowałby raczej do DTD. Stąd określanie bez bliższego komentarza
SGML oraz XML „metajęzykami” może być nieco mylące…
12
Związki HTML z SGML
• Z punktu widzenia założeń, jakie legły u podstaw koncepcji
WWW, SGML uznano za zdecydowanie zbyt
skomplikowany.
• Powstały język HTML pozostał jednak silnie związany ze
swym protoplastą:
– HTML stanowi istotnie okrojony podzbiór SGML;
– Składnia HTML zdefiniowana jest przy użyciu środków
definiowania struktury dokumentów SGML (istnieje definicja
HTML w postaci DTD);
– Ponadto pierwotna postać HTML konsekwentnie pozostawała przy
idei oznaczania jedynie struktury dokumentu, nie zaś sposobu jego
wizualizacji.
• Zaistniały burzliwy rozwój Webu zmusił do zweryfikowania
tych założeń…
13
World Wide Web Consortium (W3C)
• Powstałe w 1994 roku (zał.: Tim Berners-Lee w
Massachusetts Institute of Technology, Laboratory for
Computer Science [MIT/LCS] we współpracy z CERN,
oraz DARPA i Komisją Europejską).
• Zakres działalności: rozwiązania wspierające organizację
dostępu do zasobów Internetu.
• Zrzesza około 450 organizacji. Finansowane głownie przez
członków, w mniejszej części ze środków publicznych.
• Specyfikacje W3C noszą nazwę rekomendacji
(recommendations) i są publicznie dostępne.
• Główne zasady projektowe dla technologii Webu:
– współdziałanie (interoperability);
– zapewnienie możliwości ewolucji: modularność, prostota,
rozszerzalność;
– decentralizacja (brak uzależnienia od scentralizowanego zasobu);
14
Działalność W3C
• W oparciu o opinie członków ustanawiane mogą być nowe obszary
działań (activity). Są one sklasyfikowane pomiędzy 4 dziedzinami:
– Architektoniczna (technologie Webu);
– Interakcji (doskonalenie sposobów korzystania użytkownika z
zasobów Webu - interfejsy);
– Technologia i Społeczeństwo;
– Dostępności (Web Accessibility Initiative) – poprawa dostępności
Webu dla osób niepełnosprawnych;
• Niezależnie od tego podziału funkcjonują działania (activities):
Zapewnienia Jakości(QA) oraz Polityki Pantentów (Patent Policy).
• Zasady działania:
– neutralność względem producentów;
– koordynacja rozwiązań z innymi instutucjami (IETF, Unicode
Consortium itp.)
– konsensus: dążenie do jednomyślności w przyjmowaniu rozwiązań;
15
Cykl życiowy specyfikacji W3C
Working Draft: Praca w toku; publikację WD zatwierdza kierownictwo
konsorcjum, ale zawartość może być dopiero podstawą dla dalszych
dyskusji, tj. fakt opublikowania nie oznacza pełnej zgody co do treści ani
stabilności rozwiązania.
Last Call Working Draft: Specyfikacja spełnia wszystkie
sformułowane wymogi, albo ewentualnie dokumentuje niezrealizowane
zagadnienia. Formalnie odnosi się do wszystkich zgłoszonych wcześniej
uwag i problemów. Stanowi publiczny raport techniczny, mogący być
podstawą dalszych konsultacji.
Candidate Recommendation: Ustalone współzależności z innymi
specyfikacjami. Oczekiwanie na doświadczenia implementacyjne spoza
grupy roboczej.
Proposed Recommendation: Istnieją doświadczenia z implementacją
specyfikacji. Jest przedmiotem przeglądu przez komitet doradczy.
W3C Recommendation: Postać finalna. Raport techniczny spełniający
wymagania, będący wynikiem uzgodnień. Uznany za nadający się do
szerokiego zastosowania i realizujący misję W3C.
16
W3C: Koncepcja rozwoju standardów Webu
Źródło: www.w3c.org
17
Prace nad technologią XML w W3C
Prace na XML są realizowane przez 6 grup roboczych W3C:
1. XML Coordination Group: Koordynacja pomiędzy grupami
zajmującymi się XML oraz współdziałanie z innymi grupami. Nie
tworzy własnych specyfikacji.
2. XML Core Working Group: Specyfikacja XML oraz najbliżej z
samym językiem związane: Namespaces, XML Information Set, oraz
XInclude.
3. XSL Working Group: Definicje stylów i transformacje obiektów.
4. XML Linking Working Group: Łącza hipertekstowe dla XML.
Obecnie nie jest aktywna.
5. XML Query Working Group: Język zapytań dla XML.
6. XML Schema Working Group: Definicje i opis struktury, zawartości
oraz w pewnym zakresie również semantyki dokumentów XML.
18
XML – założenia projektowe
• Cel: Stworzenie generycznego podzbioru SGML
dostosowanego do udostępniania, odczytywania i
przetwarzania w środowisku Webu w sposób analogiczny
jak w przypadku HTML.
• Założenia projektowe:
–
–
–
–
–
–
–
–
–
–
Użyteczny bezpośrednio w Internecie.
Uniwersalny wobec dziedzin zastosowań.
Zgodny SGML.
Zapewnienie wsparcia dla tworzenia programów przetwarzających
dokumenty XML.
Minimalizacja elementów opcjonalnych w specyfikacji.
Klarowność i czytelność dla człowieka.
Konieczność szybkiego zaprojektowania języka.
Formalny i spójny styl projektu.
Łatwość tworzenia dokumentów XML.
Brak wymogów odnośnie zwięzłości składni.
19
XML - charakterystyka
• Język tekstowy;
• Rozszerzalny: zestaw znaczników nie stanowi zamkniętej
listy;
• Elastyczna struktura;
• Niezależność od platformy;
• Możliwość definiowania reguł poprawności dla struktury
dokumentu (definicja typu dokumentu);
• Stosunkowo rygorystyczna składnia;
• Opisuje klasę obiektów danych, zwaną dokumentami
XML;
• Częściowo określa zachowanie programów, które je
przetwarzają;
• Zgodny z SGML: określany jako profil zastosowań SGML
albo ograniczony SGML.
20
Dokument XML
• Struktura fizyczna: złożenie jednostek zwanych encjami (?)
(XML entities):
– Parsowalne: dane znakowe oraz znaczniki. Encje parsowalne
zawierają tekst, czyli sekwencje znaków. Pojęcie znaku jest
traktowane zgodnie ze standardem ISO/IEC 10646 (Universal
Multiple-Octet Coded Character Set (UCS)). Za poprawne znaki
są uznawane: tab, carriage return, line feed oraz wszystkie znaki
Unicode i ISO/IEC 10646;
– Nieparsowalne.
• Struktura logiczna:
– Strukturę dokumentu wyznaczają znaczniki.
• Oprogramowanie pracujące z XML:
– Procesor XML – odczytuje i udostępnia strukturę i treść
dokumentu.
– Aplikacja – korzysta ze struktury udostępnionej przez procesor.
21
Zawartość dokumentu XML
• Elementy:
– wyznaczane za pomocą znaczników;
– ograniczenia na nazwę – może zawierać większość
znaków, choć nie może zaczynać się od cyfry, myślnika
ani kropki; dopuszczalne na początku są podkreślenia i
dwukropki;
– dla nazw elementów rozróżnialna jest wielkość liter;
– element niepusty składa się obowiązkowo ze znacznika
otwierającego i zamykającego:
<osoba>Jan Kowalski</osoba>
– element pusty może składać się z jednego tylko
znacznika, zakończonego znakiem „/”:
<usunietyWpis />
22
Atrybuty XML
• Przybierają postać nazwAtrybutu =”wartość atrybutu”
• Podobne ograniczenia na nazwę, jak w wypadku nazw
elementów;
• Wartość może być typu: string, wyliczeniowego, nazwy,
identyfikatora, nazwy encji, referencji do identyfikatora…
• Zawarte w znaczniku otwierającym (albo w znaczniku
elementu pustego);
• Znacznik może zawierać tylko jeden atrybut o danej nazwie;
• Rozróżniana jest wielkość liter;
• Kolejność atrybutów nie jest wymagana standardem, choć
zaleca się jej konsekwentne utrzymanie;
• Np. <opisZadania autor = ”Jan Kochanowski”
autor=”Anonim”> Tutaj zawartość </opisZadania>
23
XML – znaki specjalne
• Jak można wywnioskować z omówionej składni, znaki „<”,
„>” oraz cudzysłów, jak również apostrof – są traktowane
specjalnie.
• Chcąc użyć ich jako zwykłych znaków w miejscach, gdzie
byłoby to niejednoznaczne, należy użyć predefiniowanych
symboli zastępczych: >, < oraz " i '.
• Te dwa ostatnie mogą być potrzebne w wartościach
atrybutów, jednakże można ich uniknąć stosując jako
ograniczniki wartości tekstowej symbole apostrofu i
cudzysłowu zamiennie (tak, jak się to czyni np. w
JavaScript).
• Symbole zastępcze rozwiązują problem, choć oczywiście
mogą być niewygodne, np. przy formułowaniu w
dokumentach XML warunków, jak to ma miejsce np. w
językach zapytań.
24
Zawartość elementów XML
• Wyróżniamy:
–
–
–
–
elementy puste (pojedynczy znacznik zakończony „/”);
elementy zawierające tylko tekst;
elementy złożone, tj. posiadające podelementy;
elementy o zawartości mieszanej (tj. zarówno tekst jak i
podelementy – mogą być na rożne sposoby przeplecione);
• Kolejność zawieranych podelementów jest istotna dla
właściwej interpretacji dokumentu; jest określona definicją
typu dokumentu;
• Elementy złożone (i mieszane) muszą być poprawnie
zagnieżdżone. W efekcie prawidłowy dokument XML
posiada strukturę hierarchiczną.
• => Reguły składniowe znane z HTML. XML odróżnia się
jednak bardziej zdyscyplinowaną składnią.
25
Deklaracja XML
• Pierwszy składnik tzw. prologu dokumentu.
• Określa sposób interpretacji dokumentu.
• Specyfikuje:
– wersję użytego języka: parametr version;
– rodzaj kodowania znaków: parametr encoding
(np. unicode, ISO, windows);
– określenie, czy dokument jest samodzielny: parametr
standalone.
• Np.
<?xml version=”1.0” encoding=”UTF-8”
standalone=”yes” ?>
26
Poprawność formy i poprawność strukturalna
• Dokument poprawny składniowo (well-formed):
– Zgodny z definicją produkcji „document” (tj. m.in. zawiera
deklarację XML);
– Element główny („korzeń”) występuje raz w każdym z
dokumentów i nie jest zawarty w żadnym innym elemencie.
Pozostałe elementy muszą być poprawnie zagnieżdżone. W
oparciu o takie zagnieżdżenie mówi się o relacji rodzic-dziecko.
– Spełnienie wszystkich ograniczeń poprawnościowych ujętych w
specyfikacji;
– Wszystkie parsowalne encje do których odwołuje się dokument
spełniają warunek poprawności;
• Dokument poprawny strukturalnie (valid): zgodność z
definicją typu dokumentu (DTD).
27
Przetwarzanie dokumentu XML
• Poprawność składniowa jest warunkiem koniecznym dla
dopuszczenia dalszego przetwarzania dokumentu XML
przez oprogramowanie.
• Przykłady przetwarzania:
– wyświetlanie;
– przekształcenie w dokument HTML zbudowany według
określonego stylu;
– wygenerowanie nowego dokumentu XML;
– zasilenie bazy danych danymi z dokumentu.
28
Deklaracje
• W przeciwieństwie do elementów, nie są bezpośrednio
przetwarzane.
• Umieszczane w symbolach: <! … >
• Deklaracje podstawowe, obecne w zwykłych dokumentach
XML to:
– komentarze: <!-- … -->
– sekcje danych znakowych: wyznaczają obszar, w którym można
swobodnie używać znaków zastrzeżonych:
<![CDATA[Tutaj może się znaleźć dość dowolny tekst]]>
• O wiele szersze wykorzystanie deklaracji ma miejsce w
wypadku definicji DTD;
29
Instrukcje przetwarzania XML
• Instrukcje przetwarzania = Processing Instructions – PI;
• umieszczane pomiędzy znakami: <? … ?>
• Określają cel (PI Target) oraz instrukcję, która ma być
wykonana.
• Cel jest słowem kluczowym (umieszczanym bezpośrednio
po otwarciu znacznika), które identyfikuje aplikację mającą
dokonać przetwarzania.
• Preferowany styl oznaczania kodu PHP tworzy właśnie
instrukcję przetwarzania zgodną z notacją XML:
<?php tutaj kod PHP… ?>
• Niektóre instrukcje przetwarzania (np. związane ze
stosowaniem stylów) są określone standardem.
30
Encje XML (XML Entities)
• Jednostka fizycznego podziału dokumentu (umożliwia
integrację treści z różnych plików);
• Posiada nazwę, która ją identyfikuje;
• Deklarowana słowem kluczowym ENTITY;
• Deklaracje jednostek występują w definicji typu dokumentu
(DTD);
• Zastosowania:
– integrowanie zawartości różnych plików;
– substytucja tekstu (np. aby można było w jednym tylko miejscu
wpisać często powtarzający się w dokumencie tekst);
– wyodrębnienie danych, które mają nie być przetwarzane przez
XML;
31
Rodzaje encji XML
• Najprostsze warianty:
– Ogólna encja wewnętrzna (general internal entity). Zawiera
wyłącznie tekst i służy przetwarzaniu tekstu;
np. <!ENTITY skrot ”Pełne rozwinięcie skrótu”>
– Ogólna encja zewnętrzna (general external entity); W tym
wypadku deklaracja typu dokumentu definiuje encję jako
odnośnik: <!ENTITY naszaEncja SYSTEM
”http://xyz.com/plik_naszej_encji.xml”>
– Encja predefiniowana. Jak sama nazwa wskazuje, nie wymaga
definiowana; jest określona standardem. Zdefiniowano w ten
sposób ww. symbole zastrzeżone, których użycie bezpośrednie
zakłóciłoby składnię dokumentu: <, >, &, &apos, ".
Uwaga! Nie jest dozwolone podstawienie jako wartości atrybutu
tekstu skutkującego umieszczeniem znaków „<” lub „>”, ani
umieszczenie w wartości atrybutu referencji do encji zewnętrznej.
• W treści dokumentu mogą wystąpić odwołania do danej
encji w postaci: &nazwaEncji; (niezbędne jest zakończenie
średnikiem)
32
Document Type Definitions (DTD)
• Definicje Typu Dokumentu stanowią cechę szczególną
XML a zarazem integralną część specyfikacji języka.
• Definicja typu pozwala sprawdzić strukturalną poprawność
dokumentu. Można je postrzegać jako język opisu
dokumentu.
• Definicje typu mogą występować w pliku dokumentu, lub w
plikach zewnętrznych.
• W przeciwieństwie do SGML, obecność definicji typu nie
jest obowiązkowa.
33
XML a przetwarzanie danych
• Dzięki swej niezależności od platformy i rozszerzalności,
XML stał się użyteczny we współpracy z technologiami baz
danych.
• W tym wypadku nieistotna staje się czytelność pliku,
natomiast trzeba się zmierzyć z problemami np. różnic w
kodowaniu znaków.
• Osobliwe możliwości daje struktura dokumentu:
właściwości danego obiektu mogą wystąpić w elemencie
jako:
– Zawartość tekstowa;
– Podelementy;
– Atrybuty;
• Podstawowy dokument XML ma strukturę hierarchiczną, co
może być kłopotliwe z punktu widzenia modelowania
danych. Skuteczne rozwiązanie mechanizmu referencji
pomiędzy elementami ma tu duże znaczenie.
34