background image
background image

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 +

background image

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

background image

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 +

background image

•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

background image

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

background image

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.

background image

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.

background image

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ść

background image

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

background image

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 +

background image

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 +

background image

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:

– &lt;  zastępującą znak <
– &gt; zastępującą znak >
– &quot; zastępującą znak ”
– &apos; zastępującą znak ‘
– &amp; zastępującą znak &

13

informatyka +

Błąd

background image

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 +

background image

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 +

background image

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ć

background image

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 +

background image

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!

background image

Przykład uproszczenia schematu relacyjnej 
bazy danych z wykorzystaniem XML

19

informatyka +

Fragment poprawnie zaprojektowanej relacyjnej bazy danych!

background image

Przykład uproszczenia schematu relacyjnej 
bazy danych z wykorzystaniem XML

20

informatyka +

Schemat dokumentu XML zawierającego opis 
adresów i kontaktów!

background image

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

background image

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 +

background image

Struktura bazy danych dla dalszych 
przykładów

23

informatyka +

Zaznaczone kolumny są typu XML i będą przechowywać 
złożone dane

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

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>

background image

Klauzula FOR XML RAW z opcją ROOT

• Oczywiście da się to poprawić

29

informatyka +

• Zmieńmy jeszcze „row” na coś milszego dla 

oka…

background image

Klauzula FOR XML RAW z opcją ROOT

• Opcja RAW także dopuszcza podanie w nawiasie nazwy elementu

30

informatyka +

background image

Klauzula FOR XML RAW z opcją ELEMENTS

• Aplikacja potrzebuje elementów a nie atrybutów! Co wtedy?

31

informatyka +

background image

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 +

background image

Klauzula FOR XML AUTO - przykład

33

informatyka +

Wpływa na 

hierarchię!

background image

Klauzula FOR XML AUTO - przykład

34

informatyka +

Tym razem 

po 

ID 

zamówienia

background image

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

background image

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

background image

Klauzula FOR XML EXPLICIT

37

informatyka +

• Spróbujmy sklecić przykład (podobny do tego z 

trybu AUTO)

background image

Klauzula FOR XML EXPLICIT

38

informatyka +

• Rezultat zapytania z poprzedniego slajdu (bez klauzuli FOR 

XML):

background image

Klauzula FOR XML EXPLICIT

39

informatyka +

• Rezultat zapytania z poprzedniego slajdu (z klauzulą FOR 

XML):

background image

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

background image

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ść.

background image

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>

background image

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”

//email

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

background image

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

background image

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)

background image

Klauzula FOR XML PATH

46

informatyka +

Opcja 

TYPE!

background image

Klauzula FOR XML PATH – przykład 2

47

informatyka +

background image

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

background image

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 +

background image

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

background image

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)

background image

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

background image

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

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

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 +

background image

Metody typu danych XML –modify()  [insert]

66

informatyka +

Efekt wykonania polecenia insert:

Tylko 

element 

główny

background image

Metody typu danych XML –modify()  [insert]

67

informatyka +

Efekt wykonania polecenia insert:

Zmienn

a typu 

XML

Wstawienie 

zmiennej do 

zawartości 

dokumentu

background image

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 +

background image

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 +

background image

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 +

background image

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

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

 )

• 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ąć

background image

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

background image

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)

background image

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

background image

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 

(…) 

background image

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:

background image

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

background image

Korzystanie z XML Schema

78

informatyka +

• Struktura schemy dla opisanego problemu (diagram z XML 

Spy)

background image

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ę

background image

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ą

background image

Korzystanie z XML Schema

81

informatyka +

Kolejna próba – dokument z adresem email

Polecenie wykona się poprawnie, gdyż dokument jest zgodny ze 
schemą

background image

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ą

background image

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.

background image

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.

background image

Korzystanie z XML Schema

85

informatyka +

Kolejna próba – dokument z nadprogramowym elementem

Polecenie spowoduje błąd, gdyż dokument zawiera dodatkowy element 
„bonus”

background image

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”

background image

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!

background image

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 +

background image

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 +

background image

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 +

background image

…czy są pytania? 

91

informatyka +

<Koniec />


Document Outline