Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
127
Добавлен:
02.05.2014
Размер:
1.03 Mб
Скачать

8.3 Разработка аннотированных схем отображения

В данном подразделе на основе разработанных XSD-схем строятся аннотированные схемы отображения для связи внешних XML-документов с таблицами и представлениями реляционной базы данных. Для этого XSD-схемы дополняются аннотациями, связывающими элементы и атрибуты внешних XML-документов с соответствующими им таблицами и атрибутами реляционной базы данных.

При программировании ориентировались на версию схем отображения, разработанную корпорацией Microsoft для СУБД SQL Server 2005, особенностью которой является отсутствие описания корневого элемента XML-документа (задается в DOM-объекте, вызывающем схему).

XML-код схем отображения для каждой из функций представлен ниже.

8.3.1 Схема отображения для функции 1

<?xml version="1.0" encoding="windows-1251"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">

<xsd:annotation>

<xsd:appinfo>

<sql:relationship name="поступление_объект_поступления"

parent="поступление"

parent-key="[код объекта]"

child="[объект поступления]"

child-key="[код объекта]"/>

<sql:relationship name="поступление_владелец_пост_объекта"

parent="поступление"

parent-key="[код клиента]"

child="[владелец пост объекта]"

child-key="[код клиента]"/>

<sql:relationship name="поступление_ответственный_за_поступление_сотрудник"

parent="поступление"

parent-key="[таб номер]"

child="[ответственный за поступление сотрудник]"

child-key="[таб номер]"/>

<sql:relationship name="объект_поступления_вид"

parent="[объект поступления]"

parent-key="[код вида]"

child="вид"

child-key="[код вида]"/>

<sql:relationship name="автор_объекта_автор"

parent="[автор объекта]"

parent-key="[код автора]"

child="автор"

child-key="[код автора]"/>

<sql:relationship name="автор_объекта_объект_поступления"

parent="[объект поступления]"

parent-key="[код объекта]"

child="[автор объекта]"

child-key="[код объекта]"/>

<sql:relationship name="хар-ка_объекта_объект_поступления"

parent="[объект поступления]"

parent-key="[код объекта]"

child="[хар-ка объекта]"

child-key="[код объекта]"/>

<sql:relationship name="хар-ка_объекта_хар-ка"

parent="[хар-ка объекта]"

parent-key="[код хар-ки]"

child="[хар-ка]"

child-key="[код хар-ки]"/>

<sql:relationship name="ответственный_за_поступление_сотрудник_сотрудник"

parent="[ответственный за поступление сотрудник]"

parent-key="[таб номер]"

child="сотрудник"

child-key="[таб номер]"/>

<sql:relationship name="ответственный_за_поступление_сотрудник_должность"

parent="[ответственный за поступление сотрудник]"

parent-key="[код должности]"

child="должность"

child-key="[код должности]"/>

</xsd:appinfo>

</xsd:annotation>

<xsd:element name="поступление" sql:relation="поступление" type="поступление-type"/>

<xsd:complexType name="поступление-type">

<xsd:sequence>

<xsd:element name="ответственный_за_поступление_сотрудник" sql:relation="[ответственный за поступление сотрудник]" sql:relationship="поступление_ответственный_за_поступление_сотрудник" type="ответственный_за_поступление_сотрудник-type" minOccurs="1" maxOccurs="1"/>

<xsd:element name="владелец_пост_объекта" sql:relation="[владелец пост объекта]" sql:relationship="поступление_владелец_пост_объекта" type="владелец_пост_объекта-type" minOccurs="1" maxOccurs="1"/>

<xsd:element name="объект_поступления" sql:relation="[объект поступления]" sql:relationship="поступление_объект_поступления" type="объект_поступления-type" minOccurs="1" maxOccurs="1"/>

</xsd:sequence>

<xsd:attribute name="рег_номер_поступления" sql:field="[рег номер поступления]" use="required"/>

<xsd:attribute name="дата" sql:field="[дата]" use="required"/>

<xsd:attribute name="таб_номер" sql:field="[таб номер]" use="required"/>

<xsd:attribute name="код_клиента" sql:field="[код клиента]" use="required"/>

<xsd:attribute name="код_объекта" sql:field="[код объекта]" use="required"/>

</xsd:complexType>

<xsd:complexType name="ответственный_за_поступление_сотрудник-type">

