【发布时间】:2014-01-22 13:49:30
【问题描述】:
我有一个为流程定义“规则”的 XML 模式。每个“规则集”都适用于给定的“资源”列表,其定义如下:
<rule_sets>
<rule_set name="Set 1" active="true">
<resources>
<resource>Resource 1</resource>
<resource>Resource 2</resource>
</resources>
<rule ... />
<rule ... />
</rule_set>
<rule_set name="Set 2" active="false">
<resources>
<resource>Resource 2</resource>
<resource>Resource 3</resource>
</resources>
<rule ... />
<rule ... />
</rule_set>
我想为我的 XSD 添加一个限制,允许每个资源仅分配给一个“活动”规则集;即'rule_set[@active="true"]'。 (每个资源都可以分配给任意数量的非活动规则集。)
这在 XSD 中可行吗?
到目前为止,我刚刚向“rule_sets”元素(它是“rule_set”的父元素)添加了一个键,如下所示:
<xs:key name="rule_set_resource_active_key">
<xs:selector xpath="rule_set" />
<xs:field xpath="resources/resource" />
<xs:field xpath="@active" />
</xs:key>
但这限制了我每个资源最多只能使用一个活动规则集和一个非活动规则集,这并不是我真正想要的。是否可以扩展它以满足我的要求?或者我可以重组我的文档来实现这一点吗?
【问题讨论】:
-
能否让
rule_set成为resource的从属元素,然后将max_occurs设置为1?