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



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

XML w bazie danych IBM DB2

Wykład 5. SQL praca z tabelami 2

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Relacyjne bazy danych. Podstawy SQL

Wykład 05 Bazy danych

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

Relacyjne bazy danych. Podstawy SQL

Język SQL, zajęcia nr 1

Indeksowanie w bazach danych

Bazy danych. dr inż. Arkadiusz Mirakowski

BAZA DANYCH SIECI HOTELI

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

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

1 XML w bazach danych

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

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

Hurtownia Świętego Mikołaja projekt bazy danych

Programowanie w Ruby

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Modelowanie wymiarów

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

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Wykład 6. SQL praca z tabelami 3

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

Imię i Nazwisko Data Ocena. Laboratorium 7

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

Bazy Danych i Usługi Sieciowe

Podstawowe zapytania SELECT (na jednej tabeli)

Bazy danych 7. SQL podstawy

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

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

SQL (ang. Structured Query Language)

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

Standard SQL/XML. Wprowadzenie do XQuery

Wykład 8. SQL praca z tabelami 5

PODSTAWY BAZ DANYCH. 10. Partycjonowanie tabel i indeksów. 2009/ Notatki do wykładu "Podstawy baz danych"

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych i usługi sieciowe

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Autor: Joanna Karwowska

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

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

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wykład XII. optymalizacja w relacyjnych bazach danych

DB2 XML Extender. Opracowane na podstawie dokumentacji IBM XML Extender

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Struktura drzewa w MySQL. Michał Tyszczenko

Bazy danych 12. SQL Wyszukiwanie pełnotekstowe

Baza danych dla potrzeb zgłębiania DMX

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

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

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

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

Bazy danych. Dr inż. Paweł Kasprowski

PODSTAWY BAZ DANYCH Wykład Partycjonowanie tabel i indeksów

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

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

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

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

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

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

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

PODZAPYTANIE (SUBSELECT)

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

Grupowanie i funkcje agregujące

Język SQL. Rozdział 2. Proste zapytania

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

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

Komunikacja z bazą danych psql

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

Oracle PL/SQL. Paweł Rajba.

Język SQL podstawy zapytań

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

PODSTAWY BAZ DANYCH 13. PL/SQL

XML w bazach danych i bezpieczeństwie

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Nowe technologie baz danych

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

Ref. 7 - Język SQL - polecenia DDL i DML

Bazy danych SQL Server 2005

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

Bazy danych 5. Samozłaczenie SQL podstawy

ACESS- zadania z wykorzystaniem poleceń SQL

Wprowadzenie do baz danych

Bazy danych. Polecenia SQL

Relacyjne bazy danych a XML

SIECI KOMPUTEROWE I BAZY DANYCH

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

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

XML w bazach danych i bezpieczeństwie

Internetowe bazy danych

Oracle PL/SQL. Paweł Rajba.

Transkrypt:

Intro Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 1 / 37 ZTB: XML Igor Wojnicki Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie 18 grudnia 2013

Intro Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 2 / 37 Problem XML. DB. DB XML. XML DB. XML DB.

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 3 / 37 Spis Treści 1 Intro 2 Wyszukiwanie i transformacje 3 Wstęp Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML Wstęp

Wstęp Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 4 / 37 Możliwości do XML. Typ danych XML. XPath do wyszukiwania. Integracja z SQL.

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 5 / 37 Jak użyć XML INSERT INTO test VALUES ( XMLPARSE (DOCUMENT <doc>...</doc> ),... ) Wstęp SELECT XMLSERIALIZE (DOCUMENT data AS varchar) FROM test; INSERT INTO test VALUES ( <doc>...</doc>,... ) SELECT data FROM test;

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

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 7 / 37 Spis Treści 1 Intro 2 Wyszukiwanie i transformacje 3 Wstęp Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 8 / 37 Elementy I Generacja element(ów) z wiersza danych. Rozwiązanie czołgowe. SELECT <klient id=" idklienta "> nazwa </klient> FROM klienci;

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 9 / 37 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>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 10 / 37 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>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 11 / 37 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>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 12 / 37 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>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 13 / 37 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>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 14 / 37 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>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 15 / 37 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>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 16 / 37 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>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 17 / 37 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>.

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 18 / 37 Łączenie xmlconcat(xml[,...]) Przykład SELECT xmlconcat( <abc/>, <bar>foo</bar> ); xmlconcat ---------------------- <abc/><bar>foo</bar>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 19 / 37 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(xmlagg(xmlelement(name customer,nazwa)), version 1.1) FROM klienci; <?xml version="1.1"?> <data> <customer>magdalena Sowinska</customer> <customer>malgorzata Babik</customer>... </data>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 20 / 37 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"?>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 21 / 37 Komentarze xmlcomment(text) Przykład: SELECT xmlcomment( dane orientacyjne ); xmlcomment -------------------------- <!--dane orientacyjne-->

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 22 / 37 Spis Treści 1 Intro 2 Wyszukiwanie i transformacje 3 Wstęp Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML Porównywanie własności

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 23 / 37 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 18 grudnia 2013 24 / 37 Czy jest poprawnie sformułowany Porównywanie własności 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

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 25 / 37 Czy dane istnieją? Czy wyrażenie XPath zwróci jakieś dane? XMLEXISTS(text PASSING [BY REF] xml [BY REF]) Przykład: Porównywanie własności 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.

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 26 / 37 Spis Treści 1 Intro 2 Wyszukiwanie i transformacje 3 Wstęp Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML Mapowanie tabel i XML

Mapowanie tabel i XML Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 27 / 37 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.

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 28 / 37 Tabele, zapytania i XML II Przykład: Mapowanie tabel i XML 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> +

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 29 / 37 Tabele, zapytania i XML III Przykład: Mapowanie tabel i XML 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> +

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 30 / 37 Tabele, zapytania i XML IV Przykład: Mapowanie tabel i XML 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> +...

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 31 / 37 Schematy XML i schematy bazy I Mapowanie tabel i XML 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)

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 32 / 37 Schematy XML i schematy bazy II Przykład: Mapowanie tabel i XML 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"> </xsd:restriction>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 33 / 37 Schematy XML i schematy bazy III </xsd:simpletype> Mapowanie tabel i XML <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"/> </xsd:schema>

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 34 / 37 I jeszcze kilka innych funkcji Mapowanie tabel i XML 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)

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 35 / 37 Spis Treści 1 Intro 2 Wyszukiwanie i transformacje 3 Wstęp Porównywanie własności Mapowanie tabel i XML Przetwarzanie XML Przetwarzanie XML

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 36 / 37 Przetwarzanie danych XML Przetwarzanie 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.

Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 37 / 37 Wyszukiwanie i indeksowanie XML Przetwarzanie 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 );