制作唯一的XSD元素时出错

时间:2012-11-03 13:37:44

标签: xml xsd unique categories

我正在为基于餐馆的系统制作一个小的xsd / xml文件。

以下是我的XSD文件的代码:

<xs:element name="table_cat">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="category" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
              <xs:element name="category_id" type="CatID" />
              <xs:element name="catdescription" type="Length50"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>

    <xs:unique name="unique-catid">
      <xs:selector xpath="category" />
      <xs:field xpath="category_id"/>

    </xs:unique>

  </xs:element>

但是每当我在XML文件中有超过1个Category_ID字段时,我就会收到以下错误:

The field 'category_id' is expecting at the most one value.

我尝试过不同的解决方案让它工作但似乎没有任何效果。

希望你能提供帮助 谢谢!

1 个答案:

答案 0 :(得分:0)

您实际上没有说过您要表达的约束 - 很难从错误的代码中反向设计您的要求。

无论如何,这让我觉得很糟糕:你有一对(id,description)对的重复序列,对中没有容器元素。这将不必要地处理数据。

也许你想要

<xs:unique name="unique-catid">
  <xs:selector xpath="category_id" />
  <xs:field xpath="."/>
</xs:unique>

但我无法确定这是否是你的意图。