Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 XML Schema и ошибка LSX-00333  [new]
SchemaBaser
Guest
Пытаюсь сделать вот такую схему
begin
 dbms_xmlschema.REGISTERSCHEMA('test1.xsd',
'<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified">
    <xs:element name="Data1">
        <xs:complexType>
            <xs:attribute name="Decimal" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:decimal">
                        <xs:pattern value="[0-9]{4}"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
</xs:schema>
',false);
end;

т.е. в атрибуте Decimal должно быть четыре цифры. Вроде бы все верно:
declare
tt  xmltype;
begin
  tt:=xmltype('<?xml version="1.0" encoding="UTF-8"?><Data1 Decimal="1000" />','test1.xsd',0);
  tt.schemaValidate();
end;

PL/SQL procedure successfully completed.

но если в числе есть лидирующие нули то:
[SRC oracle]declare
tt  xmltype;
begin
  tt:=xmltype('<?xml version="1.0" encoding="UTF-8"?><Data1 Decimal="0100" />','test1.xsd',0);
  tt.schemaValidate();
end;

declare
*
ERROR at line 1:
ORA-31154: invalid XML document 
ORA-19202: Error occurred in XML processing 
LSX-00333: literal "100" is not valid with respect to the pattern 
ORA-06512: at "SYS.XMLTYPE", line 345 
ORA-06512: at line 5 

XMLSpy говорит что документ валидный, а оракл - нет. При этом если <xs:restriction base="xs:decimal"> заменить на <xs:restriction base="xs:string"> то проверка проходит.
Это баг или фича, и как бороться?
10 июл 07, 17:07    [4374296]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить