XML 模式/验证:数据类型双精度的不同分隔符

Posted

技术标签:

【中文标题】XML 模式/验证:数据类型双精度的不同分隔符【英文标题】:XML-schema/validation: different separator for datatype double 【发布时间】:2011-01-15 07:22:12 【问题描述】:

我将 xsd 文件中某些参数的数据类型从字符串更改为它们的真实类型,在本例中为双精度。现在我面临的问题是这里的逗号用作分隔符,而不是 w3 (http://www.w3.org/TR/xmlschema-2/#double) 定义的点,导致反序列化期间出现错误(C#,VS2008)。

我的问题:我可以使用 w3 模式进行验证,但双值使用不同的分隔符吗?

感谢您的帮助

【问题讨论】:

【参考方案1】:

如果您想继续使用 XML Schema 简单类型,则不能这样做。十进制及其派生的类型被锁定为使用句点。正如你所说:the spec here。

如果要使用逗号作为分隔符,则需要定义自己的简单类型,例如:

<xs:simpleType name="MyDecimal">
  <xs:restriction base="xs:string">
    <xs:pattern value="\d+(,\d+)?"/>
  </xs:restriction>
</xs:simpleType>

不过,在你这样做之前,请小心; XML 是一种数据存储格式,而不是一种表示格式。您可能需要考虑是在加载后还是在 XSLT 转换等过程中对其进行排序。

【讨论】:

很抱歉直到现在才回复,谢谢提示。自定义类型可以做到这一点,但正如您所建议的那样,考虑替代选项可能会更好。

以上是关于XML 模式/验证:数据类型双精度的不同分隔符的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中使用德文小数分隔符对双精度值进行 XML 反序列化

使用 databrics spark API 推断 xml 处理的模式选项

如何格式化数据库中的双精度数据并在 Android 上使用逗号作为小数分隔符设置到 Textview

基本数据类型float和double的区别

c语言 不同数据类型间的混合运算

ACCESS,货币数据类型等价于具有啥属性的数据数字类型?