1

这是我上一个问题的延续问题

我有几个不同的第三方提供的 XML 文件和 XML Schema。由于某些神秘的原因,Oracle 需要Oracle 特定的注释才能xs:dateTime正确验证时区信息。

经过与Google的长时间辩论后,我发现我可以通过使用XML Schema redefine以非侵入方式(即不修改原始 XML Schema)添加 Oracle 所需的注释。

第三方提供的 XML Schema 在概念上是这样的:

<?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 文档, redefine 是 Oracle XML 数据库不支持的唯一 XML 模式特性:

XML 模式支持

[...] Oracle XML DB 支持 XML 模式推荐定义的所有结构,除了redefines.

(我的实验支持这一说法。)

如果有的话,我必须在xdb:SQLType不修改原始 XML Schema 的情况下添加所需的注释吗?

我正在运行 Oracle 数据库 11g 版本 11.2.0.4.0。

4

1 回答 1

1

定义一个添加注释的简单 XSLT 转换,并在您需要从第三方模式生成 Oracle 模式时运行它。

于 2011-06-17T15:54:36.030 回答