XSD规范中词汇表述与规范表述之间的区别

Rus*_*uss 4 xml xsd specifications xsd-validation

我今天参考了XSD规范,以查找十进制类型的定义。在其中,我发现了两个不同的数据类型定义冲突,一个词法定义和一个下面引用的规范定义:

3.2.3.1词汇表示

十进制具有一个词法表示,由有限长度的十进制数字序列(#x30-#x39)组成,这些序列之间用句点分隔,作为十进制指示符。允许使用可选的前导符号。如果省略符号,则假定为“ +”。前导零和尾随零是可选的。 如果小数部分为零,则可以省略周期和随后的零。例如:-1.23、12678967.543233,+ 100000.00、210。

3.2.3.2规范表示

十进制的规范表示是通过禁止词法表示(第3.2.3.1节)中的某些选项来定义的。具体来说,禁止前面的可选“ +”号。小数点是必需的。禁止前导和尾随零,但必须遵守以下规定:小数点左右必须至少有一位数字,该数字可能是零。

总而言之,如果小数的小数部分为零,则词法表示允许不存在小数点和尾随零,而规范表示则明确指出需要十进制。

以下哪个定义是“正确的”?我的应用程序正在发送词汇表示形式,而正在使用的应用程序正在期望规范表示形式。

kjh*_*hes 5

XSD中的有效性是针对词汇表示形式而不是规范表示形式定义的,因此,根据XSD严格要求的任何合同,您的应用程序都完全在其权限之内,该合同要求XSD xs:decimal在没有小数部分的情况下排除小数点。

规范表示法不在XSD中使用,但提供了一种将数据类型序列化为其他W3C建议(例如XPath / XQuery)的标准方法。