【问题标题】:Oracle PLSQL CreateSchemaBasedXML using multiple schemasOracle PLSQL CreateSchemaBasedXML 使用多个模式
【发布时间】:2013-09-03 22:17:41
【问题描述】:

我正在尝试对 PLSQL 中的 XML 文档执行 XSD 验证,但无法正常工作。

我创建了一个XMLTYPE 对象,当我针对它调用isSchemaBased() 时,它返回0(假)。现在显然XMLTYPE 需要基于模式才能进行验证,我发现您可以通过针对XMLTYPE 调用createSchemaBasedXML 来制作基于模式的版本。我遇到的问题是我的架构分为两部分(不幸的是,组合架构文件不是一个选项),这意味着当我尝试并createSchemaBasedXML 指定主架构时它失败了,因为它无法解析引用它是从第二个 XSD 文档导入的。

-- lxml is the XMLTYPE which has been populated with the XML before this point

dbms_xmlschema.registerSchema(
  schemaURL => mainSchemaURL,
  schemaDoc => mainSchemaDoc,
  local => true,
  genTypes => true,
  genTables => false,
  force => true,
  enableHierarchy => dbms_xmlschema.ENABLE_HIERARCHY_NONE);

dbms_xmlschema.registerSchema(
  schemaURL => importedSchemaURL,
  schemaDoc => importedSchemaDoc,
  local => true,
  genTypes => true,
  genTables => false,
  force => true,
  enableHierarchy => dbms_xmlschema.ENABLE_HIERARCHY_NONE);

if lxml.isSchemaBased() = 1 then
  dbms_output.put_line('Schema based');
else
  dbms_output.put_line('Non-schema based');
end if;

dbms_ouput.put_line('About to apply schema');
lxml := lxml.createSchemaBasedXML(mainSchemaURL);
dbms_ouput.put_line('We don't get this far');

lxml := lxml.createSchemaBasedXML(importedSchemaURL);

有什么方法可以同时导入mainSchemaURLimportedSchemaURL,这样主架构中导入的架构引用就不会导致失败;

ORA-31079: unable to result reference to type [type containing imported type]

任何帮助或指点将不胜感激。

更新:我正在使用 Oracle 11g 版

【问题讨论】:

    标签: oracle plsql oracle11g


    【解决方案1】:

    答案由 Oracle 论坛 [此处][1] 上的“odie_63”提供 最后是为importedSchema的导入指定schemaLocation的情况

    [1]: https://forums.oracle.com/message/11135111 "CreateSchemaBasedXML 使用多个模式 "

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 2012-08-12
      • 2021-12-04
      • 2015-11-01
      • 1970-01-01
      • 2015-09-11
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多