<xs:simpleType name="ItemCategoryEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="Kitchen"></xs:enumeration>
<xs:enumeration value="Bathroom"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
是否可以定义一个元素“Inventory”,它应该有尽可能多的节点,命名为“Category”,因为“ItemCategoryEnum”有可能的枚举值?
因此,对于上面的示例,兼容的 XML 应该如下所示:
<Inventory>
<Category name="Kitchen">
<Item></Item>
<Item></Item>
<Item></Item>
</Category>
<Category name="Bathroom">
<Item></Item>
<Item></Item>
<Item></Item>
</Category>
</Inventory>
仅将“Category”的“name”属性指定为“ItemCategoryEnum”类型是不够的,因为这只能确保“name”属性不能具有枚举中列出的任何其他值。如果某些枚举值从未使用过,它不会抱怨。这意味着以下 XML 也将是兼容的:
<Inventory>
<Category name="Kitchen">
<Item></Item>
<Item></Item>
<Item></Item>
</Category>
</Inventory>
这里没有与“浴室”对应的类别。我希望将这一事实视为错误。
-桑迪普