oracle+动态执行+xml,如何在Oracle中执行模式注册和XML验证?

问题陈述:

您想对数据库中存储的XML数据强制执行XML模式有效性。

解:

Oracle提供了DBMS_XMLSCHEMA.REGISTERSCHEMA函数来定义Oracle数据库内的XML模式。为了验证生成的xml数据,我们需要注册模式。在注册架构时,格式必须与生成的xml格式匹配,或者根据您希望如何生成xml来注册架构。

该注册提供两个关键功能。首先,它使Oracle能够确定可从中获取模式的外部位置。其次(也是最重要的),REGISTERSCHEMA解析该模式以实现语法的正确性和完整性。

REGISTERSCHEMA函数可以从多个位置获取XML模式,例如以VARCHAR形式显示的文本以及BFILE或URI引用。

下面给出了执行xml模式验证的步骤。注册架构DECLARE

l_schema CLOB;

BEGIN

l_schema := '<?xml  version="1.0"?>

'

--In SCHEMAURL , provide the schema name of your choice

DBMS_XMLSCHEMA.REGISTERSCHEMA(SCHEMAURL       => 'xml_schema_test.xsd',

SCHEMADOC       => l_schema,

LOCAL           => TRUE,

GENTYPES        => FALSE,

GENTABLES       => FALSE,

ENABLEHIERARCHY => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE);

END;

检查是否创建了架构。

示例SELECT schema_url FROM user_xml_schemas;

输出结果-- Output

xmtest_schema.xsd以防万一必须删除架构。参考下面的代码

3)如果创建的架构需要删除。BEGIN

DBMS_XMLSCHEMA.DELETESCHEMA(

SCHEMAURL=> 'xml_schema_test.xsd',

DELETE_OPTION => DBMS_XMLSCHEMA.DELETE_CASCADE_FORCE);

END;根据使用XMLISVALID函数创建的架构验证xml。

XMLISVALID: XMLISVALID检查输入的XMLType_instance是否符合相关的XML模式。如果架构有效,则结果为1,否则为0。

示例CREATE TABLE t1 ( xml XMLTYPE);

INSERT INTO t1 VALUES ('<?xml  version="1.0"?>

134

taylor.cauchon@internalmail

Taylor Cauchon

921

COMPLETE

485

COMPLETE

1528

COMPLETE

1672

COMPLETE

1319

COMPLETE

');

SELECT XMLISVALID(xml, 'my_schema.xsd') AS is_valid

FROM t1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值