<xsd:sequence>

<xsd:element name="должность" sql:relation="должность" sql:relationship="ответственный_за_поступление_сотрудник_должность" type="должность-type" minOccurs="1" maxOccurs="1"/>

<xsd:element name="сотрудник" sql:relation="сотрудник" sql:relationship="ответственный_за_поступление_сотрудник_сотрудник" type="сотрудник-type" minOccurs="1" maxOccurs="1"/>

</xsd:sequence>

<xsd:attribute name="таб_номер" sql:field="[таб номер]" use="required"/>

<xsd:attribute name="код_должности" sql:field="[код должности]" use="required"/>

</xsd:complexType>

<xsd:complexType name="должность-type">

<xsd:attribute name="код_должности" sql:field="[код должности]" use="required"/>

<xsd:attribute name="назв_должности" sql:field="[назв должности]" use="required"/>

</xsd:complexType>

<xsd:complexType name="сотрудник-type">

<xsd:attribute name="таб_номер" sql:field="[таб номер]" use="required"/>

<xsd:attribute name="фио" sql:field="[фио]" use="required"/>

</xsd:complexType>

<xsd:complexType name="владелец_пост_объекта-type">

<xsd:attribute name="код_клиента" sql:field="[код клиента]" use="required"/>

<xsd:attribute name="фио_клиента" sql:field="[фио клиента]" use="required"/>

</xsd:complexType>

<xsd:complexType name="объект_поступления-type">

<xsd:sequence>

<xsd:element name="вид" sql:relation="вид" sql:relationship="объект_поступления_вид" type="вид-type" minOccurs="1" maxOccurs="1"/>

<xsd:element name="автор_объекта" sql:relation="[автор объекта]" sql:relationship="автор_объекта_объект_поступления" type="автор_объекта-type" minOccurs="1" maxOccurs="unbounded"/>

<xsd:element name="хар-ка_объекта" sql:relation="[хар-ка объекта]" sql:relationship="хар-ка_объекта_объект_поступления" type="хар-ка_объекта-type" minOccurs="1" maxOccurs="unbounded"/>

</xsd:sequence>

<xsd:attribute name="код_объекта" sql:field="[код объекта]" use="required"/>

<xsd:attribute name="назв_объекта" sql:field="[назв объекта]" use="required"/>

<xsd:attribute name="код_вида" sql:field="[код вида]" use="required"/>

</xsd:complexType>

<xsd:complexType name="вид-type">

<xsd:attribute name="код_вида" sql:field="[код вида]" use="required"/>

<xsd:attribute name="назв_вида" sql:field="[назв вида]" use="required"/>

</xsd:complexType>

<xsd:complexType name="автор_объекта-type">

<xsd:sequence>

<xsd:element name="автор" sql:relation="автор" sql:relationship="автор_объекта_автор" type="автор-type" minOccurs="1" maxOccurs="1"/>

</xsd:sequence>

<xsd:attribute name="код_автора" sql:field="[код автора]" use="required"/>

<xsd:attribute name="код_объекта" sql:field="[код объекта]" use="required"/>

</xsd:complexType>

<xsd:complexType name="автор-type">

<xsd:attribute name="код_автора" sql:field="[код автора]" use="required"/>

<xsd:attribute name="фио_автора" sql:field="[фио автора]" use="required"/>

</xsd:complexType>

<xsd:complexType name="хар-ка_объекта-type">

<xsd:sequence>

<xsd:element name="хар-ка" sql:relation="[хар-ка]" sql:relationship="хар-ка_объекта_хар-ка" type="хар-ка-type" minOccurs="1" maxOccurs="1"/>

</xsd:sequence>

<xsd:attribute name="код_хар-ки" sql:field="[код хар-ки]" use="required"/>

<xsd:attribute name="код_объекта" sql:field="[код объекта]" use="required"/>

<xsd:attribute name="значение" sql:field="[значение]" use="required"/>

</xsd:complexType>

<xsd:complexType name="хар-ка-type">

<xsd:attribute name="код_хар-ки" sql:field="[код хар-ки]" use="required"/>

<xsd:attribute name="назв_хар-ки" sql:field="[назв хар-ки]" use="required"/>

</xsd:complexType>

</xsd:schema>

Соседние файлы в папке База данных - Музей