2010-10-06 129 views
3

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

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

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

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

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

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

在此先感谢(和抱歉,我的英语!)

回答

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属性中使用XML Schema的predefined types

以下是定义元素<foobar>并允许其包含任何整数的示例代码。

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

如果我误解了你的问题,请留下评论,并更密切地定义你的问题。同时揭示更多的模式将会很有帮助。

+0

问题解决了......这只是我对xsl的无知而已!非常感谢您的帮助... – nrocha 2010-10-07 12:31:18

+0

可以为整数枚举设置固定长度吗?如 adimoldovan 2016-03-21 16:10:40

4

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

+0

因为我可能有几个标签匹配这些值(我的意思是没有,一个或几个) – nrocha 2010-10-06 13:15:58

+0

和类似于不会解决这个问题?也许http://www.w3schools.com/Schema/schema_facets.asp可以帮助你。 – kasten 2010-10-06 13:29:25