[英]Custom validation of standard xml schema (xsd) type in .net
我的问题是这样的:
gYear
和date
)而没有意识到其实际限制 gYear
的数字之前或之后的空格是可以的,但会在他们这边失败) 因此,这是一个问题:我可以执行哪些更严格的规则来验证某些标准类型? 我使用.NET 3.5(C#),我们在标准XmlReader
周围有一个包装器,因此根本不选择使用3rd party项目。 我考虑过使用其他预定义类型加载其他模式文件,这些预定义类型将扩展/覆盖所需的类型, 或者以某种方式赶上所需的类型验证节点并且我可以窥视所述节点的值的那一刻,但是我不是确定如何进行。
附加要求:验证过程应该是流式的(即没有XmlDocument
等)。
好吧,据我所知,确实没有解决此问题的简单方法。
我能想到的最好的办法是在读取架构并将其放入缓存时对其进行修改。
我只需删除type="xs:gYear"
并添加<simpleType>
子元素(如果需要):
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="^(19|2\d)\d{2}$" />
</xs:restriction>
</xs:simpleType>
幸运的是,我们拥有将验证错误转换为人类可读错误的基础架构,因此,对于这些元素的实际模式与验证错误之间的区别,应该不会造成混淆。
另外,值得注意的是,XML Schema中的每个单一类型都将facet whiteSpace
设置为collapse
,因此您不能从更合适的类型(例如gYear
, short
或decimal
继承。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.