2013-07-31 77 views
1

我正在嘗試對PLSQL中的XML文檔執行XSD驗證,並且遇到了讓它工作的問題。使用多個模式的Oracle PLSQL CreateSchemaBasedXML

我創建了一個XMLTYPE對象,當我對它調用isSchemaBased()時,返回0(false)。現在顯然XMLTYPE需要基於模式爲了驗證,我發現你可以通過調用createSchemaBasedXMLXMLTYPE作出基於模式的版本。我遇到的問題是我的模式分爲兩部分(不幸的是,不能將模式文件組合在一起),這意味着當我嘗試指定主架構時,它會失敗,因爲它無法解析引用,它是從第二個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克工作

回答

0

答案被「odie_63」上的Oracle論壇[點擊這裏] [1] 到底是指定的的schemaLocation的情況下提供所述importedSchema進口

[1]:https://forums.oracle.com/message/11135111 「使用CreateSchemaBasedXML多個模式 」