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

时间:2010-11-08 18:54:51

标签: xml xsd xsd-validation

我认为这与keyref有关,但我不确定,我真的不确定它是否可以完成。

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

有没有办法在我的XSD文件中强制进行这种类型的验证?

2 个答案:

答案 0 :(得分:24)

在stackoverflow或任何技术博客中已多次提出类似的问题..

但答案总是不可能


例如:

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

所有上述案例都无法实现..

但如果你能实现一些转型的话......那么你可以得到帮助。 我的意思是“首先按照你的要求进行转换并修改XML,

example ::如果期望特定字段具有某个值..如果条件满足则传递XML,如果不满足则不传递.. 在下一个块中,XSD将验证并明显错误:)你可以发现它缺少你的自定义验证..

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

注意:Schematron最近已经成名了!以下是教程:http://zvon.org/xxl/SchematronTutorial/General/contents.html

答案 1 :(得分:1)

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

案例如:

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

相关问题