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

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

XML w bazie danych IBM DB2

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

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Wykład 5. SQL praca z tabelami 2

BAZA DANYCH SIECI HOTELI

Relacyjne bazy danych. Podstawy SQL

Język SQL, zajęcia nr 1

Indeksowanie w bazach danych

Hurtownia Świętego Mikołaja projekt bazy danych

Wykład 05 Bazy danych

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Relacyjne bazy danych. Podstawy SQL

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

1 XML w bazach danych

XML i nowoczesne metody zarządzania treścią

Bazy danych 7. SQL podstawy

Bazy Danych i Usługi Sieciowe

Bazy danych. dr inż. Arkadiusz Mirakowski

Imię i Nazwisko Data Ocena. Laboratorium 7

Tworzenie raportów XML Publisher przy użyciu Data Templates

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych i usługi sieciowe

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

XML w bazach danych i bezpieczeństwie

SQL (ang. Structured Query Language)

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Autor: Joanna Karwowska

PODSTAWY BAZ DANYCH 13. PL/SQL

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Semistrukturalne bazy danych Wykład dla studentów matematyki

- wewnątrz elementów prostych występuje tylko jeden typ danych, wewnątrz złoŝonych nie moŝemy dokładnie określić liczby wystąpień elementu

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Programowanie w Ruby

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Komunikacja z bazą danych psql

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

XML w bazach danych i bezpieczeństwie

Bazy danych. Dr inż. Paweł Kasprowski

Oracle PL/SQL. Paweł Rajba.

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Modelowanie wymiarów

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

DB2 XML Extender. Opracowane na podstawie dokumentacji IBM XML Extender

Kurs. Podstawy MySQL

Podstawowe zapytania SELECT (na jednej tabeli)

Oracle PL/SQL. Paweł Rajba.

P o d s t a w y j ę z y k a S Q L

Jerzy Nawrocki, Wprowadzenie do informatyki

Wykład 5: PHP: praca z bazą danych MySQL

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl

Model semistrukturalny

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Załącznik nr 14 Struktura logiczna korekty informacji podsumowującej o dokonanych wewnątrzwspólnotowych dostawach/nabyciach towarów (VAT-UEK)

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Struktura drzewa w MySQL. Michał Tyszczenko

Bazy danych 12. SQL Wyszukiwanie pełnotekstowe

Bazy danych. Polecenia SQL

Tuning SQL Server dla serwerów WWW

Bazy danych 5. Samozłaczenie SQL podstawy

Wykład 8. SQL praca z tabelami 5

Słowem wstępu. Standard: W3C XPath razem XSLT 1.0. XPath razem z XQuery 1.0 i XSLT 2.0. XPath trwają prace nad XPath 3.

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Bazy danych Język SQL część 1 Wykład dla studentów matem

Bloki anonimowe w PL/SQL

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Multimedialne bazy danych - laboratorium

Bazy danych 6. Klucze obce. P. F. Góra

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Standard SQL/XML. Wprowadzenie do XQuery

Grupowanie i funkcje agregujące

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

XML Path Language (XPath)

CREATE TABLE logika (p BOOLEAN); INSERT INTO logika VALUES(true); INSERT INTO logika VALUES(false); INSERT INTO logika VALUES(NULL);

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

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

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Języki XPath i XQuery

Język SQL. Rozdział 2. Proste zapytania

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Przestrzenne bazy danych Podstawy języka SQL

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Transkrypt:

Intro Igor Wojnicki (AGH, KIS) XML 6 października 2016 1 / 49 ZTB: XML Igor Wojnicki Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie 6 października 2016

Intro Igor Wojnicki (AGH, KIS) XML 6 października 2016 2 / 49 Problem XML. DB. DB XML. XML DB. XML DB.

Wstęp Igor Wojnicki (AGH, KIS) XML 6 października 2016 3 / 49 Spis Treści 1 Intro 2 PostgreSQL Wstęp Eksport Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML 3 Natywne BD XML EXist BaseX 4 Wyszukiwanie i transformacje XPath XQuery

Wstęp Igor Wojnicki (AGH, KIS) XML 6 października 2016 4 / 49 Możliwości Eksport do XML. Typ danych XML. XPath do wyszukiwania. Integracja z SQL.

Wstęp Igor Wojnicki (AGH, KIS) XML 6 października 2016 5 / 49 Jak użyć XML Typ danych: xml INSERT INTO test VALUES ( XMLPARSE (DOCUMENT <doc>...</doc> ),... ) SELECT XMLSERIALIZE (DOCUMENT data AS varchar) FROM test; INSERT INTO test VALUES ( <doc>...</doc>,... ) SELECT data FROM test; Domyślnie przetwarzane jako CONTENT, a nie DOCUMENT pozwala na las. SET XML OPTION { DOCUMENT CONTENT };

