0defb3aa

XMLTYPE – тип XML


XMLTYPE дает возможность сообщить БД, что заносимый текст – это не просто строка, а строка документа XML. Следующая попытка приведет к ошибке:

INSERT INTO books VALUES (101, XMLTYPE('<cover><title></title>'));

С дугой стороны, Oracle поймет правильно составленные директивы XML и встроенное в текст описание DTD:

INSERT INTO books VALUES

    (101

   , XMLTYPE('<?xml version="1.0"?>

              <!DOCTYPE cover [

              <!ELEMENT cover (title, author*, pages)>

              <!ELEMENT title (#PCDATA)>

              <!ELEMENT author (#PCDATA)>

              <!ELEMENT pages (#PCDATA)>

              ]>

              <cover>

                <title>SQL*Plus Pocket Reference</title>

                <author>Jonathan Gennick</author>

                <pages>94</pages>

              </cover>'));

Убедитесь в этом сами, что Oracle действительно соотносит описание DTD самому тексту документа !

Для выборки можно использовать специально придуманные для XMLTYPE функции.  Так, функция EXTRACTVALUE извлекает значения элемента из документа XML:

SELECT id, EXTRACTVALUE(description, '/cover/title')

FROM books;

Функция EXISTSNODE дает возможность использовать в SQL условие отбора XPath (язык отбора, принятый в технологиях XML):

SELECT id, b.description.XMLDATA

FROM books b

WHERE b.description.EXISTSNODE('/cover[author="Sanjay Mishra"]')=1;



Содержание раздела