XMLTYPE を作成するときに検証をオフにできます。コンストラクターの署名は次のようになります。
XMLType(
xmlData IN varchar2,
schema IN varchar2 := NULL,
validated IN number := 0,
wellformed IN number := 0)
したがって、次のように検証を無効にできます。
extract(XMLTYPE(doc.payload, NULL, 1, 1),
'/SHOW_SHIPMENT_005/DATAAREA/SHOW_SHIPMENT/SHIPMENT/SHIPITEM/DOCUMNTREF/DOCUMENTID')
ただし、外部の DTD 参照がある場合、これは役に立ちません。それでもロードしようとします。DTD ファイルを XMLDB リポジトリにアップロードすることはできませんか? それが最も簡単な解決策になります。そうでない場合、「適切な」解決策はありません。XMLTYPE を作成する前に、DTD 参照を削除する必要があります。
extract(XMLTYPE(REGEXP_REPLACE(doc.payload, '<!DOCTYPE[^<]*>', '')),
'/SHOW_SHIPMENT_005/DATAAREA/SHOW_SHIPMENT/SHIPMENT/SHIPITEM/DOCUMNTREF/DOCUMENTID')