2012-05-18 115 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進行驗證。