我正在尝试针对一个XSD模式验证双重NaN值,该XSD模式应该防止这样的NaN值。但是,它在.NET中似乎有效。
我还使用其他XML验证器(例如在线工具和Altova XML Spy)对此进行了测试。这些工具不接受NaN值!
我正在使用以下XSD架构
<xs:element name="myDouble">
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:minExclusive value="-INF"/>
<xs:maxExclusive value="INF"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
当我尝试使用.NET XML库验证输入时,这似乎是有效的:
<myDouble>NaN</myDouble>
但是,我意识到在线XML验证器和Altova XML Spy之类的工具说此输入无效。
我不明白为什么会有如此不同的行为?
完整的代码可以在以下github存储库中找到: https://github.com/ozgurtuzgen/DoubleNaNValidation