Как переопределить тип XML-схемы без переопределения? - PullRequest
1 голос
/ 17 июня 2011

Это продолжение вопроса к моему предыдущему вопросу .

У меня есть 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.

1 Ответ

1 голос
/ 17 июня 2011

Определите простое XSLT-преобразование, которое добавляет аннотацию, и запускайте его всякий раз, когда вам нужно сгенерировать схему Oracle из сторонней схемы.

...