Agenda
• Podstawy XML
– Historia XML w pigułce
– Struktura dokumentu XML
• XML a bazy danych
– Alternatywa dla relacyjnych baz danych?
• XML w SQL Server 2008
– Klauzula FOR XML polecenia SELECT
– Typ danych „XML”
– Metody typu „XML”
– Korzystanie z XML Schema
• Podsumowanie
2
informatyka +
• Podstawowa znajomość SQL
• Podstawowa znajomość SQL Server
• Podstawowa znajomość dowolnego języka
opartego o znaczniki (XML, HTML itp.)
• Chęć do nauki ;-)
Wymagania wstępne
3
informatyka +
Agenda
• Podstawy XML
– Historia XML w pigułce
– Struktura dokumentu XML
• XML a bazy danych
– Alternatywa dla relacyjnych baz danych?
• XML w SQL Server 2008
– Klauzula FOR XML polecenia SELECT
– Typ danych „XML”
– Metody typu „XML”
– Korzystanie z XML Schema
• Podsumowanie
4
informatyka +
•lata ‘60 - poszukiwanie standardu dla
dokumentów drukarskich
•1978 - ANSI rozpoczyna prace nad
norma
•1983 - szósta wersja - SGML - staje się
standardem Urzędu Kontroli Skarbowej
USA
•1969 - IBM zaproponowali GML wraz z
hierarchiczna struktura oznaczeń
Wstęp i historia XML
1985 - SGML standardem Komisji UE oraz
Departamentu Obrony USA
1986 SGML w wersji ISO 9979:1986
Dziś mamy nowe standardy ISO oraz HTML,
XML, XSL i inne - wszystko na podstawie
z
ałożeń GML/SGML
Wstęp i historia XML
Rozwój języków uogólnionego
znakowania tekstu
• 1969: GML – Generalized Markup Language
(IBM; Goldfarb, Mosher, Laurie).
• 1986: SGML – Standard Generalized Markup Language,
ISO 8879:1986.
• 1991: powstaje World Wide Web.
• 1994: HTML 2.0 zdefiniowany jako zastosowanie SGML-
a.
• 1998: XML – Extensible Markup Language,
World Wide Web Consortium.
Cele jakie sobie założono przy
tworzeniu XML
• XML powinien być bezpośrednio używalny w Internecie.
• XML powinien wspierać wiele różnorodnych aplikacji.
• XML powinien być kompatybilny z SGML-em.
• Pisanie programów przetwarzających dokumenty XML
powinno być proste.
• Liczba opcjonalnych cech XML-a powinna być
ograniczana do absolutnego minimum, najlepiej zera.
• Dokumenty XML powinny być czytelne dla ludzi i
przejrzyste.
• Projekt XML-a powinien zostać przygotowany szybko.
• Projekt XML-a powinien być formalny i zwięzły.
• Dokumenty XML powinny być łatwe do stworzenia.
Cechy języka XML
• XML nie jest nowy – powstało wiele aplikacji
,systemów , publikacji dotyczących tego języka
• XML jest językiem tekstowym(dokumenty XML są
plikami tekstowymi)
• XML jest rozszerzalny – można dodawać własne
znaczniki i tworzyć własne standardy
• XML jest elastyczny - łatwo można zmieniać strukturę
dokumentu XML
• XML jest międzynarodowy – zalecane jest stosowanie
standardu Unicode
• XML sam się opisuje – nazwy znaczników mogą
interpretować zawartość
Cechy języka XML
• XML to rodzina języków i technologii – ilość standardów
związanych z XML ciągle rośnie
• XML jest standardem otwartym
• XML jest nielicencjonowany!!!!!!
• XML jest niezależny od platformy sprzętowej i
programowej
• XML jest łatwy w użyciu (chociaż początki mogą być
trudne)
• XML może być sformalizowany poprzez definicje DTD
lub XSD
• XML jest hierarchiczny - co umożliwia modelowanie
złożonych struktur
Agenda
• Podstawy XML
– Historia XML w pigułce
– Struktura dokumentu XML
• XML a bazy danych
– Alternatywa dla relacyjnych baz danych?
• XML w SQL Server 2008
– Klauzula FOR XML polecenia SELECT
– Typ danych „XML”
– Metody typu „XML”
– Korzystanie z XML Schema
• Podsumowanie
11
informatyka +
Reguły tworzenia dokumentów XML
• Dokument XML składa się z elementów, które mogą zawierać
atrybuty wraz z ich wartościami, tekst oraz inne elementy
• Dokument XML musi zawierać dokładnie jeden element główny
(tzw. root), który zawiera w sobie pozostałe elementy
• Element składa się ze znaczników (otwierającego i
zamykającego):
<kodPocztowy>
…zawartość
…</kodPocztowy >
<budynek/>
(brak zawartości – można stosować skróconą
formę )
• Elementy mogą być zagnieżdżone:
<email><wartosc>
Jan
</wartosc></email>
• Elementy nie mogą się „przecinać”:
<email><wartosc>
Jan
</email></wartosc>
12
informatyka +
Reguły tworzenia dokumentów XML c.d.
• Elementy mogą zawierać atrybuty, które muszą posiadać
wartość (ujętą w apostrofy lub cudzysłów):
<wartosc
typKomunikatora
="
Skype
">
janekNowak
</wartosc>
• Wielkość liter ma znaczenie
<budynek>
124A
</Budynek>
• Do wykorzystania w treści dokumentu w miejscu znaków
specjalnych (mogących powodować problemy z interpretacją
dokumentu) przeznaczono tzw. encje:
– < zastępującą znak <
– > zastępującą znak >
– " zastępującą znak ”
– ' zastępującą znak ‘
– & zastępującą znak &
13
informatyka +
Błąd
Reguły tworzenia dokumentów XML c.d.
• Dokument spełniający wszystkie wymagania odnośnie swojej struktury
jest dokumentem poprawnie sformułowanym (well formed document)
• Z racji prostoty reguł – łatwo jest stworzyć narzędzie weryfikujące
poprawność sformułowania dokumentu. Istnieje wiele takich narzędzi
(parserów XML)
• Jeżeli chcemy oprócz samej składni narzucić dodatkowe reguły, to trzeba
skorzystać z dodatkowych technologii i narzędzi.
– DTD (Document Type Definition)
– XML Schema
– Relax NG
– Parsery walidujące
• Jeżeli dokument XML jest poprawnie sformułowany i spełnia wymagania
opisane w DTD lub XML Schema to jest dokumentem poprawnym (valid
document)
14
informatyka +
Agenda
• Podstawy XML
– Historia XML w pigułce
– Struktura dokumentu XML
• XML a bazy danych
– Alternatywa dla relacyjnych baz danych?
• XML w SQL Server 2008
– Klauzula FOR XML polecenia SELECT
– Typ danych „XML”
– Metody typu „XML”
– Korzystanie z XML Schema
• Podsumowanie
15
informatyka +
XML alternatywą dla relacyjnych baz danych ?
Jeśli patrzeć na to od strony teoretycznej – czemu nie?
16
informatyka +
oHierarchiczna struktura oraz stosowanie
atrybutów pozwala modelować relacje
oXML Schema pozwala modelować dodatkowe
ograniczenia
oModelowanie może być bardziej pracochłonne i
nie każdy rodzaj ograniczeń da się
zaimplementować
XML alternatywą dla relacyjnych baz danych ?
C.d.
• W praktyce jednak pojawiają się problemy
– Wzrost rozmiaru pliku -> spadek wydajności
– Jednoczesny dostęp wielu użytkowników do pliku
– Transakcyjność i odporność na awarie
• Zamiast alternatywy – uzupełnienie możliwości baz
danych
– Przechowywanie danych o zróżnicowanej
strukturze
– Zwracanie wyników zapytań w formie XML
– Manipulowanie zawartością XML
17
informatyka +
Wynik wojny XML-SQL
• Pomimo tego, że XML jest pewną alternatywą dla
relacyjnych baz danych – wybrano najlepsze
rozwiązanie
18
informatyka +
Dwie konkurencyjne technologie „zmuszono” do współpracy!
Przykład uproszczenia schematu relacyjnej
bazy danych z wykorzystaniem XML
19
informatyka +
Fragment poprawnie zaprojektowanej relacyjnej bazy danych!
Przykład uproszczenia schematu relacyjnej
bazy danych z wykorzystaniem XML
20
informatyka +
Schemat dokumentu XML zawierającego opis
adresów i kontaktów!
Przykład uproszczenia schematu relacyjnej
bazy danych z wykorzystaniem XML
21
informatyka +
… i zamiast pięciu tabel mamy tylko jedną - i
wszystkie potrzebne dane mogą być zapisane
Kolumna typu XML
przechowująca dane
zgodne ze schematem XML
pokazanym na
wcześniejszym slajdzie
A może uprościć to tak !!!!!!!
Agenda
• Podstawy XML
– Historia XML w pigułce
– Struktura dokumentu XML
• XML a bazy danych
– Alternatywa dla relacyjnych baz danych?
• XML w SQL Server 2008
– Klauzula FOR XML polecenia SELECT
– Typ danych „XML”
– Metody typu „XML”
– Korzystanie z XML Schema
• Podsumowanie
22
informatyka +
Struktura bazy danych dla dalszych
przykładów
23
informatyka +
Zaznaczone kolumny są typu XML i będą przechowywać
złożone dane
Dane w postaci XML potrzebne od zaraz…
• Problem :
Jak pobrać z bazy danych informacje od razu
w postaci XML?
• A po co akurat XML?
– Bo aplikacja potrafi takie dane od razu przetworzyć
– Bo takie są wymagania biznesowe naszego klienta
– Bo system, z którym współpracujemy potrafi
pracować tylko z danymi XML
– Bo łatwo takie dane potem przetworzyć na dowolna
inna potrzebną postać (HTML, PDF, RTF, SVG …)
• Ok. Wiemy po co. Ale jak?
– Klauzula XML w zapytaniu SELECT:)
24
informatyka +
Klauzula FOR XML polecenia SELECT
• Dodana do dowolnego polecenia SELECT powoduje
zwrócenie jego wyniku w formie dokumentu lub
fragmentu dokumentu XML
• Kilka trybów generowania XML
– RAW
– AUTO
– EXPLICIT
– PATH
• Tryby RAW i AUTO dają możliwość generowania
wartości kolumn jako atrybutów lub elementów
• Tryby EXPLICIT i PATH dają największe możliwości
– Tryb XPATH korzysta z wyrażeń języka XPath
– Tryb EXPLICIT korzysta z tabeli uniwersalnej
25
informatyka +
Dane do obróbki – lista klientów
•
W przykładowej bazie mamy tabelę z danymi klientów
•
Załóżmy, że chcemy zwrócić właśnie te dane. Nic
prostszego:
26
informatyka +
No tak. Ale potrzebujmy te dane w postaci
XML!
• Nie ma problemu – skorzystamy z klauzuli FOR XML
• Zaczniemy od najprostszego wariantu : FOR XML
RAW
27
informatyka +
Oooops! To nie jest dokument XML!
• Klauzula FOR XML RAW zwróciła nam fragment dokumentu XML.
• Nie do końca nadaje się on do dalszej obróbki po stronie aplikacji,
gdyż żaden szanujący się parser nie przymknie oka na brak
elementu głównego
!
28
informatyka +
<dane>
</dane>
Klauzula FOR XML RAW z opcją ROOT
• Oczywiście da się to poprawić
29
informatyka +
• Zmieńmy jeszcze „row” na coś milszego dla
oka…
Klauzula FOR XML RAW z opcją ROOT
• Opcja RAW także dopuszcza podanie w nawiasie nazwy elementu
30
informatyka +
Klauzula FOR XML RAW z opcją ELEMENTS
• Aplikacja potrzebuje elementów a nie atrybutów! Co wtedy?
31
informatyka +
Klauzula FOR XML RAW to za mało !
• FOR XML Raw jest OK, ale potrzebujemy nieco więcej możliwości!
• Jak generować dokument XML z hierarchią elementów?
– Np.: lista klientów i ich zamówień
• Odpowiedź : klauzula
FOR XML AUTO
– Domyślnie generuje dla wiersza element o nazwie takiej jak tabela
– Dla kolumn tworzone są atrybuty o nazwach takich jako kolumny
– Przeznaczona do zapytań operujących na wielu tabelach
– Potrafi tworzyć proste hierarchie (heurystycznie poprzez analizowanie kolejnych wierszy i porównywanie wartości kolumn)
– Obsługuje wszystkie opcje omawiane przy FOR XML RAW
32
informatyka +
Klauzula FOR XML AUTO - przykład
33
informatyka +
Wpływa na
hierarchię!
Klauzula FOR XML AUTO - przykład
34
informatyka +
Tym razem
po
ID
zamówienia
Coraz więcej możliwości:) Co jeszcze da się
zrobić?
35
informatyka +
• Da się zrobić wszystko. Kwestia czasu i nakładu pracy.
• Do tej pory podejście do generowania XML polegało na:
– Dodaniu do
DOWOLNEGO
zapytania klauzuli FOR XML (AUTO lub RAW)
– Skorzystaniu z ich opcji do „dopracowania” postaci dokumentu
• Gdy to za mało – sięgamy po
FOR XML EXPLICIT
– Specjalnie skonstruowane zapytanie
– Złożona konstrukcja.
– Trudne modyfikowanie
– Ogromne możliwości
Klauzula FOR XML EXPLICIT
36
informatyka +
• Największe możliwości w zakresie budowania
złożonych struktur XML
• Precyzyjne wymagania co do struktury wyniku
zapytania, które ma być przetworzone na XML
(tabela uniwersalna)
• Skomplikowany mechanizm definiowania tabeli
uniwersalnej dla uzyskania konkretnej struktury XML
Klauzula FOR XML EXPLICIT
37
informatyka +
• Spróbujmy sklecić przykład (podobny do tego z
trybu AUTO)
Klauzula FOR XML EXPLICIT
38
informatyka +
• Rezultat zapytania z poprzedniego slajdu (bez klauzuli FOR
XML):
Klauzula FOR XML EXPLICIT
39
informatyka +
• Rezultat zapytania z poprzedniego slajdu (z klauzulą FOR
XML):
Klauzula FOR XML EXPLICIT – fajna ale
żmudna
40
informatyka +
• Jest jakiś sposób na uniknięcie jej stosowania?
• TAK:) Klauzula
FOR XML PATH
– O wiele przyjemniejsza w stosowaniu
– Porównywalne możliwości
– Łatwiejsze modyfikowanie (znacznie lepsza czytelność zapytań)
• Wady? A owszem…
– Trzeba poznać język XPath (chociaż trochę)
Klauzula FOR XML PATH i język XPath
41
informatyka +
• Język XPath służy do wskazywania węzłów lub
grup węzłów w dokumencie XML
• Wyrażenia XPath można porównać do ścieżek w
systemie plików.
Wyrażenie: \
dane
\
adres
\
pocztowy
\ulica
wskazuje na katalog ulica i jego zawartość.
Klauzula FOR XML PATH i język XPath
42
informatyka +
Wyrażenie: /
dane
/
adres
/
pocztowy
/ulica
wskazuje na element ulica i jego zawartość.
<dane>
<adres>
<email>
<wartosc>jan.nowak@pocza.pl</wartosc>
</email>
</adres>
<adres>
<pocztowy>
<kodPocztowy>00-950</kodPocztowy>
<miejscowosc>Warszawa</miejscowosc>
<ulica>Marszałkowska</ulica>
<budynek>23</budynek>
<lokal>1</lokal>
</pocztowy>
</adres>
</dane>
Klauzula FOR XML PATH i język XPath
43
informatyka +
•
Przykłady wyrażeń XPath
•
/dane/adres/email[2]/wartosc
– Element „wartosc” drugiego elementu „email” będącego
dzieckiem elementu „adres”, będacego dzieckiem elementu
głównego „dane”
•
– Elementy „email” występujące w dowolnym miejscu w
dokumencie
•
//adres/*/@typ
– Atrybuty „@typ” dowolnych elementów będących dziećmi
elementu „adres”
•
/dane/adres/*[@typ=‘skype’]/text()
– Zawartośc tekstowa dowolnego elementu, który ma atrybut
„typ” o wartości „skype”, będącego dzieckiem elementu adres,
będącego dzieckiem elementu głównego „dane”
Klauzula FOR XML PATH
44
informatyka +
• Kompromis pomiędzy możliwościami a prostotą
korzystania
• Znacznie łatwiejsza od EXPLICIT
• Pozwala na definiowanie złożonych struktur przy
wykorzystaniu odpowiednich nazw kolumn
(przypominających wyrażenia XPath)
• Pozwala na zagnieżdżanie zapytań i uzyskiwanie
tą droga złożonej struktury XML
• Istotna jest kolejność kolumn (najpierw te
definiujące atrybuty, potem kolejne elementy)
• Możliwość wykorzystania znaku * (gwiazdka) jako
nazwy kolumny
Klauzula FOR XML PATH
45
informatyka +
• Obsługuje opcje znane z trybu RAW i AUTO
• Istotna jest kolejność kolumn w zapytaniu (najpierw atrybuty, potem elementy)
Klauzula FOR XML PATH
46
informatyka +
Opcja
TYPE!
Klauzula FOR XML PATH – przykład 2
47
informatyka +
Klauzula FOR XML – inne opcje
48
informatyka +
• Wszystkie warianty klauzuli FOR XML zawierają jeszcze jedną
istotna opcję – TYPE
• Pozwala ona na traktowanie zwróconej wartości jako zmiennej
typu XML, co ułatwia zagnieżdżanie wyniku zapytania w innym i
budowanie złożonych hierarchii
• Podobna sytuacja występuje przy opcji XSNIL. Powoduje ona ,że w
przypadku gdy element ma wartość null to i tak będzie
umieszczony w wynikowym dokumencie
Agenda
• Podstawy XML
– Historia XML w pigułce
– Struktura dokumentu XML
• XML a bazy danych
– Alternatywa dla relacyjnych baz danych?
• XML w SQL Server 2008
– Klauzula FOR XML polecenia SELECT
– Typ danych „XML”
– Metody typu „XML”
– Korzystanie z XML Schema
• Podsumowanie
49
informatyka +
Typ danych XML
50
informatyka +
• Kolumna w tabeli może być typu XML
• Pozwala na przechowanie bezpośrednio dokumentu
XML o wielkości do 2 GB
• Z kolumną można skojarzyć kolekcję dokumentów XML
Schema definiujących dopuszczalną zawartość
kolumny XML (walidacja zgodności z XML Schema-mi)
• Typed XML (skojarzony z kolekcją XML Schema) może
zapewnić większą wydajność ze względu na określenie
typów danych oraz często mniejszy rozmiar pliku
wynikowego
• Dokument nie jest przechowywany w oryginalnej
postaci (normalizacja)!
• Do XML Schema wrócimy pod koniec wykładu
Typ danych XML
51
informatyka +
• Deklarowanie typu kolumny jako XML (untyped)
• Kolumna może zawierać dokumenty lub fragmenty
dokumentów XML
• Przy zapisie weryfikowana jest jedynie składnia dokumentu
XML
• Dopuszczalne odstępstwo – może być wiele elementów
najwyższego poziomu (w przypadku fragmentu dokumentu
XML)
Typ danych XML
52
informatyka +
• Deklarowanie typu kolumny jako XML (typed)
• Korzystanie z możliwości XML Schema do definiowania
dodatkowych ograniczeń dla postaci dokumentu
• Automatyczna walidacja danych zapisywanych w bazie
• Sposób na definiowanie niektórych rodzajów reguł
biznesowych – w postaci kolekcji schem
Typ danych XML - Stosowanie typu xml
53
informatyka +
• Przechowywanie danych o złożonej strukturze, które obsługiwane są
przez aplikację. Baza jest tylko prostą przechowalnią.
• Modelowanie złożonych struktur danych połączone z rezygnacją z
tworzenia wielu tabel w bazie.
• Wymiana danych z systemami zewnętrznymi
• Przechowywanie i umożliwienie modyfikowania złożonych struktur w
ramach kolumny w tabeli\
• Duże pliki XML = słabsza wydajność !
• Można próbować sobie z tym radzić poprzez stosowanie Indeksów XML
Agenda
• Podstawy XML
– Historia XML w pigułce
– Struktura dokumentu XML
• XML a bazy danych
– Alternatywa dla relacyjnych baz danych?
• XML w SQL Server 2008
– Klauzula FOR XML polecenia SELECT
– Typ danych „XML”
– Metody typu „XML”
– Korzystanie z XML Schema
• Podsumowanie
54
informatyka +
Metody typu danych XML
• Typ danych XML udostępnia szereg metod
służących do manipulowania zawartością
dokumentu
• W przykładowej bazie danych stosujemy XML do
przechowywania danych teleadresowych klientów.
• Unikamy w ten sposób tworzenia co najmniej
czterech tabel w bazie
• Dane teleadresowe zawierać będą adresy
pocztowe, email-e i identyfikatory z
komunikatorów internetowych
• Na początku nie będziemy stosować kolekcji
schem. Przyjdzie na to czas pod koniec wykładu
55
informatyka +
Metody typu danych XML - przykłady
• Wszystkie przykłady korzystania z metod typu danych XML
będą przeprowadzane w oparciu o dokument XML:
56
informatyka +
Metody typu danych XML – value()
• Jak pobrać konkretną wartość z dokumentu XML?
• Odpowiedzią jest metoda value()
– Wywołuje się ją z dwoma prametrami
• Wyrażeniem XQuery (właściwie zwykle jest to wyrażenie XPath)
• Docelowym typem danych
– Zwracana jest wartość skalarna, skonwertowana do typu
określonego w wywołaniu:
SELECT @dane.value(’
(//email/wartosc)[1]
’,’
varchar(100)
’)
Zwróci wartość pierwszego elementu „wartosc” będącego
dzieckiem elementu „email”, który występuje gdziekolwiek w
hierarchii dokumentu. Wartość ta będzie skonwertowana
do typu varchar(100)
57
informatyka +
Metody typu danych XML – value()
• Metoda value() powinna być stosowana tylko gdy
faktycznie chcemy pobrać wartość z dokumentu XML
• Jest to spowodowane tym, że nie jest ona zbyt
wydajna
• Zastosowanie do sprawdzenia jakiegoś warunku nie
jest dobrym pomysłem:
SELECT
CASE
WHEN ISNULL(@dane.value(’(//email/wartosc)
[1]’,’varchar(100’,’’) =’’ THEN 0
ELSE 1
END as czyZawieraEmail
58
informatyka +
Metody typu danych XML – exist()
• Metoda exist () służy do sprawdzania czy
wskazany węzeł istnieje
• Zapewnia wyższą wydajność
• Nie wymaga konwertowania węzła do docelowego
typu:
SELECT @dane.exist(’//email/wartosc’) as czyZawieraEmail
SELECT @dane.exist('//email[position()>1]') as
czyZawieraEmaile
59
informatyka +
Metody typu danych XML query()
• Metoda query () służy do pobierania z dokumentu
XML zbiorów elementów zdefiniowanych poprzez
wyrażenie XQuery.
• Zwracany zbiór jest także typu XML.
• Zwykle stosowana w połączeniu z wyrażeniami
XPath:
• Lub XQuery (FLWOR):
60
informatyka +
Metody typu danych XML query()
• XQuery jest językiem służącym do „odpytywania”
dokumentu XML.
• Jest specyfikacją rozwijaną, a jakże, przez
konsorcjum W3C.
• Wyrażenia FLWOR to akronim od słów for, let,
where, order by, return
• Pozwalają na złożone definiowanie reguł
pobierania węzłów z dokumentu XML.
• Stosowane są raczej w przypadku bardziej
złożonych struktur dokumentów XML
• Porównywane do polecenia SELECT z SQL
61
informatyka +
Metody typu danych XML – nodes()
• Metoda nodes() zapewnia funkcjonalność
odwrotną do klauzuli FOR XML. Pozwala na
wyłuskanie wartości elementów lub atrybutów z
dokumentu XML i, w połączeniu z operatorem
CROSS APPLY, na zwrócenie tych danych w
postaci zbioru wierszy
• Wywołanie:
kolumnaXML.nodes( [XQuery] )
• Zastosujmy ją tym razem do tabeli Klient, dla
klientów, którzy posiadają uzupełnione dane
teleadresowe (jest ich czworo):
62
informatyka +
Metody typu danych XML – nodes()
• Problem: potrzebna jest lista klientów i ich adresów pocztowych
(w formie zwykłego zbioru rekordów)
• CROSS APPLY oraz nodes() powodują „dodanie” do każdego
rekordu wynikowego dodatkowej kolumny zawierającej zmienną
typu xml, którą z kolei traktujemy metodą value() w celu
pobrania poszczególnych wartości (pól) adresu
• Znak . (kropka) w wyrażeniu XPath oznacza bieżący element. W
tym przypadku będzie to każdy znaleziony element „pocztowy”
63
informatyka +
Metody typu danych XML – modify()
• Operacje na danych typu XML nie kończą się oczywiście
na różnych wariantach ich odczytu
• Pozostaje jeszcze kwestia modyfikowania struktury
dokumentu XML:
– Dodawania nowych węzłów
– Modyfikacji zawartości węzłów
– Usuwania węzłów
• XQuery nie zawiera żadnych możliwości manipulowania
zawartością dokumentu
• W SQL Server wprowadzono „XML DML”, który uzupełnia
ten brak
• Metoda modify() wywoływana jest z jednym
parametrem – jednym z poleceń: insert, delete,
replace value of
64
informatyka +
Metody typu danych XML –modify() [insert]
• Polecenie insert umożliwia dodawanie nowych
węzłów do dokumentu XML.
• Składnia :
insert [
zawartosc
] [
położenie
] [
cel
]
• Przykład:
insert
<lokal>12</lokal>
as last into
(//pocztowy)[1]
• Położenie można określać jako:
– as first into
– as last into
– before
– after
65
informatyka +
Metody typu danych XML –modify() [insert]
66
informatyka +
Efekt wykonania polecenia insert:
Tylko
element
główny
Metody typu danych XML –modify() [insert]
67
informatyka +
Efekt wykonania polecenia insert:
Zmienn
a typu
XML
Wstawienie
zmiennej do
zawartości
dokumentu
Metody typu danych XML –modify() [delete]
• Polecenie delete umożliwia usuwanie węzłów z
dokumentu XML.
• Składnia :
delete [
cel
]
• Przykład:
delete
//adres[email]
usuń wszystkie elementy „adres” zawierające w sobie
element
„email”
• [cel]
może wskazywać zarówno pojedynczy
element jak i grupę elementów /atrybutów
68
informatyka +
Metody typu danych XML –modify() [replace
value of]
• Polecenie replace value of umożliwia zmianę
zawartości węzła dokumentu XML na wskazaną.
• Składnia :
replace value of [
cel
] with [
zawartosc
]
• Przykład:
replace value of
(//pocztowy/budynek/text())[1]
with
„nieznany"
zmień zawartość tekstową pierwszego napotkanego elementu
„budynek” na „nieznany”
• [cel]
może wskazywać co najwyżej jeden element
lub atrybut
69
informatyka +
Agenda
• Podstawy XML
– Historia XML w pigułce
– Struktura dokumentu XML
• XML a bazy danych
– Alternatywa dla relacyjnych baz danych?
• XML w SQL Server 2008
– Klauzula FOR XML polecenia SELECT
– Typ danych „XML”
– Metody typu „XML”
– Korzystanie z XML Schema
• Podsumowanie
70
informatyka +
Typ danych XML – co to jest XML Schema?
71
informatyka +
• XML Schema pozwala na narzucenie
dodatkowych ograniczeń na zawartość
dokumentu XML
• Dokument XML Schema ….to też dokument XML
• Ogromne możliwości modelowania zawartości
dokumentów
• Stworzona i rozwijana przez konsorcjum W3C
(
)
• Dużo wiedzy do rozpoznania i przyswojenia :-)
• …a i tak zdarzają się sytuacje, gdy nie ma
możliwości zamodelowania tego co chcemy
osiągnąć
Typ danych XML – co to jest XML Schema?
72
informatyka +
• Dokument XML Schema może być rozumiany
jako formalna specyfikacja jakiegoś dokumentu
XML
• Jeżeli otrzymam od kogoś plik z XML Schema to
wiem, jak ma wyglądać dokument XML
spełniający stawiane wymagania.
• Ten mechanizm jest powszechnie stosowany
• W SQL Server XML Schema jest stosowana do
nakładania ograniczeń na zawartość kolumn typu
XML.
• Pozwala to przenieść umiejętności ze świata XML
do relacyjnych baz danych
Korzystanie z XML Schema – istotne fakty
73
informatyka +
• Kolumna typu xml przyjmie każdy poprawnie sformułowany
dokument XML lub fragment dokumentu XML.
• Nałożenie ograniczeń na dopuszczalną strukturę i zawartość
dokumentów XML – poprzez XML Schema Collection
• XML Schema Collection może zawierać jedną lub więcej schem
opisujących dopuszczalne struktury dokumentów XML
• Ograniczenie nakłada się przy deklarowaniu typu kolumny –
przez podanie w nawiasie nazwy kolekcji schem
• Przy każdej próbie zapisu wartości XML do kolumny z nałożonymi
ograniczeniami następuje jej walidacja ze schemami z kolekcji.
Jeżeli jest zgodna z którąś ze schem zapis dochodzi do skutku
• Korzystanie z kolekcji schem może poprawić wydajność zapytań
operujących na zawartości XML (chociażby przez fakt, że znane
mogą być typy danych zawartych w poszczególnych elementach
i atrybutach)
Korzystanie z XML Schema
74
informatyka +
• Korzystanie z XML Schema Collection składa się z dwóch etapow
– Utworzenie kolekcji schem
– Deklarowanie w tabelach kolumn jako xml(?) gdzie ? Jest
nazwą kolekcji schem:
Adresy xml(DaneAdresowe) not null
Korzystanie z XML Schema
75
informatyka +
• Po utworzeniu kolekcji schem jest ona widoczna w
oknie object browser (narzędzia SQL Server
Management Studio):
CREATE XML SCHEMA COLLECTION DaneAdresowe AS N'
<xs:schema
(…)
‘
Korzystanie z XML Schema
76
informatyka +
• Deklaracja kolumny typu xml korzystającej z
kolekcji schem:
[DaneTeleadresowe] [xml](DOCUMENT
[dbo].[DaneAdresowe]) NULL
• W naszym przykładzie użyjemy jej w tabeli z
danymi klientów:
Korzystanie z XML Schema
77
informatyka +
• Sam proces tworzenia dokumentu XML Schema jest na tyle
złożony, że zasługuje na osobny wykład lub dwa :-)
• Omówiony zostanie pokrótce, żeby zrozumieć zasadę działania
a nie wdawać się w niuanse modelowania dokumentów XML.
• Cel modelowania:
– Dane teleadresowe mogą się składać z dowolnej liczby
adresów pocztowych i email.
– Adres email składa się tylko z jednej wartości – ciągu
zawierającego sam adres
– Adres pocztowy składa się z obowiązkowych pól
miejscowość i kod pocztowy oraz z opcjonalnych: poczta,
ulica, budynek i lokal.
– Dodatkowo kod pocztowy składa się z dwóch cyfr, znaku
myślnika i trzech cyfr
– Adres email musi zawierać znak @ i jedną kropkę.
Korzystanie z XML Schema
78
informatyka +
• Struktura schemy dla opisanego problemu (diagram z XML
Spy)
Korzystanie z XML Schema
79
informatyka +
• Dodatkowe ograniczenia widoczne są dopiero w kodzie XML
schema:
• Definiują one kodPocztowy jako szablon ##-### gdzie #
oznacza cyfrę
• Definiują one wartość adresu email jako ciąg zawierajacy w
sobie znak @ oraz kropkę
Korzystanie z XML Schema
80
informatyka +
Spróbujmy teraz sprawdzić działanie kolekcji schem poprzez
dodanie kilku wpisów do kolumny xml. Zacznijmy od wpisu z
adresem pocztowym:
Polecenie wykonało się poprawnie, gdyż dokument jest zgodny ze
schemą
Korzystanie z XML Schema
81
informatyka +
Kolejna próba – dokument z adresem email
Polecenie wykona się poprawnie, gdyż dokument jest zgodny ze
schemą
Korzystanie z XML Schema
82
informatyka +
Kolejna próba – dokument z dwoma adresami (pocztowym i
email)
Polecenie wykona się poprawnie, gdyż dokument jest zgodny ze
schemą
Korzystanie z XML Schema
83
informatyka +
Kolejna próba – dokument z adresem pocztowym (błędny kod)
Polecenie spowoduje błąd, gdyż dokument nie spełnia ograniczenia
wynikającego ze schemy.
Korzystanie z XML Schema
84
informatyka +
Kolejna próba – dokument z adresem email (błędna wartość
adresu email)
Polecenie spowoduje błąd, gdyż dokument nie spełnia
ograniczenia wynikającego ze schemy.
Korzystanie z XML Schema
85
informatyka +
Kolejna próba – dokument z nadprogramowym elementem
Polecenie spowoduje błąd, gdyż dokument zawiera dodatkowy element
„bonus”
Korzystanie z XML Schema
86
informatyka +
Kolejna próba – dokument z brakującym elementem (adresik
zamiast adres)
Polecenie spowoduje błąd, gdyż dokument nie zawiera
wymaganego elementu „adres”
Korzystanie z XML Schema
87
informatyka +
Kolejna próba – dokument z brakującym znacznikiem
zamykającym
Polecenie spowoduje błąd, gdyż dokument nie jest poprawnie
sformułowany.
W tym przypadku nie doszło do walidacji za pomocą schemy!
Agenda
• Podstawy XML
– Historia XML w pigułce
– Struktura dokumentu XML
• XML a bazy danych
– Alternatywa dla relacyjnych baz danych?
• XML w SQL Server 2008
– Klauzula FOR XML polecenia SELECT
– Typ danych „XML”
– Metody typu „XML”
– Korzystanie z XML Schema
• Podsumowanie
88
informatyka +
Podsumowanie
• XML znajduje zastosowanie w świecie relacyjnych
baz danych
• Nie jest dla nich alternatywą, raczej uzupełnia ich
możliwości
• Z racji popularności XML serwery baz danych
zaczynają go wspierać (wcześniej tylko jako BLOB
lub CLOB)
89
informatyka +
Podsumowanie
• SQL Server 2008 posiada szereg wygodnych mechanizmów
pozwalających na korzystanie z XML przy:
– Przechowywaniu danych w bazie (typ danych xml)
– Zwracaniu wyników zapytań w postaci XML (klauzula FOR XML)
– Odpytywaniu dokumentu XML (metody value(),exist(),nodes() )
• Nie wspomniano przy tej okazji chociażby o indeksach XML
poprawiających wydajność zapytań korzystających z danych
XML
– Modyfikowaniu struktury dokumentu XML (metoda modify() )
– Definiowaniu ograniczeń dopuszczalnej struktury dokumentów
XML (XML Schema Collection )
90
informatyka +
…czy są pytania?
91
informatyka +
<Koniec />