Падает XML-схема

pbda
Дата: 26.10.2015 11:40:39
Образец XML-схемы - во вложении (это некий медицинский стандарт).
Она прекрасно обрабатывается дотнетовскими кодогенераторами (xsd.exe) и без проблем регистрируется в SQL Server-e для колонки таблицы, со всеми валидациями и т.п.

В Oracle всё падает в версиях от 10g до 12с:

begin
  DBMS_XMLSCHEMA.registerSchema(
    schemaurl => 'http://schemas.openehr.org/v1',
    schemadoc => bfilename('OPENEHR', 'OpenEHR.xsd'),
    local     => true,
    gentables => true,
    gentypes  => true,
    csid      => NLS_CHARSET_ID('AL32UTF8'));
end;


Сообщение об ошибке:

ORA-31084: error while creating table "OPENEHR"."composition3153_TAB" for element "composition"
ORA-01792: maximum number of columns in a table or view is 1000
ORA-02310: exceeded maximum number of allowable columns in table
ORA-06512: at "XDB.DBMS_XMLSCHEMA_INT", line 37
ORA-06512: at "XDB.DBMS_XMLSCHEMA", line 61
ORA-06512: at "XDB.DBMS_XMLSCHEMA", line 126
ORA-06512: at line 2


Нашел рекомендацию замены в схеме всех xs:sequence на xs:choice. Не помогло.

Потом отказался от генерации таблиц и типов:

begin
  DBMS_XMLSCHEMA.registerSchema(
    schemaurl => 'http://schemas.openehr.org/v1',
    schemadoc => bfilename('OPENEHR', 'OpenEHR.xsd'),
    local     => true,
    gentables => false,
    gentypes  => true,
    csid      => NLS_CHARSET_ID('AL32UTF8'));
end;


Схема зарегистрировалась. Создал таблицу с типизированной колонкой XMLType:

create table ATEST
(
  ID         number(17),
  DATA       XMLType
)
XMLType DATA store as object relational 
xmlschema "http://schemas.openehr.org/v1" element "archetype"


Делаю попытку вставки записи (XML заведомо валидный и соответствует схеме, проверено в Visual Studio):

insert into ATEST
(
  ID, DATA
)
values
(
  1, 
  XMLType(bfilename('OPENEHR', 'openEHR-EHR-OBSERVATION.blood_pressure.v1.xml '), NLS_CHARSET_ID('CL8MSWIN1251'))
);


Получаю сообщение:

ORA-31079: unable to resolve reference to type "string"

Собственно, прошу помощи зала.
ArtNick
Дата: 26.10.2015 12:13:23
pbda,
А какая обработка данных планируется в дальнейшем над этим XML? Чем обусловлено store as object?
ArtNick
Дата: 26.10.2015 12:15:48
[quot pbda
Нашел рекомендацию замены в схеме всех xs:sequence на xs:choice. Не помогло.
[/quot]
Веселят такие рекомендации. Если пофиг на схему, зачем её регистрить.
pbda
Дата: 26.10.2015 12:26:11
ArtNick,

>Чем обусловлено store as object?

В десятке особого выбора нет, там только store as clob и store as object relational.
Если store as clob, то автоматическая валидация по схеме при вставке вообще не работает.

>А какая обработка данных планируется в дальнейшем над этим XML?

поиск в XML по индексам, извлечение/обновление данных по XPath
ArtNick
Дата: 26.10.2015 12:36:07
pbda
ArtNick,

>Чем обусловлено store as object?

В десятке особого выбора нет, там только store as clob и store as object relational.
Если store as clob, то автоматическая валидация по схеме при вставке вообще не работает.

>А какая обработка данных планируется в дальнейшем над этим XML?

поиск в XML по индексам, извлечение/обновление данных по XPath

Ясно, ну удачи Вам :)
pbda
Дата: 26.10.2015 12:37:34
ArtNick
Ясно, ну удачи Вам :)


Это сарказм? :))
ArtNick
Дата: 26.10.2015 12:39:02
pbda
ArtNick
Ясно, ну удачи Вам :)


Это сарказм? :))

Это сочувствие :)