C# 属性的 .xsd 验证

本文关键字:验证 xsd 属性 | 更新日期: 2023-09-27 18:34:31

这可能

没有任何现实世界的用途,但我想知道是否可以针对 XSD 验证属性。我使用 xsd 从架构生成了一个 cs 文件.exe但没有一个验证逻辑被继承,例如......

<xsd:element type="Text_Key" name="LPI_Key"/>
</xsd:simpleType> 
<xsd:simpleType name="Text_Key">
<xsd:restriction base="xsd:string">
   <xsd:length value="14" fixed="true"/>
   <xsd:pattern value="[0-9][0-9][0-9][0-9][LXC][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"/>
</xsd:restriction>
Generates
private string lPI_KeyField;

也许我错过了一些东西,但我认为这是可能的。我知道我可以验证我是否可以将属性转换为 xml,但这似乎有点倒退,正如我所说,它可能没有任何实际用途,但似乎可以说明如果验证逻辑已经存在,为什么不使用它。属性上的 id 验证原因是我可以在用户键入值时通知用户有问题,而不是等到输入所有值并在转换为 xml 和验证之前点击提交。希望这有意义,如果我错过了任何明显的教程或任何我想说的话,我已经用谷歌搜索过了,但我得到的只是"针对 xsd 验证 xml",有时只知道关键字在谷歌搜索中会有所不同。

对罗米尔的回应:

感谢您的回复。虽然我同意 RegEx 会执行所需的验证,但如果 xsd.exe 会为你生成它,那就太好了。但正如在我的原始帖子中看到的那样,没有进行验证,你可以说我只是懒惰,但我认为这是试图减少事故和混乱。在整个应用程序、数据存储等中使用一组验证规则,意味着没有验证错误会禁止用户(在上面的情况下,xml 架构是我无法控制的预定义架构,我确定这是许多人也会相关的情况(。如果我要编写自己的正则表达式验证(并且用作参考点的模式 im 是一个非常大的(和 XSD 验证规则在哪里更改,那么我将不得不更新正则表达式中的所有更改(请记住,原始正则表达式可能会阻止用户输入有效数据,直到执行更新(。现在,如果我能够直接针对 xsd 进行验证,那么只需将旧的替换出来并将新的放入(出于此问题的目的,我们可以假设只有验证逻辑发生了变化;-((,毕竟属性的值仍然是与 xml 字符串中的值相同。

C# 属性的 .xsd 验证

使用 RegEx 验证属性值。

XSD 仅针对 XML 进行验证。