XPath. Выборка данных из загруженных XML-документов

Содержание

Слайд 2

Как выбирать данные из загруженных XML-документов? Cуществуют специальные стандартизированные языки, ориентированные

Как выбирать данные из загруженных XML-документов?

Cуществуют специальные стандартизированные языки, ориентированные на

выборку таких данных:
XPath – язык для построения навигационных выражений
XQuery – язык для построения запросов (использует XPath)
Слайд 3

XPath XPath - это синтаксис для определения фрагментов XML-документа XPath использует

XPath

XPath - это синтаксис для определения фрагментов XML-документа
XPath использует специальные выражения

для навигации по XML-документу
XPath содержит библиотеку стандартных функций
XPath рекомендован к использованию консорциумом W3C
Примечание: World Wide Web Consortium (W3C) международное сообщество, которое развивает открытые стандарты для обеспечения долгосрочного роста Интернета.
Слайд 4

XPath - терминология Nodes Atomic values Parent Children Siblings Ancestors Descendants

XPath - терминология

Nodes
Atomic values
Parent
Children
Siblings
Ancestors
Descendants

Слайд 5

Пример XML-документа Harry Potter J K. Rowling 2005 29.99 . . .

Пример XML-документа

      Harry Potter     J K. Rowling  

2005     29.99  
. . .
Слайд 6

Nodes (root element node) J K. Rowling (element node) lang="en" (attribute node)

Nodes
(root element node) J K. Rowling (element node) lang="en" (attribute node)

Слайд 7

Atomic values J K. Rowling en 2005

Atomic values

J K. Rowling en
2005

Слайд 8

Parent book -> title book -> author book -> year book -> price

Parent

book -> title
book -> author
book -> year
book -> price


Слайд 9

Children title -> book author -> book year -> book price -> book

Children

title -> book
author -> book
year -> book
price -> book

Слайд 10

Siblings title author year price

Siblings

title
author
year
price

Слайд 11

Ancestors title -> book title -> bookstore

Ancestors

title -> book
title -> bookstore

Слайд 12

Descendants bookstore -> book bookstore -> title bookstore -> author bookstore -> year bookstore -> price

Descendants

bookstore -> book
bookstore -> title
bookstore -> author
bookstore -> year
bookstore -> price

Слайд 13

Выборка узлов

Выборка узлов

Слайд 14

Примеры (выборка узлов)

Примеры (выборка узлов)

Слайд 15

Примеры (предикаты)

Примеры (предикаты)

Слайд 16

Шаблоны

Шаблоны

Слайд 17

Примеры (использование шаблонов)

Примеры (использование шаблонов)

Слайд 18

XPath Operators

XPath Operators

Слайд 19

Примеры (выражения XPath) /bookstore/book/title /bookstore/book[1]/title /bookstore/book/price[text()] /bookstore/book[price>35]/price /bookstore/book[price>35]/title

Примеры (выражения XPath)

/bookstore/book/title
/bookstore/book[1]/title
/bookstore/book/price[text()]
/bookstore/book[price>35]/price
/bookstore/book[price>35]/title

Слайд 20

Как использовать XPath в СУБД? В СУБД существуют специальные функции, ориентированные

Как использовать XPath в СУБД?

В СУБД существуют специальные функции, ориентированные на

выборку данных, которые используют выражения XPath.
К примеру, функция XMLTable в ORACLE:
XMLTable(' |
         PASSING
         COLUMNS PATH ‘

)
Слайд 21

Пример(XPath + ORACLE) Выборка всех имен и фамилий из xml-документа Employees

Пример(XPath + ORACLE)

Выборка всех имен и фамилий из xml-документа Employees :
SELECT

t.id, x.*
     FROM employees t,
          XMLTABLE ('/Employees/Employee'
                    PASSING t.data
                    COLUMNS firstname VARCHAR2(30) PATH 'firstname', 
                             lastname VARCHAR2(30) PATH 'lastname') x
    WHERE t.id = 1;
Слайд 22


Слайд 23

Пример(XPath + ORACLE) Выборка имен всех сотрудников: SELECT t.id, x.* FROM

Пример(XPath + ORACLE)

Выборка имен всех сотрудников:
SELECT t.id, x.*
     FROM employees t,


          XMLTABLE ('/Employees/Employee/firstname'
                    PASSING t.data
                    COLUMNS firstname VARCHAR2 (30) PATH 'text()') x
    WHERE t.id = 1;
Слайд 24


Слайд 25

Пример(XPath + ORACLE) Имена и категории сотрудников: SELECT emp.id, x.* FROM

Пример(XPath + ORACLE)

Имена и категории сотрудников:
SELECT emp.id, x.*
     FROM employees emp,


          XMLTABLE ('/Employees/Employee'
                    PASSING emp.data
                    COLUMNS firstname VARCHAR2(30) PATH 'firstname',
                             type VARCHAR2(30) PATH '@type') x;
Слайд 26


Слайд 27

Пример Фамилия и имя сотрудника с номером 2222: SELECT t.id, x.*

Пример

Фамилия и имя сотрудника с номером 2222:
SELECT t.id, x.*
     FROM employees

t,
          XMLTABLE ('/Employees/Employee[@emplid=2222]'
                    PASSING t.data
                    COLUMNS firstname VARCHAR2(30) PATH 'firstname', 
                            lastname VARCHAR2(30) PATH 'lastname') x
    WHERE t.id = 1;
Слайд 28


Слайд 29

Пример Фамилии и имена администраторов: SELECT t.id, x.* FROM employees t,

Пример

Фамилии и имена администраторов:
SELECT t.id, x.*
     FROM employees t,
          XMLTABLE ('/Employees/Employee[@type="admin"]'
                    PASSING

t.data
                    COLUMNS firstname VARCHAR2(30) PATH 'firstname', 
                            lastname VARCHAR2(30) PATH 'lastname') x
    WHERE t.id = 1;
Слайд 30


Слайд 31

Пример Фамилии и имена сотрудников старше 40 лет: SELECT x.* FROM

Пример

Фамилии и имена сотрудников старше 40 лет:
SELECT x.*
FROM employees

t,
XMLTABLE ('/Employees/Employee[age>40]'
PASSING t.data
COLUMNS firstname VARCHAR2(30) PATH 'firstname',
lastname VARCHAR2(30) PATH 'lastname',
age VARCHAR2(30) PATH 'age') x
WHERE t.id = 1;
Слайд 32