這是我的previous question的延續問題。如何在不重新定義的情況下重新定義XML模式類型?
我有幾個不同的第三方提供的XML文件和XML模式。由於一些神祕的原因,Oracle要求Oracle specific annotation能夠正確驗證帶有時區信息的xs:dateTime
。
經過與Google的長時間辯論後,我發現我可以通過使用XML Schema redefine非侵入式添加Oracle所需的註釋(即不需要修改原始XML模式)。由第三方提供
XML Schema是conseptually這樣的:
<?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重新定義僅僅是單Oracle XML數據庫不支持XML Schema功能:
XML模式支持
[...]的Oracle XML DB支持所有XML模式建議書定義的構建體,除了
redefines
。
(和我的實驗支持這一說法。)
什麼選擇,如果有的話,我一定要添加所需xdb:SQLType
註釋而不修改原始的XML Schema?
我正在運行Oracle數據庫11g版本11.2.0.4.0。
但當然!爲什麼我沒有意識到自己 - 我是愚蠢的。在過去,我做了很多XSLT(不是用Oracle),所以沒有問題。 – user272735