根据XSD中的其他字段值来定义必填字段。

我有一个需求,我试图根据XSD中的其他字段值来定义require字段(minOccurs=1),但无法做到。

我试图给出一个简单的例子来理解我的问题。请参考下面两个简单的xml,其中 state 是定义事件发生的字段。我需要定义 processingTimeprocessResult 作为XSD文件中的必填项,如果 state 字段值为 PROCESS_END 因为在流程启动时不需要这些字段。这只是简单的例子来说明我的问题。先谢谢你了,我有一个需求,在这个需求中,我试图根据X中的其他字段值来定义require字段(minOccurs=1)。

<?xml version = "1.0"?>
<metadata>
    <title>The processing started event</title>
    <state>PROCESS_START</state>
</metadata>

<?xml version = "1.0"?>
<metadata>
    <title>The processing ended event</title>
    <state>PROCESS_END</state>
    <processingTime>100s</processingTime>
    <processResult>success</processResult>
</metadata>

解决方案:

在XSD 1.1中,定义 processingTimeprocessResult 作为可选元素,而在复杂类型上则为 metadata,定义 <xs:assert test="if (state='PROCESS_END') then exists(processingTime) and exists(processResult) else true()"/>.

这在XSD 1.0中是做不到的。许多常用的XSD验证器,如微软的验证器,从未升级到XSD 1.1。

给TA打赏
共{{data.count}}人
人已打赏
未分类

基于外部数据的风格Mapbox GL矢量层。

2022-9-8 20:54:40

未分类

通过default_url_options为Rails测试设置locale(Rails 6及更新版本)。

2022-9-8 21:05:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索