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 处理的模式选项