1

使用 xsd:key 和 xsd:keyref,我们可以验证一个元素中的值是否在另一个元素中定义。我们在我们的模式中这样做是为了确保使用有效值,但我们还希望能够验证一个元素中指定的所有值是否在另一个元素的子元素中使用,即:

<elementList>
   <listEntry>Entry1</listEntry>
   <listEntry>Entry2</listEntry>
   <listEntry>Entry3</listEntry>
</elementList>
<elementOperations>
   <operation name="Entry1">Operation1</operation>
   <operation name="Entry3">Operation3</operation>
</elementOperations>

在此示例中,我们希望出现验证错误,因为没有名称属性指定 Entry2 的元素。使用 XSD Schema 验证这是否可能?

4

1 回答 1

2

如果您不允许在操作名称中出现重复值,这是可能的;在这种情况下,只需添加另一个指向相反方向的键/键引用对(即键现在是操作名称)。

如果可能出现重复,那么您不能单独使用 XSD 1.0 来实现 - Schematron 可以在这里为您提供帮助。或者,如果您在支持 XSD 1.1 的环境中工作,请使用 XSD 1.1 的xsd:assert.

于 2013-02-19T18:11:53.313 回答