910 likes | 1.03k Views
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. informatyka +. 2.
E N D
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 informatyka + 2
Wymagania wstępne • Podstawowa znajomość SQL • Podstawowa znajomość SQL Server • Podstawowa znajomość dowolnego języka opartego o znaczniki (XML, HTML itp.) • Chęć do nauki ;-) informatyka + 3
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 informatyka + 4
Wstęp i historia XML • 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 założeń GML/SGML
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 informatyka + 11
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> informatyka + 12
Reguły tworzenia dokumentów XML c.d. • Elementy mogą zawierać atrybuty, które muszą posiadać wartość (ujętą w apostrofy lub cudzysłów): <wartosctypKomunikatora="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 & Błąd informatyka + 13
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) informatyka + 14
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 informatyka + 15
XML alternatywą dla relacyjnych baz danych ? Jeśli patrzeć na to od strony teoretycznej – czemu nie? • Hierarchiczna struktura oraz stosowanie atrybutów pozwala modelować relacje • XML Schema pozwala modelować dodatkowe ograniczenia • Modelowanie może być bardziej pracochłonne i nie każdy rodzaj ograniczeń da się zaimplementować informatyka + 16
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 informatyka + 17
Wynik wojny XML-SQL • Pomimo tego, że XML jest pewną alternatywą dla relacyjnych baz danych – wybrano najlepsze rozwiązanie Dwie konkurencyjne technologie „zmuszono” do współpracy! informatyka + 18
Przykład uproszczenia schematu relacyjnej bazy danych z wykorzystaniem XML Fragment poprawnie zaprojektowanej relacyjnej bazy danych! informatyka + 19
Przykład uproszczenia schematu relacyjnej bazy danych z wykorzystaniem XML Schemat dokumentu XML zawierającego opis adresów i kontaktów! informatyka + 20
Przykład uproszczenia schematu relacyjnej bazy danych z wykorzystaniem XML A może uprościć to tak !!!!!!! Kolumna typu XML przechowująca dane zgodne ze schematem XML pokazanym na wcześniejszym slajdzie … i zamiast pięciu tabel mamy tylko jedną - i wszystkie potrzebne dane mogą być zapisane informatyka + 21
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 informatyka + 22
Struktura bazy danych dla dalszych przykładów Zaznaczone kolumny są typu XML i będą przechowywać złożone dane informatyka + 23
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:) informatyka + 24
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 informatyka + 25
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: informatyka + 26
No tak. Ale potrzebujmy te dane w postaci XML! • Nie ma problemu – skorzystamy z klauzuli FOR XML • Zaczniemy od najprostszego wariantu : FOR XML RAW informatyka + 27
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! <dane> </dane> informatyka + 28
Klauzula FOR XML RAW z opcją ROOT • Oczywiście da się to poprawić • Zmieńmy jeszcze „row” na coś milszego dla oka… informatyka + 29
Klauzula FOR XML RAW z opcją ROOT • Opcja RAW także dopuszcza podanie w nawiasie nazwy elementu informatyka + 30
Klauzula FOR XML RAW z opcją ELEMENTS • Aplikacja potrzebuje elementów a nie atrybutów! Co wtedy? informatyka + 31
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 informatyka + 32
Klauzula FOR XML AUTO - przykład Wpływa na hierarchię! informatyka + 33
Klauzula FOR XML AUTO - przykład Tym razem po ID zamówienia informatyka + 34
Coraz więcej możliwości:) Co jeszcze da się zrobić? • 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 informatyka + 35
Klauzula FOR XML EXPLICIT • 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 informatyka + 36
Klauzula FOR XML EXPLICIT • Spróbujmy sklecić przykład (podobny do tego z trybu AUTO) informatyka + 37
Klauzula FOR XML EXPLICIT • Rezultat zapytania z poprzedniego slajdu (bez klauzuli FOR XML): informatyka + 38
Klauzula FOR XML EXPLICIT • Rezultat zapytania z poprzedniego slajdu (z klauzulą FOR XML): informatyka + 39
Klauzula FOR XML EXPLICIT – fajna ale żmudna • 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ę) informatyka + 40
Klauzula FOR XML PATH i język XPath • 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ść. informatyka + 41
Klauzula FOR XML PATH i język XPath <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> Wyrażenie: /dane/adres/pocztowy/ulica wskazuje na element ulica i jego zawartość. informatyka + 42
Klauzula FOR XML PATH i język XPath • 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” informatyka + 43
Klauzula FOR XML PATH • 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 informatyka + 44
Klauzula FOR XML PATH • Obsługuje opcje znane z trybu RAW i AUTO • Istotna jest kolejność kolumn w zapytaniu (najpierw atrybuty, potem elementy) informatyka + 45
Klauzula FOR XML PATH Opcja TYPE! informatyka + 46
Klauzula FOR XML PATH – przykład 2 informatyka + 47
Klauzula FOR XML – inne opcje • 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 informatyka + 48
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 informatyka + 49
Typ danych XML • 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 informatyka + 50