使用多个模式的Oracle PLSQL CreateSchemaBasedXML

时间:2013-07-31 11:13:09

标签: oracle plsql oracle11g

我正在尝试对PLSQL中的XML文档执行XSD验证,我遇到了让它运行的问题。

我创建了一个XMLTYPE对象,当我调用isSchemaBased()时,它返回0(false)。现在显然XMLTYPE需要基于模式才能进行验证,我发现您可以通过createSchemaBasedXMLXMLTYPE调用基于模式的版本。我遇到的问题是我的模式分为两部分(不幸的是,组合模式文件不是一个选项),这意味着当我尝试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版本

1 个答案:

答案 0 :(得分:0)

答案由Oracle论坛上的'odie_63'提供[这里] [1] 最后,它是为importSchema

的导入指定schemaLocation的情况

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