1

PLSQL 内の XML ドキュメントに対して XSD 検証を実行しようとしていますが、動作に問題があります。

XMLTYPEオブジェクトを作成しましたが、それisSchemaBased()に対して呼び出すと 0 (false) が返されます。検証するためには明らかにXMLTYPEスキーマ ベースである必要がありcreateSchemaBasedXMLますXMLTYPE。私が抱えている問題は、スキーマが 2 つの部分に分かれていることです (スキーマ ファイルを結合することは残念ながらオプションではありません)。つまりcreateSchemaBasedXML、メイン スキーマを指定しようとすると、インポートされた参照を解決できないために失敗します。 2 番目の 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 バージョン 11g を使用しています

4

1 に答える 1

0

回答は、Oracle フォーラムの 'odie_63' によって提供されました [こちら][1] 結局、importedSchema のインポートに schemaLocation を指定する場合でした。

[1]: https://forums.oracle.com/message/11135111「複数のスキーマを使用した CreateSchemaBasedXML」

于 2013-09-03T14:17:41.493 に答える