Przykładowy dokument XML

Podobne dokumenty
Przykładowy dokument XML

Przykładowy dokument XML

XML w bazie danych IBM DB2

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

XML extensible Markup Language 7

Model semistrukturalny

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Język XSLT. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

XML extensible Markup Language 3

29. Poprawność składniowa i strukturalna dokumentu XML

1 XML w bazach danych

Plan prezentacji. Krótko o XML Arkusze stylów XSLT XSL XSL Path Przegląd konstrukcji języka i przykłady Narzędzia Podsumowanie Literatura

DB2 XML w relacyjnych bazach danych wstęp do wprowadzenia. Kuba Pochrybniak

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Przetwarzanie dokumentów XML za pomocą XSLT ( r.)

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Przetwarzanie dokumentów XML za pomocą procesora XSLT (Zajęcia r.

Służy do wybierania/wyszukiwania fragmentów dokumentu XML. Przypomina trochę ścieżki w systemie operacyjnym. Niech będzie dany dokument XML:

XML extensible Markup Language. Paweł Chodkiewicz

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

XML Path Language (XPath)

XQuery. sobota, 17 grudnia 11

Extensible Markup Language III

Cechy języka XQUERY. o na wejściu dokument lub fragment względnie kolekcja dokumentów lub fragmentów o na wyjściu dokument lub fragment.

XML materiały dydaktyczne - Kurs Podstawowy XSL - wprowadzenie. XSL warstwa przekształcania (XSLT) oraz prezentacji informacji (XSL FO).

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

XQuery. XQuery. Przykład. dokument XML. XQuery (XML Query Language) XQuery 1.0: An XML Query Language. W3C Recommendation

2 Podstawy tworzenia stron internetowych

Bazy danych i strony WWW

Relacyjne bazy danych a XML

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Osie (axes) Location paths

2017/2018 WGGiOS AGH. LibreOffice Base

Język XQuery jako narzędzie do integracji danych Oracle XML Data Synthesis

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Dlaczego GML? Gdańsk r. Karol Stachura

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Informatyka (10) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego i Mostów p. 4 Hydro

Systemy baz danych. mgr inż. Sylwia Glińska

XML w bazach danych i bezpieczeństwie

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Prezentacja i transformacja

Systemy GIS Tworzenie zapytań w bazach danych

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

1 Podstawy c++ w pigułce.

E.14.1 Tworzenie stron internetowych / Krzysztof T. Czarkowski, Ilona Nowosad. Warszawa, Spis treści

BAZY DANYCH. Dr hab. Sławomir Zadrożny, prof. PR

Rola języka XML narzędziem

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie.

Wprowadzenie do baz danych

XML i nowoczesne technologie zarządzania treścią

Programowanie w języku Python. Grażyna Koba

Programowanie internetowe

Spis treści. Przedmowa

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

DTD - encje ogólne i parametryczne, przestrzenie nazw

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Oracle11g: Wprowadzenie do SQL

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

1. Przypisy, indeks i spisy.

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Przestrzenne bazy danych Podstawy języka SQL

XML w bazach danych i bezpieczeństwie

XML extensible Markup Language. część 6

Wykład 2. Relacyjny model danych

252 Bazy danych. Praca z językiem XML

XML i nowoczesne metody zarządzania treścią

Oracle PL/SQL. Paweł Rajba.

Technologie baz danych

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

Autor: dr inż. Katarzyna Rudnik

Podstawy JavaScript ćwiczenia

Bazy danych. Polecenia SQL

XML extensible Markup Language. część 3

Dokumentacja Użytkownika Systemu

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Krzysztof Kadowski. PL-E3579, PL-EA0312,

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

Podstawowe zapytania SELECT (na jednej tabeli)

Bazy danych dokumentów XML wykład 3 modyfikacja dokumentów

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści

Wykład 5. SQL praca z tabelami 2

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

CENTRUM PROJEKTÓW INFORMATYCZNYCH MINISTERSTWA SPRAW WEWNĘTRZNYCH I ADMINISTRACJI

15. Funkcje i procedury składowane PL/SQL

Historia kodowania i format plików XML. Jolanta Bachan

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

METODY INŻYNIERII WIEDZY ASOCJACYJNA REPREZENTACJA POWIĄZANYCH TABEL I WNIOSKOWANIE IGOR CZAJKOWSKI

Język SQL. Rozdział 2. Proste zapytania

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Transkrypt:

Język XML XML (extensible Markup Language, czyli rozszerzalny język znaczników) to specyfikacja dotycząca przechowywania informacji. Jest to również specyfikacja opisujaca strukturę tych informacji. XML jest językiem znaczników, jak HTML, XML nie posiada swoich własnych znaczników, można tworzyć własne znaczniki według potrzeb, tworząc nowe znaczniki, należy trzymać się specyfikacji XML-a.

Język XML XML (extensible Markup Language, czyli rozszerzalny język znaczników) to specyfikacja dotycząca przechowywania informacji. Jest to również specyfikacja opisujaca strukturę tych informacji. XML jest językiem znaczników, jak HTML, XML nie posiada swoich własnych znaczników, można tworzyć własne znaczniki według potrzeb, tworząc nowe znaczniki, należy trzymać się specyfikacji XML-a. Literatura uzupełniająca: [1] K.H. Goldberg, XML. Szybki start. Wydanie II (Helion, 2014). [2] P. Walmsley, XQuery (O Reilly Media, Inc., 2007).

Przykładowy dokument XML <?xml version="1.0"?> <book> <authors> <author id="47">włodzimierz Krysicki</author> <author id="58">lech Włodarski</author> </authors> <title>analiza matematyczna w zadaniach</title> <price>69.00</price> <keywords> <keyword>pochodna</keyword> <keyword>całka</keyword> </keywords> </book>

Przykładowy dokument XML <?xml version="1.0"?> <book> <authors> <author id="47">włodzimierz Krysicki</author> <author id="58">lech Włodarski</author> </authors> <title>analiza matematyczna w zadaniach</title> <price>69.00</price> <keywords> <keyword>pochodna</keyword> <keyword>całka</keyword> </keywords> </book>

Wady i zalety XML-a Zalety Łatwy do odczytania, zarówno dla człowieka, jak dla maszyny (zwykły tekst). Zawiera dane i jednocześnie opisuje znaczenie danych (self-documenting). Może reprezentować praktycznie dowolny rodzaj danych: hierarchie, rekordy, listy (elastyczność, uniwersalność). Sformalizowany zapis pozwala na komputerowe przetworzenie, weryfikacje dokumentów XML (well-formed). Wady Nadmiarowość informacji (powtarzające się znaczniki, zagnieżdżone elementy). Nie wszystko da się wyrazić elastycznie w postaci struktury hierarchicznej (np. albo Film->Aktor, albo Aktor->Film)

Zastosowanie XML-a Elektroniczna wymiana danych Usługi e-biznesu: transakcje zakodowane w postaci XML-a (XML jako podstawa Web Serwisów), wiele formatów pochodnych. Komunikacja w sferze publicznej (np. podatnik urząd podatkowy, systemy celne, NFZ - świadczeniodawcy, itp.). Do zapisu informacji o luźnej strukturze, trudnej do jednoznacznego opisana w momencie projektowania, np. formularze WWW, wymagające częstych zmian. Format przechowywania dokumentów.

Zasady pisania dokumentów XML Reguły, aby dokument XML był poprawny składniowo: 1. element główny jest wymagany; zawsze musi być dokładnie jeden element główny; wszystkie pozostałe elementy dokumentu są zawarte w elemencie głównym; przed elementem głównym dopuszczalne są komentarze i instrukcje przetwarzania; 2. znaczniki zamykajace są niezbędne; każdy element musi mieć znacznik zamykający; 3. elementy muszą być odpowiednio zagnieżdżone; 4. wielkość liter ma znaczenie; 5. wartość atrybutu musi być zamykana w dwóch takich samych znakach pojedynczego lub podwójnego cudzysłowu.

Zasady tworzenia dokumentów XML Elementy składowe XML-a to znaczniki określające elementy, wartości tych elementów oraz atrybuty. Element XML to podstawowa jednostka dokumentu. Może zawierać: tekst, atrybuty, inne znaczniki. Każdy element ma znacznik otwierający: <nazwa_elementu> oraz znacznik zamykający: </nazwa_elementu>. Pusty element może składać się z pojedynczego znacznika otwierającego i zamykającego, np. <obrazek plik="mapa.jpg"/> Atrybuty elementu umieszczane są w obrębie znacznika otwierającego, w postaci par nazwa-wartość, np. <wysokosc jednostka="metr">33</wysokosc>. Opisują zawartość i przeznaczenie elementu. Informacje zawarte w atrybutach to metadane. Element może mieć wiele atrybutów, ich nazwy muszą być unikalne

Zasady tworzenia dokumentów XML Dokument XML powinien rozpoczynać się deklaracją, która wskazuje zastosowaną wersję XML-a. Przykładowa deklaracja XML: <?xml version="1.0"?> Deklarację umieszczamy na początku, przed wszystkimi innymi elementami. Znaczniki rozpoczynające się od <? i kończące się?> to instrukcje przetwarzania. Służą do deklarowania wersji XML, określania kodowania znaków, arkuszy stylów.

Zasady tworzenia dokumentów XML Dokument XML powinien rozpoczynać się deklaracją, która wskazuje zastosowaną wersję XML-a. Przykładowa deklaracja XML: <?xml version="1.0"?> Deklarację umieszczamy na początku, przed wszystkimi innymi elementami. Znaczniki rozpoczynające się od <? i kończące się?> to instrukcje przetwarzania. Służą do deklarowania wersji XML, określania kodowania znaków, arkuszy stylów. Komentarze XML: warto opisywać dokumenty XML, aby określić co oznacza dany element. Komentarz zaczyna się za pomocą <!, a kończy >. Nie wolno zagnieżdżać komentarzy, ani używać znaku wewnątrz komentarza.

Przykładowy dokument XML <?xml version="1.0"?> <book> <authors> <author id="47">włodzimierz Krysicki</author> <author id="58">lech Włodarski</author> </authors> <title>analiza matematyczna w zadaniach</title> <! cena ksiażki na podstawie platformy Ceneo > <price>69.00</price> <keywords> <keyword>pochodna</keyword> <keyword>całka</keyword> </keywords> </book>

Predefiniowane encje XML-a: pięć znaków specjalnych Predefiniowane encje XML-a: & tworzy znak & < tworzy znak < > tworzy znak > " tworzy znak &apos; tworzy znak

Przekształcanie dokumentów XML za pomoca XSLT 2.0 Język XSLT służy do przekształcanie dokumentów XML na inny format, np. HTML. Przekształcanie dokumentu XML polega na zastosowaniu XSLT do analizy jego zawartości, a następnie podjęcie konkretnych działań w zależności od tego, jakie elementy zostaną znalezione. XSLT można użyć także do zmiany kolejności danych wynikowych na podstawie pewnych kryteriów, do wyświetlenia tylko określonych fragmentów informacji. W procesie przekształcania biorą udział dwa dokumenty: źródłowy dokument XML oraz arkusz stylów XSLT opisujący reguły przekształcania. Arkusze stylów to pliki tekstowe, zapisywane są z rozszerzeniem.xsl. Każdy arkusz stylów też jest plikiem XML. Do wykonania przekształcenia potrzebujemy: procesora XSLT lub przeglądarki, obsługującej XSLT (większość ma wbudowaną obsługę).

1. Powiązanie dokumentu XML z arkuszem stylów XSLT 2.0: dodajemy instrukcję (po deklaracji xml): <?xml-stylesheet type="text/xsl" href="booksstyl.xsl"?>

1. Powiązanie dokumentu XML z arkuszem stylów XSLT 2.0: dodajemy instrukcję (po deklaracji xml): <?xml-stylesheet type="text/xsl" href="booksstyl.xsl"?> 2. Przeglądarka (lub procesor XSLT) następnie wykona transformację pliku XML, zanim zostanie on wyświetlony. Pierwszy etap: konwersja dokumentu XML do drzewa węzłów, które jest hierarchiczną reprezentacją. Każdy węzeł odpowiada jednemu z elementów dokumentu XML, atrybutowi lub zawartości tekstowej. 3. Kolejny etap to odwołanie się do arkusza stylów XSLT w celu znalezienia instrukcji, określających sposób wyświetlania węzłów. Instrukcje te są zawarte w tzw. szablonach, które składają się z etykiety, która identyfikuje węzły, do których ma zastosowanie dany szablon i z instrukcji określających, jak te węzły mają być przekształcone.

Dokument XML i jego drzewo węzłów <?xml version="1.0"?> <books> <book> <authors> <author id="47">włodzimierz Krysicki</author> <author id="58">lech Włodarski</author> </authors> <title>analiza matematyczna w zadaniach</title> <price>69.00</price> <keywords> <keyword>pochodna</keyword> <keyword>całka</keyword> </keywords> </book> </books>

Dokument XML i jego drzewo węzłów!"" #$% #% # #

Inicjowanie arkusza stylów XSLT: deklarujemy, że to dokument XML: <?xml version="1.0"?> następnie deklarujemy przestrzeń nazw XSLT i jej prefiks oraz wersję XSLT <xsl:stylesheet xmlns:xsl="http://www.w3.org/ 1999/XSL/Transform" version="2.0"> określamy typ pliku wynikowego (html): <xsl:output method="html"/> tworzymy szablon główny: <xsl:template match="/"> w szablonie głównym określamy poszczególne elementy dokumentu HTML Zamykamy szablon główny: </xsl:template> i kończymy arkusz stylów: </xsl:stylesheet>

Tworzenie szablonu głównego: <xsl:template match="/"> Szablon główny określa reguły stosowane do węzła głównego dokumentu XML. Opisuje sposób przetwarzania zawartości z węzła głównego w nowe dane wynikowe. Aby utworzyć plik wyjściowy w formacie html, należy zastosować instrukcję: <xsl:output method="html"/> W obrębie szablonu głównego należy teraz określić poszczególne elementy dokumentu HTML (head, title, body, itp.). Wszystko w obrębie szablonu głównego, co nie jest instrukcją XSLT (czyli elementy literalne), będzie wyświetlane w takiej formie, w jakiej zostało zapisane. W ten sposób można dodać znaczniki i tekst html do pliku wynikowego.

Wyświetlanie wartości węzła Aby wyświetlić wartość węzła XML, używamy instrukcji <xsl:value-of>: <xsl:value-of select="wyrażenie"/> Wyrażenie XPath identyfikuje zbiór węzłów, który ma być wyświetlany. Uwagi instrukcja select="." służy do wybrania bieżącego węzła. Jeżeli wyrażenie select odpowiada więcej, niż jednemu węzłowi, wyświetlana jest zawartość pierwszego węzła. Można zwrócić tylko te węzły, dla których określony atrybut ma daną wartość, np.: select="books/book[@language= polski ]" Jeżeli wyrażenie select odpowiada węzłowi, który posiada węzły potomne, ich zawartość też jest wyświetlana. Jeżeli odpowiada pustemu zbiorowi węzłów - nic nie jest wyświetlane.

Zapętlanie węzłów Element xsl:for-each pozwala działać na wszystkich węzłach, do których pasuje. Aby przetwarzać węzły partiami, należy: w obrębie reguły szablony wpisujemy <xsl:for-each select="wyrażenie"> podajemy reguły przetwarzania węzłów, które mają być przetworzone (identyfikuje je wyrażenie XPath) kończymy instrukcję znacznikiem </xsl:for-each> Uwagi znacznik xsl:for-each powinno się umieszczać przed regułami, które mają być powtarzane dla każdego znalezionego węzła jeżeli chcemy umieścić zawartość węzłów w tabeli, znacznik <table> otwierający tabelę powinien być przed instrukcją <xsl:for-each>, a znacznik zamykający tabelę po niej.

Język XPath XPath jest językiem służącym do wybierania węzłów i zbioru węzłów poprzez określanie ścieżek ich lokalizacji w dokumencie XML. XPath można też użyć do dalszego przetworzenia zbioru zwróconych węzłów, za pomocą wbudowanych funkcji do obliczeń matematycznych, przetwarzania ciągów znaków i testowania warunków w dokumencie XML. U podstaw języka XPath leży możliwość stosowania ścieżek lokalizacji, w celu odwołania się do węzłów dokumentu XML (węzeł to każdy indywidualny fragment dokumentu XML: element, atrybut, zawartość tekstowa). XPath widzi dokument XML w postaci drzewa węzłów.

Dokument XML i jego drzewo węzłów <?xml version="1.0"?> <books> <book> <authors> <author id="47">włodzimierz Krysicki</author> <author id="58">lech Włodarski</author> </authors> <title>analiza matematyczna w zadaniach</title> <price>69.00</price> <keywords> <keyword>pochodna</keyword> <keyword>całka</keyword> </keywords> </book> </books>

Dokument XML i jego drzewo węzłów!"" #$% #% # #

Ścieżki lokalizacji Dwa rodzaje ścieżek lokalizacji: względna ścieżka: składa się z sekwencji kroków lokalizacji, rozdzielonych znakiem /. Każdy krok określa węzeł (lub zbiór węzłów) wzgl. węzła bieżącego. W kolejnym kroku każdy węzeł w tym zbiorze jest użyty w roli węzła bieżącego dla kolejnego kroku; bezwględna ścieżka: zaczyna się od znaku /, po którym może następować względna ścieżka lokalizacji. Znak / określa węzeł główny. Węzeł bieżący to element lub węzeł, który jest aktualnie przetwarzany.

Wyrażenia XPath Wybieranie dzieci danego węzła: jeżeli bieżący węzeł zawiera elementy, które chcemy znaleźć, należy podać nazwę elementu - dziecka, aby odwołać się do dalszych potomków, należy użyć znaku / i podać nazwę dalszego potomka, itp. Znak * określa wszystkie dzieci bieżącego węzła, np. /book/authors/author /book/title Wybieranie rodzica danego węzła: za pomocą.. Można potem odwołać się do innych dzieci węzła, będącego tym rodzicem, np.../title spowoduje wybranie węzła - dziecka (o nazwie title) dla węzła będącego rodzicem węzła bieżącego;../* to wybranie wszystkich elementów-dzieci rodzica węzła bieżącego. Wybieranie atrybutów węzła: stosujemy znak @. Wpisz ścieżkę lokalizacji dla danego węzła, następnie /@nazwa atrybutu, np. /book/authors/author[@id=100]

Wyrażenia XPath Wybieranie wszystkich potomków: skrót // Aby wybrać wszystkich potomków węzła głównego użyj // Aby wybrać pewnych potomków danego węzła użyj ścieżka lokalizacji do węzła//nazwa elementu, który nas interesuje. Aby wybrać wszystkie węzły o danej nazwie, bez względu na ich położenie w dokumencie XML, użyj //nazwa elementu. Warunkowe wybieranie węzłów: w XPath można tworzyć wyrażenia logiczne (tzw. predykaty), do testowania warunków, na podstawie których można wybrac tylko pewien podzbiór ze znalezionego zbioru węzłów. Podajemy je w nawiasach kwadratowych, np. /book/authors/author[@id=200] Wybranie tylko wartości tekstowej elementu: funkcja text(), np. /book/authors/author/text()

Język XQuery Język XQuery 1.0 jest wykorzystywany do selekcji zawartości z danych źródłowych XML, przekształcania jej wg określonych reguł, a następnie zwracania w postaci np. pliku XML, HTML lub innej. XQuery stosuje składnię języka XPath 2.0 do wybierania zawartości źródłowej XML i modyfikacji tej zawartości w razie potrzeby.

Wyrażenia FLWOR Wyrażenie FLWOR zawiera następujące klauzule (od początkowych liter klauzul powstała nazwa wyrażenia:) F: for (dokonuje iteracji wiążąc zmienną z elementem) L: let (wiąże zmienną z sekwencją) W: where (eliminuje elementy do iteracji) O: order by (porządkuje elementy do iteracji) R: return (buduje wynik zapytania) xquery for $cust in db2-fn:xmlcolumn("customer.info")/customerinfo let $tel :=$cust/phone where $tel/@type= work order by $cust return ($cust/name/text(), $tel);

XML w relacyjnych bazach danych Model XML jest modelem hierarchicznym, natomiast dane relacyjne mają płaską strukturę. Dane XML opisują swoje znaczenie, a dane relacyjne nie. Dane XML mają określoną kolejność, a dane relacyjne nie. Konwersja z formatu XML na relacyjny jest kłopotliwa, w drugą stronę nieco łatwiejsza.

XML w relacyjnych bazach danych Dane XML można przechowywać w relacyjnej bazie danych na kilka sposobów: całe dokumenty XML, jako duże obiekty (CLOB / BLOB) - duża elastyczność w przechowywaniu dokumentów XML o różnej strukturze, kosztem wydajności zapytań. Szybkie wstawianie oraz pobieranie całych dokumentów Swoboda definiowania struktury dokumentu (schematu) Koniecznosc parsowania dokumentu w momencie realizowania zapytan przy odwołaniu do elementów nie poindeksowanych (niska wydajność zapytań) rozbite na kilka tabel bazy (mimo stosunkowo dobrej wydajnosci wyszukiwania, tracimy to co motywuje do korzystania z formatu XML elastyczność). Stosunkowo szybkie wyszukiwanie, nawet mimo konwersji XQuery na SQL Konieczność definiowania struktury (schematu) dokumentu przed wstawieniem - problem ze zmianą schematu

XML w DB2: Technologia PureXML Dokument jest wstawiany do pola o typie XML, w tle wezły dokumentu są dekomponowane do hierarchicznej postaci (do drzewa węzłów). Duża elastyczność, brak wymogu wcześniejszego definiowania schematu Szybkie wyszukiwanie, bez koniecznosci dynamicznego parsowania Spowolnione przy wstawianiu dokumentu. Hybrydowa architektura serwera DB2 pozwala zachować elastyczność formatu XML przy zachowaniu odpowiedniej wydajności.

XML w DB2 Dostęp do danych XML: języki SQL/XML oraz XQuery. Obsługa XML wbudowana w DB2: Wysoka wydajność dzięki głębokiej integracji XML w silnik DB2. Zoptymalizowane przechowywanie XML: Nowy sposób składowania oraz indeksowania dokumentów XML silnik hierarchiczny.

Zapytania na danych XML Istnieją dwa sposoby konstruowania zapytań XML w DB2: (1) przy użyciu XQuery: XQuery jako język podstawowy. (2) Przy użyciu SQL z rozszerzeniami XML (SQL/XML): SQL jako język podstawowy, umożliwia złączenie danych XML z relacyjnymi.

Odpytywanie danych XML za pomoca XQuery XQuery jest użyty jako język podstawowy, można używać SQL osadzonego wewnątrz XQuery (za pomocą funkcji db2-fn: sqlquery lub db2-fn:xmlcolumn).

Odpytywanie danych XML za pomoca XQuery XQuery jest użyty jako język podstawowy, można używać SQL osadzonego wewnątrz XQuery (za pomocą funkcji db2-fn: sqlquery lub db2-fn:xmlcolumn). Przykład: xquery db2-fn:xmlcolumn("customer.info"); Wyrażenia XQuery zawsze poprzedzamy prefiksem xquery, aby DB2 wiedział, że należy użyć parsera XQuery.

Odpytywanie danych XML za pomoca XQuery XQuery jest użyty jako język podstawowy, można używać SQL osadzonego wewnątrz XQuery (za pomocą funkcji db2-fn: sqlquery lub db2-fn:xmlcolumn). Przykład: xquery db2-fn:xmlcolumn("customer.info"); Wyrażenia XQuery zawsze poprzedzamy prefiksem xquery, aby DB2 wiedział, że należy użyć parsera XQuery. Funkcja db2-fn:xmlcolumn: zwraca dokumenty XML z kolumny podanej w parametrze. Powyższe zapytanie odpowiada wyrażeniu SQL: SELECT contact FROM clients

Odpytywanie danych XML za pomoca XQuery XQuery jest użyty jako język podstawowy, można używać SQL osadzonego wewnątrz XQuery (za pomocą funkcji db2-fn: sqlquery lub db2-fn:xmlcolumn). Przykład: xquery db2-fn:xmlcolumn("customer.info"); Wyrażenia XQuery zawsze poprzedzamy prefiksem xquery, aby DB2 wiedział, że należy użyć parsera XQuery. Funkcja db2-fn:xmlcolumn: zwraca dokumenty XML z kolumny podanej w parametrze. Powyższe zapytanie odpowiada wyrażeniu SQL: SELECT contact FROM clients Przy funkcji db2-fn:xmlcolumn można podać wyrażenie XPath, aby wybrać dane XML w odpowiedni sposób.

Przykładowe zapytania xquery db2-fn:xmlcolumn("customer.info")/ customerinfo/ name/text(); xquery db2-fn:xmlcolumn("customer.info")/ customerinfo[@cid >= 1001]/name; xquery db2-fn:xmlcolumn("customer.info")/ customerinfo/count(phone); xquery db2-fn:xmlcolumn("customer.info")/ customerinfo/ (<dane> {name/text(), liczba nr tel:, count(phone)}</dane>);

Odpytywanie danych XML za pomoca XQuery Przykład - użycie wyrażenia FLWOR z funkcją db2-fn:xmlcolumn: xquery for $y in db2-fn:xmlcolumn( CLIENTS.CONTACT )/Client/fax return $y

Odpytywanie danych XML za pomoca XQuery Funkcja db2-fn:sqlquery wykonuje zapytanie SQL i zwraca tylko wybrane dane XML. Zapytania SQL przekazane do db2-fn:sqlquery muszą zwracać tylko dane XML. Te dane XML mogą być następnie przetwarzane przez XQuery.

Odpytywanie danych XML za pomoca XQuery Funkcja db2-fn:sqlquery wykonuje zapytanie SQL i zwraca tylko wybrane dane XML. Zapytania SQL przekazane do db2-fn:sqlquery muszą zwracać tylko dane XML. Te dane XML mogą być następnie przetwarzane przez XQuery. xquery for $cust in db2-fn:sqlquery( "SELECT info FROM customer WHERE cid = 1005" )/customerinfo let $phone :=$cust/phone return (<info> {$cust/name/text(), $phone} </info>);

Odpytywanie danych XML za pomoca SQL/XML Zapytanie SQL może być wykorzystane do pracy z całymi dokumentami XML, ale nie pozwala na dostęp jedynie do wybranych fragmentów dokumentu. W takiej sytuacji można wykorzystać rozszerzenie SQL - SQL/XML.

Odpytywanie danych XML za pomoca SQL/XML Zapytanie SQL może być wykorzystane do pracy z całymi dokumentami XML, ale nie pozwala na dostęp jedynie do wybranych fragmentów dokumentu. W takiej sytuacji można wykorzystać rozszerzenie SQL - SQL/XML. Podstawowe funkcje SQL/XML (zgodnie ze standardem SQL 2006): Nazwa funkcji Opis XMLPARSE Analizuje ciąg znaków lub obiekt binarny zwraca dokument XML XMLSERIALIZE Tłumaczy dokument XML na ciąg znaków lub obiekt binarny XMLVALIDATE Waliduje dokument XML według schematu XMLEXISTS Określa, czy polecenie XQuery zwraca wynik XMLQUERY Wykonuje polecenie XQuery XMLTABLE Wykonuje polecenie XQuery zwraca wynik w postaci tabeli relacyjnej XMLCAST Rzutuje z lub na dokument XML

Funkcja XMLQUERY Funkcja XMLQUERY - umożliwia wykonanie wyrażenia XQuery z poziomu SQL; zwraca wyrażenie XML - sekwencję XML, będącą wynikiem wyrażenia XQuery dla każdego wiersza zapytania SQL; zwracana sekwencja może zawierać wiele elementów, lub być pusta.

Funkcja XMLQUERY Funkcja XMLQUERY - umożliwia wykonanie wyrażenia XQuery z poziomu SQL; zwraca wyrażenie XML - sekwencję XML, będącą wynikiem wyrażenia XQuery dla każdego wiersza zapytania SQL; zwracana sekwencja może zawierać wiele elementów, lub być pusta. Wykorzystując XMLQUERY: mamy możliwość wykonywania zapytań na danych XML; dane XML mogą być użyte w obrębie zapytania SQL; dostęp jednocześnie do danych relacyjnych i XML; dane XML zwrócone przez XQUERY można następnie wykorzystać w zapytaniu SQL, aby np. uporządkować wynik (należy je najpierw zrzutować na odpowiedni relacyjny typ danych za pomocą XMLCAST).

XMLQUERY SELECT XMLQuery( $i/customerinfo/name PASSING INFO as "i") FROM customer where CID IN (1003,1001,1004); W tym zapytaniu XQuery, zmienna $i zawiera dokument XML zapisany w tabeli customer w kolumnie INFO (typu XML). Przypisanie dokumentu do zmiennej następuje w klauzuli PASSING INFO as "i" (można związać więcej niż jedną zmienną). Wyrażenie XPath wykorzystane w funkcji wskazuje na element name w dokumencie XML.

XMLQUERY SELECT XMLQuery( $i/customerinfo/name PASSING INFO as "i") FROM customer where CID IN (1003,1001,1004); W tym zapytaniu XQuery, zmienna $i zawiera dokument XML zapisany w tabeli customer w kolumnie INFO (typu XML). Przypisanie dokumentu do zmiennej następuje w klauzuli PASSING INFO as "i" (można związać więcej niż jedną zmienną). Wyrażenie XPath wykorzystane w funkcji wskazuje na element name w dokumencie XML. Wynik: <name>kathy Smith</name> <name>robert Shoemaker</name> <name>matt Foreman</name>

W funkcji XMLQUERY można użyć także wyrażenia FLWOR XQuery, np. SELECT XMLQuery( for $c in $i/customerinfo let $p := $c/phone return ($c/name, $p) PASSING INFO as "i") as dane FROM customer where CID =1004;

W funkcji XMLQUERY można użyć także wyrażenia FLWOR XQuery, np. SELECT XMLQuery( for $c in $i/customerinfo let $p := $c/phone return ($c/name, $p) PASSING INFO as "i") as dane FROM customer where CID =1004; Wynik (tylko jeden wiersz): DANE --------------------------------------------------------------------- <name>matt Foreman</name><phone type="work">905-555-4789</phone> <phone type="home">416-555-3376</phone>

Funkcja XMLTable Funkcję XMLTable można wykorzystać, jeżeli chcemy prezentować dane XML w postaci tabeli, np. select c.cid, cinfo.name,cinfo.city, cinfo.phone, cinfo.type from customer c, xmltable( $cust/customerinfo passing c.info as "cust" columns name char(30) path name, city char(12) path addr/city, phone char(12) path phone[1], type char(6) path phone[1]/@type ) cinfo;

Wynik poprzedniego zapytania: CID NAME CITY PHONE TYPE --- --------------- -------- -------- ---- 1000 Kathy Smith Toronto 416-555-1358 work 1001 Kathy Smith Markham 905-555-7258 work 1002 Jim Noodle Markham 905-555-7258 work 1003 Robert Shoemaker Aurora 905-555-7258 work 1004 Matt Foreman Toronto 905-555-4789 work 1005 Larry Menard Toronto 905-555-9146 work

XMLTable z wykorzystaniem wyrażenia FOR w XPath select c.cid, cinfo.name,cinfo.city, cinfo.phone, cinfo.type from customer c, xmltable( $cust/customerinfo passing c.info as "cust" columns name char(30) path name, city char(12) path addr/city, phone char(12) path for $p in phone return $p, ) cinfo;

XMLExists Funkcja XMLExists może być wykorzystana w klauzuli WHERE zapytania SQL, aby sprawdzić, czy zapytanie XQuery zwraca wyniki, np. select cid, xmlquery( $INFO/customerinfo/name/text() ) from customer where xmlexists( $INFO/customerinfo/phone[@type="home"] );

XMLExists Funkcja XMLExists może być wykorzystana w klauzuli WHERE zapytania SQL, aby sprawdzić, czy zapytanie XQuery zwraca wyniki, np. select cid, xmlquery( $INFO/customerinfo/name/text() ) from customer where xmlexists( $INFO/customerinfo/phone[@type="home"] ); Powyższe zapytanie zwróci informacje tylko o tych klientach, którzy podali domowy numer telefonu. Uwaga. w funkcjach XMLQuery i XMLExists w przykładzie wykorzystano uproszczoną składnię.