我正在嘗試對PLSQL中的XML文檔執行XSD驗證,並且遇到了讓它工作的問題。使用多個模式的Oracle PLSQL CreateSchemaBasedXML
我創建了一個XMLTYPE
對象,當我對它調用isSchemaBased()
時,返回0(false)。現在顯然XMLTYPE
需要基於模式爲了驗證,我發現你可以通過調用createSchemaBasedXML
對XMLTYPE
作出基於模式的版本。我遇到的問題是我的模式分爲兩部分(不幸的是,不能將模式文件組合在一起),這意味着當我嘗試指定主架構時,它會失敗,因爲它無法解析引用,它是從第二個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);
是否存在的能夠導入任何方式既mainSchemaURL
,並在同一時間importedSchemaURL
使主架構中的導入模式引用不會導致故障;
ORA-31079: unable to result reference to type [type containing imported type]
任何幫助或指針將不勝感激。
更新:我與Oracle版本11克工作