Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
10 XML (TBD).doc
Скачиваний:
6
Добавлен:
19.11.2019
Размер:
223.74 Кб
Скачать

2.2 Преобразование данных из табличной реляционной формы в xmltype (формирование xml-документов на основе реляционных данных)

2.2.1 Заполните созданные таблицы данными, необходимыми для формирования выходного документа (используйте данные из рассмотренного Вами экземпляра выходного документа).

2.2.1 Сгенерируйте XML-документ на основе запроса к реляционным даннымс использованием функций языка SQL/XML. Документ должен иметь структуру, предложенную в пункте 1.1.2. Также сгенерированный XML-документ должен иметь пролог; описание документа (XML Schema), которое будет использовано для его валидации; описание XSLT-преобразователя, используемого для его визуализации.

Таким образом, XML-документ, полученный в результате выполнения запроса должен быть идентичен документу, разработанному в пункте 1.2.2.

2.3. Сохранение xml-документов в реляционной бд.

2.3.1 Зарегистрируйте в бд документ xml Schema, разработанный в пункте 1.1.3.

Для работы с документами XML Schema в СУБД Oracle используется опция XDB (в частности – пакет dbms_xmlschema). Регистрация осуществляется процедурой registerSchema, как показано ниже.

begin

dbms_xmlschema.registerSchema(

'имя_схемы',

'<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

elementFormDefault="qualified">

<xsd:element name="DEPTNO" type="xsd:string"/>

<xsd:element name="DNAME" type="xsd:string"/>

<xsd:element name="LOC" type="xsd:string"/>

<xsd:element name="DEPT" type="dept"/>

<xsd:complexType name="dept">

<xsd:sequence>

<xsd:element ref="DEPTNO" minOccurs="1" maxOccurs="1"/>

<xsd:element ref="DNAME" minOccurs="1" maxOccurs="1"/>

<xsd:element ref="LOC" minOccurs="1" maxOccurs="1"/>

</xsd:sequence>

</xsd:complexType>

<xsd:element name="DEPTS" type="depts"/>

<xsd:complexType name="depts">

<xsd:sequence>

<xsd:element ref="DEPT" minOccurs="1" maxOccurs="unbounded"/>

</xsd:sequence>

</xsd:complexType>

</xsd:schema>');

end;

2.3.2 Добавьте в Вашу схему данных таблицу со столбцом XMLType. При создании таблицы следует указать опции типа данных XMLType (XMLSHEMA – имя зарегистрированного документа XML Schema; ELEMENT – имя корневого тега XML-документа, атрибутом которого является имя документа XML Schema).

CREATE TABLE имя_таблицы (имя_столбца1 number, имя_столбца2 XmlType)

XMLTYPE имя_столбца2 STORE AS OBJECT RELATIONAL

XMLSCHEMA "имя_схемы"

ELEMENT "имя_корневого_тега";

2.3.3 Сформируйте выходной xml-документ и сохраните его в созданной таблице с использованием команды “insert into … select ..”

insert into t

select 1 "id", "test" from (

SELECT XMLRoot(

XMLCONCAT(

XMLPI(NAME "xml-stylesheet", 'type="text/xsl" href="dept.xsl"'),

XMLElement("DEPTS",

XMLAttributes('http://www.w3.org/2001/XMLSchema-instance' AS "xmlns:xsi",

'dept.xsd' AS "xsi:noNamespaceSchemaLocation"),

XMLAGG(

XMLELEMENT("DEPT", XMLFOREST(deptno AS "DEPTNO", dname AS "DNAME",

loc as "LOC"))

)

)

), VERSION '1.0') as "test"

FROM dept

)

Удаление зарегистрированного документа XML Schema

begin

dbms_xmlschema.deleteSchema('имя_схемы',dbms_xmlschema.delete_cascade_force);

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]