XSD枚举一系列值

时间:2010-10-06 12:43:08

标签: xml xsd

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

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

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

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

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

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

提前致谢(对不起我的英语!)

2 个答案:

答案 0 :(得分:6)

您的问题没有显示足够的信息来说明准确无误的答案,但这可能会解决您的问题。

你可能有这样的代码:

<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>元素的内容类型。所以,你问:

  

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

您无需单独枚举<foobar>的所有有效值,就像您必须使用DTD一样。相反,您可以在type属性中使用predefined types XML Schema。

这是一个示例代码,用于定义元素<foobar>并允许它包含任何整数。

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

如果我误解了您的问题,请发表评论并更密切地定义您的问题。同时揭示更多您的架构也会有所帮助。

答案 1 :(得分:4)

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