【问题标题】:Define require fields based on other field value in XSD根据 XSD 中的其他字段值定义要求字段
【发布时间】:2020-04-24 16:29:42
【问题描述】:

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

我试图举一个简单的例子来更多地理解我的问题。请参考下面两个简单的 xml,其中 state 是定义发生什么事件的字段。如果state 字段值为PROCESS_END,我需要将processingTimeprocessResult 定义为XSD 文件中的必填字段,因为进程开始时不需要这些字段。这只是一个简单的例子来说明我的问题。提前致谢。

<?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>

【问题讨论】:

标签: xml xsd constraints


【解决方案1】:

在 XSD 1.1 中,将 processingTimeprocessResult 定义为可选元素,并在 metadata 的 complexType 上定义 &lt;xs:assert test="if (state='PROCESS_END') then exists(processingTime) and exists(processResult) else true()"/&gt;

这不能在 XSD 1.0 中完成。许多常用的 XSD 验证器,例如来自 Microsoft 的那个,从未升级到 XSD 1.1。

【讨论】:

    猜你喜欢
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多