【问题标题】:XSD: default integer value rangeXSD:默认整数值范围
【发布时间】:2013-03-18 20:26:26
【问题描述】:

在 XSD 文件中定义特定数据类型的元素时是否存在隐含的默认值范围?例如,如果我定义一个整数类型的元素:

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

这是否有一个隐含的最小值和最大值来验证?我知道我可以像这样明确定义有效范围:

<xs:element name="MyIntegerElement">
   <xs:simpleType>
      <xs:restriction base="xs:integer">
         <xs:minInclusive value="1"/>
         <xs:maxInclusive value="16"/>
      </xs:restriction>
   </xs:simpleType>
</xs:element>

但是,如果我在验证 XML 文件时不这样做,它会默认为一系列有效值吗?我一直在研究 XSD 文档,但还没有找到答案。

【问题讨论】:

    标签: xml xsd xml-validation


    【解决方案1】:

    嗯,这取决于数据类型...

    如果你看definition of integer at w3:

    整数的值空间是无限集{...,-2,-1,0,1,2,...}

    本质上,这意味着对于整数,默认情况下没有最小值/最大值范围,因为可以表示任何整数。

    另一方面,for an int:

    (...) maxInclusive 为 2147483647 和 minInclusive 为 -2147483648。

    longs、shorts 等的名单还在继续……

    您可以在此处阅读更多详细信息:http://www.w3.org/TR/xmlschema-2/#typesystem

    【讨论】:

    • 是的,但此时您正在使用 maxInclusive 和 minInclusive 明确定义有效范围。如果我没有使用那些明确定义范围,那么整数类型元素的有效范围是什么?因此,如果我有一个元件所限定和创建与 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 MyIntegerElement>将对照XSD该验证 XML文件?跨度>
    • 这是一个完全有效的integer (xs:integer),所以如果你根据模式验证它,它会说没问题。现在,如果您希望它适合 32 位,您可能需要使用 xs:int,在这种情况下,模式会说该特定值太大而无法容纳。这一切都归结为你想用你的数据来表示什么。 xs:integer VS xs:int 是理解数据表示之间差异的一个很好的起点。这里有一个不错的帖子:stackoverflow.com/questions/15336872/…
    • 谢谢。我想你在那里回答了我的问题。我的意图是让这些数据类型在默认情况下与它们所使用的平台相关,但在这种情况下似乎 int 是我想要使用的,而不是看起来是无限的整数。我仍然可以使用整数,但我必须明确定义限制,但它仍然不一定是跨平台的。
    • 我的荣幸。最后一点,如果您确实有对您的应用程序有意义的合理范围,请务必设置最小值/最大值,即使您使用的是有界数据类型。此外,还有一组不错的内置数据类型 (w3.org/TR/xmlschema-2/#built-in-datatypes),例如:negativeInteger、unsignedInt 等,一定要先探索这些,然后再定义自己的 :)
    • 这张图表w3.org/TR/xmlschema-2/#built-in-datatypes 帮助我更深入地理解了这一点。基本类型是十进制,它定义了你可以有多少位,然后整数是从十进制派生的,它从值中消除了小数,然后长是从整数派生的,它设置了一个默认的最小值和最大值范围,然后是 int从 long 派生,它将最小值和最大值重新定义为更小的值范围。
    猜你喜欢
    • 1970-01-01
    • 2018-06-28
    • 2017-11-04
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多