我有一個XML模式定義一個進程的「規則」。每一個「規則集」適用於「資源」,這是這樣定義的特定列表:如何使用XSD限制具有給定屬性值的元素數量?
<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? – JWiley