【问题标题】:skip XSD validation for specific elements based on content of other element in java根据java中其他元素的内容跳过特定元素的XSD验证
【发布时间】:2019-03-18 16:10:02
【问题描述】:

在 xsd 中,我有如下元素,其中需要 city,zip 不为空。

<addresses>
    <address>
      <name>abc</name>
      <address>skip</Address>
       ....
      <city/>
      <zip/>
    </address>
</addresses>

但在特定情况下,例如如果地址元素内容被跳过,我不希望验证城市、zip。 实现此 java 或 xsd 级别的选项是什么。

【问题讨论】:

  • 要实现这一点,请关闭模式验证,并在 Java 代码中执行所有验证。 --- 或者只是删除 &lt;city&gt;&lt;zip&gt; 的约束,因此它们是可选的,并在存在 &lt;address&gt; 时强制它们在 Java 代码中是必需的。

标签: java xml xsd xsd-validation


【解决方案1】:

您可能不应该根据跳过验证来构建您的要求,而是根据条件要求出现或类型。通常“跳过验证”由xs:any 处理,但这似乎并不是您想要的。

XSD 1.0 不能表达元素出现依赖于其他元素的值的约束。为此,您需要 XSD 1.1。示例见Require XML element in XSD when another element has certain value?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 2016-09-25
    • 2011-11-21
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多