Зарегал XSD-схему. Вот часть содержимого.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.NewAthena.ru/NA5/IntegrationAdapter" targetNamespace="http://www.NewAthena.ru/NA5/IntegrationAdapter" xmlns:xdb="http://xmlns.oracle.com/xdb" elementFormDefault="qualified" attributeFormDefault="qualified" version="4_21324_1">
<xsd:complexType name="T_REQUEST_BASEType" xdb:SQLType="T_REQUEST_BASEType">
...
<xsd:element name="RATRANSPROPS" type="T_PROPERTIESType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Секция значений транспортных атрибутов (для целей маршрутизации и т.п. ). Возвращается в неизменном виде в response-е. </xsd:documentation>
</xsd:annotation>
</xsd:element>
...
<xsd:complexType name="T_PROPERTIESType" xdb:SQLType="T_PROPERTIESType">
<xsd:sequence>
<xsd:element name="T_PROPERTY" type="T_PROPERTYType" minOccurs="0" maxOccurs="1000"/>
</xsd:sequence>
</xsd:complexType>
DBMS_XMLSCHEMA.registerSchema() создал такие типы:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE OR REPLACE TYPE "T_REQUEST_BASEType" AS OBJECT ("SYS_XDBPD$" "XDB"."XDB$RAW_LIST_T",
...
"RATRANSPROPS" "T_PROPERTIESType",
...
)NOT FINAL INSTANTIABLE
/
CREATE OR REPLACE TYPE "T_PROPERTIESType" AS OBJECT ("SYS_XDBPD$" "XDB"."XDB$RAW_LIST_T",
"T_PROPERTY" "T_PROPERTY10064_COLL")NOT FINAL INSTANTIABLE
/
CREATE OR REPLACE TYPE "T_PROPERTY10064_COLL" AS VARRAY(1000) OF "T_PROPERTYType"
/
пробую создать из xml-ки объекты
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DECLARE
v "T_REQUEST_BASEType";
BEGIN
SYS.XmlType('
<T_REQUEST_BASE>
<RATRANSPROPS>
<T_PROPERTY>
<SNAME>sname-text</SNAME>
<SVALUE>svalue-text</SVALUE>
</T_PROPERTY>
</RATRANSPROPS>
</T_REQUEST_BASE>
').toObject(v);
END;
/
получаю ошибку
ORA-19031: XML element or attribute SNAME does not match any in type T_PROPERTYType
Подозреваю, что дело в типе-прокладке T_PROPERTIESType, т.к. если в первом типе сразу написать
1.
"RATRANSPROPS" "T_PROPERTY10064_COLL"
то должно быть нормально.
Может быть, кто подскажет, как решить проблему? Возможно, xdb: атрибуты какие-то это позволяют?