XSD规范中词汇与规范表示的区别

时间:2015-09-16 20:57:43

标签: xml xsd specifications xsd-validation

我今天正在引用XSD spec查找小数类型的定义。在其中,我发现了两种不同的数据类型冲突定义,词汇定义和下面引用的规范定义:

  

3.2.3.1词汇表示

     

decimal 具有由有限长度组成的词汇表示   由句点分隔的十进制数字序列(#x30-#x39)   小数指标。允许使用可选的前导符号。如果标志是   省略,假设“+”。前导零和尾随零是可选的。   如果小数部分为零,则可以省略句点和后续零点。例如:-1.23,12678967.543233,+ 100000.00,   210。

     

3.2.3.2规范表示

     

十进制的规范表示由禁止定义   词汇表示中的某些选项(§3.2.3.1)。   具体而言,禁止使用前面的可选“+”符号。的的   小数点是必需的。前导零和尾随零   禁止受以下条款限制:必须至少有一位数字   在小数点的右侧和左侧,可能是零。

总之,如果小数的小数部分为零,则词法表示允许缺少小数点和尾随零,而规范表示明确指出小数是必需的。

这些定义中的哪一个是“正确的”?我的应用程序发送词法表示,消费应用程序期望规范表示。

1 个答案:

答案 0 :(得分:4)

XSD中的有效性是根据词汇表示而不是规范表示来定义的,因此根据严格按照XSD要求xs:decimal排除小数点的任何合同,您的应用程序完全在其权利范围内。没有分数部分。

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