Wstęp Igor Wojnicki (AGH, KIS) XML 6 października 2016 6 / 49 Cechy Brak operatorów porównania. Do pobierania/indeksowania należy użyć: rzutowania na tekst (text/varchar), wyrażeń XPath.

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 7 / 49 Spis Treści 1 Intro 2 PostgreSQL Wstęp Eksport Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML 3 Natywne BD XML EXist BaseX 4 Wyszukiwanie i transformacje XPath XQuery

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 8 / 49 Elementy I Generacja element(ów) z wiersza danych. Rozwiązanie czołgowe. SELECT <klient id=" idklienta "> nazwa </klient> FROM klienci;

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 9 / 49 Elementy II Po prostu rozwiązanie. xmlelement(name name [, xmlattributes(value [AS attname] [,... ])] [, content,...]) Przykłady: SELECT xmlelement(name customer); xmlelement ------------- <customer/> SELECT xmlelement(name customer, dane klienta ); xmlelement ------------------------------------ <customer>dane klienta</customer>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 10 / 49 Elementy III SELECT xmlelement(name customer, dane, klienta ); xmlelement ---------------------------------- <customer>daneklienta</customer> SELECT xmlelement(name customer, xmlelement(name name, nazwa klienta )); xmlelement ------------------------------------------------- <customer><name>nazwa klienta</name></customer> SELECT xmlelement(name customer, xmlelement(name name, nazwa klienta ), xmlelement(name address, adres klienta )); xmlelement -------------------------------------------------------- <customer> <name>nazwa klienta</name> <address>adres klienta</address> </customer>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 11 / 49 Elementy IV SELECT xmlelement(name customer, xmlelement(name name, xmlelement(name fn, imie ), xmlelement(name ln, nazwisko ) ), xmlelement(name address, adres klienta )); xmlelement ------------------------------------- <customer> <name> <fn>imie</fn> <ln>nazwisko</ln> </name> <address>adres klienta</address> </customer>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 12 / 49 Elementy V SELECT xmlelement(name customer, xmlattributes( a10 as id), dane klienta ); xmlelement ------------------------------------------ <customer id="a10">dane klienta</customer> SELECT xmlelement(name customer, xmlattributes( a10 as id, a11 as ref), dane klienta ); xmlelement ---------------------------------------------------- <customer id="a10" ref="a11">dane klienta</customer>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 13 / 49 Elementy VI Dane z tabeli... SELECT xmlelement(name customer, xmlelement(name name,nazwa)) FROM klienci; xmlelement ----------------------------------------------------- <customer><name>magdalena Sowinska</name></customer> <customer><name>malgorzata Babik</name></customer> SELECT xmlelement(name customer, xmlattributes(idklienta as id), xmlelement(name name,nazwa)) FROM klienci; xmlelement ----------------------------------------------------------------- <customer id="msowins"><name>magdalena Sowinska</name></customer> <customer id="mbabik"><name>malgorzata Babik</name></customer>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 14 / 49 Elementy VII Atrybuty na podstawie kolumn SELECT xmlelement(name customer, xmlattributes(idklienta), nazwa) FROM klienci; xmlelement ----------------------------------------------------------- <customer idklienta="msowins">magdalena Sowinska</customer> <customer idklienta="mbabik">malgorzata Babik</customer> Znaki niedozwolone SELECT xmlelement(name customer, <>& ); xmlelement ------------------------------------ <customer><>&</customer>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 15 / 49 Wiele elementów I xmlforest(content [AS name] [,...]) Przykłady: SELECT xmlforest( Nowak as customer, Wielicka 25 as address); xmlforest ---------------------------------------------------------- <customer>nowak</customer><address>wielicka 25</address> SELECT xmlforest(idklienta, nazwa) FROM klienci; xmlforest ------------------------------------------------------------------- <idklienta>msowins</idklienta><nazwa>magdalena Sowinska</nazwa> <idklienta>mbabik</idklienta><nazwa>malgorzata Babik</nazwa>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 16 / 49 Wiele elementów II zwykle w połączeniu z xmlelement(): SELECT xmlelement(name customer,xmlforest(idklienta, nazwa)) FROM klienci; xmlelement ------------------------------------------------------------------- <customer> <idklienta>msowins</idklienta> <nazwa>magdalena Sowinska</nazwa> </customer> <customer> <idklienta>mbabik</idklienta> <nazwa>malgorzata Babik</nazwa> </customer>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 17 / 49 Root xmlroot(xml, version text no value [, standalone yes no no value]) Przykład SELECT xmlroot(xmlelement(name test, content ), version 1.1,standalone yes); xmlroot ------------------------------------------------------------ <?xml version="1.1" standalone="yes"?><test>content</test> Wartości: version i standalone modyfikują dane w elemencie <?xml>.

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 18 / 49 Łączenie xmlconcat(xml[,...]) Przykład SELECT xmlconcat( <abc/>, <bar>foo</bar> ); xmlconcat ---------------------- <abc/><bar>foo</bar>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 19 / 49 Agregacja XML Łączy dane XML z wielu wierszy. xmlagg(xml) Problem: generacja całego dokumentu za pomocą 1-go zapytania. SELECT xmlroot(xmlelement(name customer,nazwa), version 1.1) FROM klienci; xmlroot ---------------------------------------------------------------- <?xml version="1.1"?><customer>magdalena Sowinska</customer> <?xml version="1.1"?><customer>malgorzata Babik</customer> Rozwiązanie: SELECT xmlroot(xmlelement(name data, xmlagg(xmlelement(name customer,nazwa))), version 1.1) FROM klienci; <?xml version="1.1"?> <data> <customer>magdalena Sowinska</customer> <customer>malgorzata Babik</customer>... </data>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 20 / 49 XML Processing Instructions xmlpi(name target [, content]) Przykład: SELECT xmlpi( name "xml-stylesheet", type="text/xsl" href="style.xsl" ); xmlpi ----------------------------------------------------- <?xml-stylesheet type="text/xsl" href="style.xsl"?>

