Oracle version 19.11
Simple xsd
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="test" type="ISODate"/>
<xs:simpleType name="ISODate">
<xs:restriction base="xs:date">
<xs:pattern value="[0-9]{4,4}\-[0-9]{2,2}\-[0-9]{2,2}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
When xml is
<test>10-JAN-10</test>
schemavalidate doesn't raise an error that it's invalid value.
Full example:
--exec dbms_xmlschema.deleteschema('test.xsd', 3);
declare
l_content clob:= '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="test" type="ISODate"/>
<xs:simpleType name="ISODate">
<xs:restriction base="xs:date">
<xs:pattern value="[0-9]{4,4}\-[0-9]{2,2}\-[0-9]{2,2}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
';
begin
dbms_xmlschema.registerschema(
schemaurl => 'test.xsd'
, schemadoc => l_content
, local => true
, gentypes => false
, gentables => false
, genbean => false
, force => false
);
end;
/
declare
l_test xmltype :=xmltype('<test>10-JAN-10</test>');
l_xml xmltype;
begin
l_xml:=l_test.createSchemaBasedXML('test.xsd');
l_xml.schemaValidate();
end;
/
However using xmlint
<test>10-JAN-10</test>
test.xml:1: element test: Schemas validity error : Element 'test': '10-JAN-10' is not a valid value of the atomic type 'ISODate'.
test.xml fails to validate
What is missing to validate the xml correctly?