- •Использование технологии xml при работе с базами данных общие сведения Часть №1. Разработка объектной модели xml-документа. Работа с xml-документами, как источниками данных.
- •Часть №2. Формирование xml на основе реляционных данных с использованием функций языка sql/xml. Хранение xml-документов в базе данных.
- •Порядок выполнения работы
- •Часть №1. Разработка объектной модели xml-документа. Работа с xml-документами, как источниками данных.
- •1.1. Формирование объектной модели xml-документа
- •1.2 Преобразование документов xml в документы html средствами xslt
- •Часть №2. Формирование xml на основе реляционных данных с использованием функций языка sql. Хранение xml-документов в базе данных
- •Импорт схемы данных.
- •2.2 Преобразование данных из табличной реляционной формы в xmltype (формирование xml-документов на основе реляционных данных)
- •2.3. Сохранение xml-документов в реляционной бд.
- •2.3.1 Зарегистрируйте в бд документ xml Schema, разработанный в пункте 1.1.3.
- •2.3.3 Сформируйте выходной xml-документ и сохраните его в созданной таблице с использованием команды “insert into … select ..”
- •Часть №3. Использование Oracle Text как средства полнотекстового поиска. Индексация xml-документов. Разбиение их на секции.
- •Содержание отчета
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;