Eksport Igor Wojnicki (AGH, KIS) XML 6 października 2016 21 / 49 Komentarze xmlcomment(text) Przykład: SELECT xmlcomment( dane orientacyjne ); xmlcomment -------------------------- <!--dane orientacyjne-->

Porównywanie własności Igor Wojnicki (AGH, KIS) XML 6 października 2016 22 / 49 Spis Treści 1 Intro 2 PostgreSQL Wstęp Eksport Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML 3 Natywne BD XML EXist BaseX 4 Wyszukiwanie i transformacje XPath XQuery

Porównywanie własności Igor Wojnicki (AGH, KIS) XML 6 października 2016 23 / 49 Czy jest dokumentem? xml IS DOCUMENT Przykład: SELECT <a></a> IS DOCUMENT;?column? ---------- t SELECT <a></a><b></b> IS DOCUMENT;?column? ---------- f

Porównywanie własności Igor Wojnicki (AGH, KIS) XML 6 października 2016 24 / 49 Czy jest poprawnie sformułowany Czy podany tekst jest dokumentem XML? Czy rzutowanie na typ XML będzie działać. xml_is_well_formed(text) Przykład: SELECT xml_is_well_formed_document( <pg:foo xmlns:pg="http://postgresql.org/stuff">bar</my:foo> ); xml_is_well_formed_document ----------------------------- f

