XSD枚举一系列值

nro*_*cha 3 xml xsd

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

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

    <xs:enumeration value="1"/>
    <xs:enumeration value="1011"/>
    <xs:enumeration value="1032"/>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

jas*_*sso 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>
Run Code Online (Sandbox Code Playgroud)

这段架构定义了一个元素<foobar>和一个简单类型enumType,它是<foobar>元素的内容类型.所以,你问:

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

您不需要单独枚举所有有效值,<foobar>就像您必须使用DTD一样.相反,您可以在属性中使用预定义类型的XML Schema type.

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

<xs:element name="foobar" type="xs:integer"/>
Run Code Online (Sandbox Code Playgroud)

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