0
<root>
<elem type="1" id="1"/>
<elem type="1" id="2"/>
</root>

I want to check in XSD schema so that all the elements should have same attribute value for "type". Suppose one element has type="1" and other element has type="2", Then I want schema validation to fail. How to restrict this in Schema?

4

2 回答 2

1

如果你想要一个单一的类型值,为什么不把那个单一的值放在一个地方,而不是把它复制到多个地方呢?也就是说,为什么不以这种方式构建您的 XML?

<root type="1">
  <elem id="1"/>
  <elem id="2"/>
</root>

不允许不同元素具有不同类型值的事实初步证明 type 严格来说不是 elem 的属性,而是整个文档的属性。

这样,XML 的结构已经保证了类型只有一个值,而不是允许您或验证器必须添加额外的临时检查的不一致。

也可能有一些更复杂的方法来确保类型只有一个值(可能在 key 和 keyref 约束方面非常聪明;在 XSD 1.1 中,使用断言;使用外部或内部 Schematron 断言),但我没有当有这么简单的替代方案时,不想鼓励使用它们。

于 2013-07-02T15:28:20.450 回答
1

我认为这在 xsd 1.0 中是不可能的。

我不知道你到底在处理什么,但在这种情况下,我会觉得有一些包装元素,例如elems,它会保持那个值。因此

<root>
   <elems type="1">
      <elem id="1"/>
      <elem id="2"/>
   </elems>
</root>
于 2013-07-02T14:29:29.440 回答