2010-03-01 74 views
3

我工作的一些代碼生成用於現有項目,我想從一個XSD開始。所以,我可以使用工具Xsd2Code/XSD.EXE生成的代碼,同時也使用了XSD驗證XML。該部分沒有任何問題。XSD,限制和代碼生成

我也想將一些限制轉換成DataAnnotations(豐富Xsd2Code)。 例如XS:minInclusive/XS:我maxInclusive,便會可以轉化爲一個RangeAttribute。

但如何處理我們創建的自定義驗證屬性?我可以添加自定義方面/限制嗎?如何?還是有另一種解決方案/最佳做法。

我想收集一切(xsd)文件中的所有內容,以便一個文件包含類(模型)的結構,包括必須添加的驗證(屬性)。

<xs:element name="CertainValue"> 
    <xs:simpleType> 
    <xs:restriction base="xs:double"> 
     <xs:minInclusive value="1" /> 
     <xs:maxInclusive value="100" /> 
     <xs_custom:customRule attribute="value" /> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:element> 

回答

0

XML模式本身是模式約束的,所以您不能添加任意(在其眼中)元素。有一種工具可以添加任何你喜歡的東西,xs:annotation/xs:appinfo,它可以添加到大多數節點中。也許嘗試是這樣的:

<xs:element name="CertainValue"> 
<xs:simpleType> 
    <xs:restriction base="xs:double"> 
    <xs:annotation> 
     <xs:appinfo> 
     <xs_custom:customRule attribute="value" />  
     </xs:appinfo> 
    </xs:annotation> 
    <xs:minInclusive value="1" /> 
    <xs:maxInclusive value="100" /> 
    </xs:restriction> 
</xs:simpleType> 

這取決於在那裏Xsd2Code正在尋找的東西,但如果他們希望通過在驗證的XSD,APPINFO可能是他們唯一的選擇。只是這元素添加就可以了APPINFO也是問題。