我通过 dbms_xmlschema.registerschema() 包子程序将模式注册到 Oracle XMLDB。
然后我从 user_xml_schemas 中选择注册的模式。
模式返回正常,但 Oracle 已将各种 Oracle 相关信息插入到模式中。这是一个示例插入(这只是其中之一):
xmlns:oraxdb="http://xmlns.oracle.com/xdb" oraxdb:storeVarrayAsTable="true" oraxdb:flags="2105633" oraxdb:schemaURL="mySchema.xsd" oraxdb:schemaOwner="bob" oraxdb:numProps ="22"
这与我在数据库中的使用无关,但是我需要向数据库外部的消费者提供架构,而 Oracle 注释只是让我的目标外部消费者感到困惑。
我想要的是能够使用我的“发明”dbms_xmlschema_annotate 来实现类似以下代码的功能。stripAllOracleAnnotations子程序:
begin
select dbms_xmlschema_annotate.stripAllOracleAnnotations(schema)
into vMyOriginalPreRegisteredSchema
from user_xml_schemas;
...
end;
所以我可以向外部消费者提供vMyOriginalPreRegisteredSchema 。
我已经搜索过,但找不到任何可以从 xml db 返回“原始、干净”模式的东西。
任何帮助将不胜感激。
注意:我尝试使用 XSL 转换来去除 Oracle 注释,但是虽然我创建的 XSL 文件在 XMLSpy 中完美运行,但 Oracle (18c) 完成了转换而没有错误,但返回的结果完全不正确。我通过 xmltransform() 和 xmltype.transform() 进行了测试。我只能假设这是因为 Oracle 在内部解释 oraxdb: 节点并“做自己的事情”。