模式验证在验证之前不修剪字符串
我在自动格式化 XML 文件后验证该文件时遇到问题。验证在验证字符串之前不会对其进行修剪。这是 .NET XML 验证实现中的错误还是这是可接受的行为?如果这是可接受的行为,那么通常如何处理这样的情况,因为在我看来,这两个 XML 文件是等效的。
我的 XSD:
<xs:schema ...>
...
<xs:simpleType name="ItemTypeData">
<xs:restriction base="xs:string">
<xs:enumeration value="ItemA" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
格式化前的 XML(验证通过):
...
<ItemType>ItemA</ItemType>
...
格式化后(验证失败):
...
<ItemType>
ItemA
</ItemType>
...
I have a problem with validating my XML file, after it has been automatically formatted. The validation doesn't trim the string before validating it. Is this a bug in the implementation of the XML validation of .NET or is this accepted behavior? If it is accepted behavior, how are cases like this normally handled, because in my opinion, the two XML files are equivalent.
My XSD:
<xs:schema ...>
...
<xs:simpleType name="ItemTypeData">
<xs:restriction base="xs:string">
<xs:enumeration value="ItemA" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
My XML before formatting (validation passes):
...
<ItemType>ItemA</ItemType>
...
After formatting (validation fails):
...
<ItemType>
ItemA
</ItemType>
...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
鉴于模式的定义方式,您的验证器行为正确。您要么需要阻止格式化程序对内容进行此类自由操作,要么需要更改架构 - 例如,通过将 ItemTypeData 设为 xs:token 而不是 xs:string 的限制(在 xs:token 中,考虑前导和尾随空格)微不足道)。
Your validator is behaving correctly, given the way the schema is defined. You either need to stop the formatter taking such liberties with the content, or you need to change the schema - for example by making ItemTypeData a restriction of xs:token rather than xs:string (in xs:token, leading and trailing whitespace is considered insignificant).