您不能真正基於模式生成xml。 最好的可能是將xml生成到xmltype變量中,然後根據模式對其進行驗證。
您可以使用以下plsql塊(作爲腳本運行)作爲起點。 更改查詢以使用xml函數(XMLFOREST,XMLELEMENT,XMLATTRIBUTES)生成xmltype變量。
一旦你在l_xml裏有了這個,你應該能夠根據你的模式驗證它。 (然後我假設報告錯誤,如果您需要或繼續並根據需要處理xml)
我的示例只是漂亮地打印xml並將其放入dbms輸出中。
set serveroutput on;
declare
l_error varchar2(4094);
--
l_xml xmltype;
l_tmp varchar2(4096);
begin
dbms_output.put_line('Start');
--generate variable from query
select xmlelement("this:root"
,xmlattributes(
'http://www.w3.org/2001/XMLSchema-instance' as "xmlns:xsi",
'http://ic.ac.uk.relationshipvisualiser.app.data.InputData' as "xmlns:this"
)
,xmlelement("this:subelement"
,'subelementValue'
)
,xmlelement("this:subelement2"
,'subelementValue2'
)
)
into l_xml
from dual;
--todo Write code to validate l_xml against xsd schema
--now output xml
select XMLSERIALIZE(Document l_xml as CLOB INDENT SIZE = 2)
into l_tmp
from dual;
dbms_output.put_line(l_tmp);
dbms_output.put_line('End');
EXCEPTION WHEN OTHERS THEN
l_error := NVL(SUBSTR(SQLERRM,0,990),'NULL');
dbms_output.put_line(l_error || ':-' || NVL(SUBSTR(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,0,3000),'NULL'));
end;
Oracle和XML中的XML Schema是一個很大的話題。查看[Oracle XML DB Dev Guide](http://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb05sto.htm) – tbone