代码之家  ›  专栏  ›  技术社区  ›  nrocha

一系列值的XSD枚举

  •  3
  • nrocha  · 技术社区  · 14 年前

    我必须像往常一样为XML结构验证目的构建一个XSD文件。

    在生成XSD(使用xmlspy)之后,我发现文件的一部分给我带来了麻烦。我有一个这样的枚举:

        <xs:enumeration value="1"/>
        <xs:enumeration value="1011"/>
        <xs:enumeration value="1032"/>
    

    等等。问题是,这个枚举中的任何给定整数都必须被视为有效的,并且我不能将枚举标记从1写到65635。

    我也不知道需要多少枚举元素,因为XML文件中这些枚举标记的数量是不固定的!

    如何告诉XSD任何整数值都是正常的,并且此枚举的XML文件上没有最小或最大匹配?

    事先谢谢(对不起我的英语!)

    2 回复  |  直到 9 年前
        1
  •  6
  •   Marcin    9 年前

    你的问题没有显示足够的信息来准确回答问题,但这可能会解决你的问题。

    您可能有如下代码:

    <xs:element name="foobar" type="enumType"/>
    
    <xs:simpleType name="enumType">
      <xs:restriction base="xs:integer">
        <xs:enumeration value="1"/>
        <xs:enumeration value="1011"/>
        <xs:enumeration value="1032"/>
      </xs:restriction>
    </xs:simpleType>
    

    这段模式定义了一个元素 <foobar> 一个简单的类型 enumType 这是 <FooBar & GT; 元素。所以,你问:

    我怎样才能告诉XSD 整数值正常,并且 上没有最小或最大匹配 此枚举的XML文件?

    您不需要单独枚举的所有有效值 <FooBar & GT; 就像你和DTD有关。相反,您可以使用 predefined types 中的XML架构 type 属性。

    下面是一个定义元素的示例代码 <FooBar & GT; 并允许它包含任何整数。

    <xs:element name="foobar" type="xs:integer"/>
    

    如果我误解了你的问题,请留下评论,并更详细地定义你的问题。同时,更多地揭示你的模式将是有益的。

        2
  •  4
  •   kasten    14 年前

    为什么必须使用枚举而不是简单的整数类型?