Porównywanie własności Igor Wojnicki (AGH, KIS) XML 6 października 2016 25 / 49 Czy dane istnieją? Czy wyrażenie XPath zwróci jakieś dane? XMLEXISTS(text PASSING [BY REF] xml [BY REF]) Przykład: SELECT xmlexists( //town[text() = Toronto ] PASSING BY REF <towns><town>toronto</town><town>ottawa</town></towns> ); xmlexists ------------ t Nawiasy kwadratowe w XPath oznaczają użycie predykatu; określenie warunku.

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 26 / 49 Spis Treści 1 Intro 2 PostgreSQL Wstęp Eksport Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML 3 Natywne BD XML EXist BaseX 4 Wyszukiwanie i transformacje XPath XQuery

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 27 / 49 Tabele, zapytania i XML I table_to_xml(tbl regclass, nulls boolean, tableforest boolean, targetns text) query_to_xml(query text, nulls boolean, tableforest boolean, targetns text) cursor_to_xml(cursor refcursor, count int, nulls boolean, tableforest boolean, targetns text) nulls wartości null reprezentowane przez element <nazwakolumny xsi:nil="true"/> tableforest każdy wiersz osobnym elementem, targetns namespace.

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 28 / 49 Tabele, zapytania i XML II Przykład: SELECT table_to_xml( odbiorcy, false, false, ); table_to_xml ------------------------------------------------------------------ <odbiorcy xmlns:xsi="http://www.w3.org/2001/xmlschema-instance">+ <row> + <idodbiorcy>1</idodbiorcy> + <nazwa>slawomir Zeganek</nazwa> + <miasto>krakow</miasto> + <kod>30-059</kod> + <adres>al A. Mickiewicza 4/3</adres> + </row> + <row> + <idodbiorcy>2</idodbiorcy> + <nazwa>dorota Pszczolka</nazwa> + <miasto>slomniki</miasto> + <kod>32-090</kod> + <adres>ul. Wiosenna 8</adres> + </row> +... + </odbiorcy> +

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 29 / 49 Tabele, zapytania i XML III Przykład: SELECT table_to_xml( odbiorcy, false, true, ); table_to_xml ------------------------------------------------------------------ <odbiorcy xmlns:xsi="http://www.w3.org/2001/xmlschema-instance">+ <idodbiorcy>1</idodbiorcy> + <nazwa>slawomir Zeganek</nazwa> + <miasto>krakow</miasto> + <kod>30-059</kod> + <adres>al A. Mickiewicza 4/3</adres> + </odbiorcy> + <odbiorcy xmlns:xsi="http://www.w3.org/2001/xmlschema-instance">+ <idodbiorcy>2</idodbiorcy> + <nazwa>dorota Pszczolka</nazwa> + <miasto>slomniki</miasto> + <kod>32-090</kod> + <adres>ul. Wiosenna 8</adres> + </odbiorcy> +

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 30 / 49 Tabele, zapytania i XML IV Przykład: SELECT query_to_xml( SELECT idodbiorcy,nazwa FROM odbiorcy, false, false, ); query_to_xml --------------------------------------------------------------- <table xmlns:xsi="http://www.w3.org/2001/xmlschema-instance">+ + <row> + <idodbiorcy>1</idodbiorcy> + <nazwa>slawomir Zeganek</nazwa> + </row> + + <row> + <idodbiorcy>2</idodbiorcy> + <nazwa>dorota Pszczolka</nazwa> + </row> +...

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 31 / 49 Schematy XML i schematy bazy I table_to_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text) query_to_xmlschema(query text, nulls boolean, tableforest boolean, targetns text) cursor_to_xmlschema(cursor refcursor, nulls boolean, tableforest boolean, targetns text)

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 32 / 49 Schematy XML i schematy bazy II Przykład: SELECT table_to_xmlschema( odbiorcy, false, false, ); table_to_xmlschema ----------------------------------------------------------------------------- <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:simpletype name="integer"> <xsd:restriction base="xsd:int"> <xsd:maxinclusive value="2147483647"/> <xsd:mininclusive value="-2147483648"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="varchar"> <xsd:restriction base="xsd:string"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="char"> <xsd:restriction base="xsd:string">

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 33 / 49 Schematy XML i schematy bazy III </xsd:restriction> </xsd:simpletype> <xsd:complextype name="rowtype.wojnicki.public.odbiorcy"> <xsd:sequence> <xsd:element name="idodbiorcy" type="integer" minoccurs="0"></xsd:element> <xsd:element name="nazwa" type="varchar" minoccurs="0"></xsd:element> <xsd:element name="miasto" type="varchar" minoccurs="0"></xsd:element> <xsd:element name="kod" type="char" minoccurs="0"></xsd:element> <xsd:element name="adres" type="varchar" minoccurs="0"></xsd:element> </xsd:sequence> </xsd:complextype> <xsd:complextype name="tabletype.wojnicki.public.odbiorcy"> <xsd:sequence> <xsd:element name="row" type="rowtype.wojnicki.public.odbiorcy" minoccurs="0" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> <xsd:element name="odbiorcy" type="tabletype.wojnicki.public.odbiorcy"/>

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 34 / 49 Schematy XML i schematy bazy IV </xsd:schema>

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 35 / 49 I jeszcze kilka innych funkcji table_to_xml_and_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text) query_to_xml_and_xmlschema(query text, nulls boolean, tableforest boolean, targetns text) schema_to_xml(schema name, nulls boolean, tableforest boolean, targetns text) schema_to_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text) schema_to_xml_and_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text) database_to_xml(nulls boolean, tableforest boolean, targetns text) database_to_xmlschema(nulls boolean, tableforest boolean, targetns text) database_to_xml_and_xmlschema(nulls boolean, tableforest boolean, targetns text)

Przetwarzanie XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 36 / 49 Spis Treści 1 Intro 2 PostgreSQL Wstęp Eksport Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML 3 Natywne BD XML EXist BaseX 4 Wyszukiwanie i transformacje XPath XQuery

