这是我previous question的延续问题。
我有几个不同的第三方提供的XML文件和XML Schema。出于某些神秘原因,Oracle要求Oracle specific annotation能够正确验证xs:dateTime
时区信息。
经过与Google的长时间辩论后,我发现我可以使用XML Schema redefine非侵入性地添加Oracle所需的注释(即不修改原始的XML Schema)。
第三方提供的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 documentation,redefine是Oracle XML数据库不支持的唯一XML Schema功能:
XML架构支持
[...] Oracle XML DB支持XML Schema Recommendation定义的所有构造,除了
redefines
。
(我的实验支持这一陈述。)
如果有任何选项,我必须添加所需的xdb:SQLType
注释而不修改原始XML架构吗?
我正在运行Oracle Database 11g第11.2.0.4.0版。
答案 0 :(得分:1)
定义一个简单的XSLT转换,添加注释,并在需要从第三方架构生成Oracle架构时运行它。