oracle xdb插件报错,注册XML Schema到ORACLE XDB并对XML进行验证
注冊XML Schema到ORACLE XDB可以方便生成XML的驗證。
What is an XML Schema?
An XML Schema is a language for expressing constraints about XML documents. There are several different schema languages in widespread use, but the main ones are Document Type Definitions (DTDs), Relax-NG, Schematron and W3C XSD (XML Schema Definitions). From this page you can find out more about DTDs and W3C XSD, since those are the primary schema languages defined at W3C.
the schema file ("shiporder.xsd"):
解鎖xdb帳號,在xdb下注冊xsd:
SQL> conn / as sysdba
Connected as SYS
SQL> alter user xdb account unlock identified by ******;
User altered
SQL> conn xdb/oracle;
Connected as xdb
使用DBMS_XMLSCHEMA.REGISTERSCHEMA注冊xsd注冊到xdb:
SQL> begin
dbms_xmlschema.registerschema(schemaurl => 'shiporder.xsd'
,schemadoc => bfilename('XMLDIR', 'shiporder.xsd')
,local => false
,gentypes => true
,genbean => false
,gentables => false
,force => false
,owner => 'XDB');
end;
/
PL/SQL procedure successfully completed
其中'XMLDIR'是ORACLE目錄對象名,shiporder.xsd文件在這個目錄下。
查看注冊對象狀態:
SQL> select s.schema_url, o.object_type, o.status
from user_xml_schemas s, user_objects o
where s.int_objname = o.object_name;
SCHEMA_URL OBJECT_TYPE STATUS
-------------------------------------------------- ------------------- -------
shiporder.xsd XML SCHEMA VALID
對于一些schema定義有遞歸引用,可能報錯不能注冊成功。參數force設為true強制注冊,然后再進行編譯。
SQL> DBMS_XMLSCHEMA.COMPILESCHEMA(schemaurl => 'shiporder.xsd');
DBMS_XMLSCHEMA.REGISTERSCHEMA有多種實現,詳細說明參見官方文檔。
注冊之后可以驗證xml文件了:
SQL> declare
v_xmldoc xmltype;
v_valid number;
begin
v_xmldoc := xmltype('<?xml version="1.0" encoding="UTF-8"?>
String
String
StringString
String
String2
0.0
');
select v_xmldoc.isschemavalid('shiporder.xsd', 'shiporder') into v_valid from dual;
dbms_output.put_line('validate result is :' || v_valid);
if (v_valid <> 1) then
v_xmldoc.schemavalidate;
end if;
end;
/
validate result is :1
v_xmldoc.schemavalidate對于驗證失敗的結果拋出異常。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的oracle xdb插件报错,注册XML Schema到ORACLE XDB并对XML进行验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle11g同步,Oracle11
- 下一篇: 什么是设计模式(Design Patte