繁体   English   中英

通过 XSD 限制基于另一个元素的 XML 元素

[英]Restricting XML Elements Based on Another Element via XSD

我相信这与keyref但我不确定,我真的不确定它是否可以完成。

例如,假设我有 myElement1 和 myElement2。 如果 XML 文件中没有 myElement2,则 myElement1 必须存在,否则为可选。

有什么方法可以在我的 XSD 文件中强制进行这种类型的验证吗?

类似的问题已经被问过好几次了……在 stackoverflow 或任何技术博客中……

但答案总是不可能的


像这样的情况:

(a) 根据任何其他元素/属性的值或存在来验证元素
(b) 根据任何其他元素/属性的值或存在来验证元素的值
(c) 根据任何其他元素/属性的值或存在来验证属性
(d) 在同一范围内定义具有不同类型/数据类型的同名元素/属性
(e) 根据任何其他元素/属性的值或存在来验证子元素

上面提到的所有情况都无法实现..

但如果你能实现一些转型的东西..那么你就可以获得帮助。 我的意思是说“首先根据您的要求进行转换并修改 XML,

示例 :: 如果特定字段预期具有某个值 .. 如果条件满足则按原样传递 XML,如果不满足则不传递 .. 在下一个块中 XSD 将进行验证并且显然会出错:) 你可以发现它缺少你的自定义验证..

无论如何,目的是根据数据阻止传递xml..这就是你在做什么..

注意: Schematron最近已成为良好实践! 这是教程:http: //zvon.org/xxl/SchematronTutorial/General/contents.html

我建议为下面定义的每个案例创建 XSD:

像这样的案例:

  1. 验证元素取决于任何其他元素/属性的值或存在。
  2. 根据任何其他元素/属性的值或存在来验证元素的值。
  3. 根据任何其他元素/属性的值或存在来验证属性。
  4. 不允许从验证中忽略(随机)元素/属性。 (我的意思是说是使用有限制。)
  5. 具有不同数据类型的同名元素/属性。
  6. 根据任何其他元素/属性的值或存在来验证子元素。

并为此创建自己的 XML。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM