Это продолжение вопроса к моему предыдущему вопросу .
У меня есть XML-файлы и XML-схема, предоставленные несколькими разными третьими лицами. По некоторым таинственным причинам Oracle требует специфическую для Oracle аннотацию , чтобы иметь возможность правильно проверить xs:dateTime
с информацией о часовом поясе.
После долгих дебатов с Google Я обнаружил, что могу добавить ненавязчивую аннотацию Oracle (т.е. без изменения исходной схемы XML), используя Пересмотр схемы XML .
XML-схема, предоставленная третьей стороной, выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="ISODateTime">
<xs:restriction base="xs:dateTime"/>
</xs:simpleType>
</xs:schema>
И я мог бы внести аннотацию таким образом с переопределением:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xdb="http://xmlns.oracle.com/xdb">
<xs:redefine schemaLocation="standard-schema.xsd">
<xs:simpleType name="ISODateTime">
<xs:restriction base="xs:dateTime" xdb:SQLType="TIMESTAMP WITH TIME ZONE"/>
</xs:simpleType>
</xs:redefine>
</xs:schema>
К сожалению, согласно документации Oracle переопределение - это единственная функция XML Schema, не поддерживаемая Oracle XML Database:
Поддержка XML-схемы
[...] Oracle XML DB поддерживает все конструкции, определенные в Рекомендации схемы XML, , кроме redefines
.
(И мои эксперименты подтверждают это утверждение.)
Какие варианты, если таковые имеются, нужно ли добавить обязательную аннотацию xdb:SQLType
без изменения исходной схемы XML?
Я использую Oracle Database 11g Release 11.2.0.4.0.