2012-05-18 84 views
0

有可能没有任何真实世界的用途,但我想知道是否有可能验证一个属性对xsd。我生成从架构使用XSD.EXE一个CS文件,但没有进行验证逻辑的超过例如....xsd验证的c#属性

<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和验证之前提交提交。希望这使得sence,如果我已经错过了任何明显的教程或任何我想说的我已经google了,但我回来的是'验证xml对xsd',有时只是知道关键字使谷歌​​搜索的所有不同。

对Romil的回应:

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

回答

0

使用RegEx验证属性值。

XSD仅针对XML进行验证。