Przetwarzanie XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 37 / 49 Przetwarzanie danych XML xpath(xpath, xml [, nsarray]) Zwraca tablice wybranych elementów, zgodnych z wyrażeniem XPath. xpath_exists(xpath, xml [, nsarray]) Przykład: SELECT id, name, (xpath( //comments/en/text(), description))[1] FROM printer; id name xpath -----+------------------------------+---------------------------- 1 Canon-BJ-100.xml Seems more or less compatible to the BJ-200. 2 Canon-BJ-10e.xml Note that some report it working properly in epson mode only.

Przetwarzanie XML Igor Wojnicki (AGH, KIS) XML 6 października 2016 38 / 49 Wyszukiwanie i indeksowanie XML SELECT... FROM... WHERE (xpath( //element/text(), description))[1]::text LIKE value CREATE INDEX idx_xml_printer_des ON printer USING btree ( (xpath( //element/text(), description))[1]::text ); select * from (select unnest(array[1,5,3])) as a; create index xmltest_idx on xmltest ( unnest(cast( (xpath( /d/text(),xml)) as text

Natywne BD XML EXist Igor Wojnicki (AGH, KIS) XML 6 października 2016 39 / 49 Spis Treści 1 Intro 2 PostgreSQL Wstęp Eksport Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML 3 Natywne BD XML EXist BaseX 4 Wyszukiwanie i transformacje XPath XQuery

Natywne BD XML BaseX Igor Wojnicki (AGH, KIS) XML 6 października 2016 40 / 49 Spis Treści 1 Intro 2 PostgreSQL Wstęp Eksport Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML 3 Natywne BD XML EXist BaseX 4 Wyszukiwanie i transformacje XPath XQuery

Wyszukiwanie i transformacje XPath Igor Wojnicki (AGH, KIS) XML 6 października 2016 41 / 49 Spis Treści 1 Intro 2 PostgreSQL Wstęp Eksport Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML 3 Natywne BD XML EXist BaseX 4 Wyszukiwanie i transformacje XPath XQuery

Wyszukiwanie i transformacje XPath Igor Wojnicki (AGH, KIS) XML 6 października 2016 42 / 49 XPath http://www.w3.org/tr/xpath/ Wyszukiwanie informacji w dokumentach XML. Wyrażenia do wyszukiwania (zbiorów) węzłów, podobne do ścieżek w systemach plików. Wbudowane funkcje: ekstrakcja i konwersja danych, porównywanie itp.

Wyszukiwanie i transformacje XPath Igor Wojnicki (AGH, KIS) XML 6 października 2016 43 / 49 Podstawy XPath Węzłem jest: element, atrybut, tekst, przestrzeń nazw, instrukcja przetwarzania (PI, processing instruction), komentarz, dokument.

Wyszukiwanie i transformacje XPath Igor Wojnicki (AGH, KIS) XML 6 października 2016 44 / 49 Wybieranie węzłów nazwa_węzła węzeł o określonej nazwie / korzeń // lokalizacja nieistotna. aktualny węzeł.. rodzic @ atrybut

Wyszukiwanie i transformacje XPath Igor Wojnicki (AGH, KIS) XML 6 października 2016 45 / 49 Predykaty stosowalności Występują w nawiasach kwadratowych, wykorzystują funkcje. //pcl[@level] elemnty pcl mające atrybut level //node()[@level] dowolne elementy mające atrybut level /printer[.//@level] elementy printer zawierające element z atr. level //dpi/node()[last()] ostatnie elementy w elementach dpi //dpi/*

Wyszukiwanie i transformacje XPath Igor Wojnicki (AGH, KIS) XML 6 października 2016 46 / 49 Wiele ścieżek //dpi //make //city[population>8000000][name="moscow"]/(name population)

Wyszukiwanie i transformacje XPath Igor Wojnicki (AGH, KIS) XML 6 października 2016 47 / 49 XPath //resolution[dpi/x>2000] //model[..//resolution/dpi/x>2000] //model[resolution/dpi/x>2000] podciągi, zobacz: http://www.w3.org/tr/xpath-functions //printer[fn:starts-with(make,"b")] //printer[fn:matches(make,"b")]

Wyszukiwanie i transformacje XQuery Igor Wojnicki (AGH, KIS) XML 6 października 2016 48 / 49 Spis Treści 1 Intro 2 PostgreSQL Wstęp Eksport Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML 3 Natywne BD XML EXist BaseX 4 Wyszukiwanie i transformacje XPath XQuery

Wyszukiwanie i transformacje XQuery Igor Wojnicki (AGH, KIS) XML 6 października 2016 49 / 49 XQUery for $p in //printer where $p/mechanism/color return ($p/make, $p/model) for $p in //printer where $p/mechanism/color return <p> { $p/make, $p/model } </p> for $p in //printer where $p/mechanism[not(color)] return <p> { $p/make, $p/model } </p> http://www.w3.org/tr/xquery-update-10/