C# XSD、限制和代码生成
我正在为一个现有项目进行一些代码生成,我想从xsd开始。因此,我可以使用Xsd2Code/xsd.exe等工具来生成代码,还可以使用xsd来验证xml。那部分工作没有任何问题 我还想将一些限制转换为DataAnnotation(丰富Xsd2Code)。 例如,xs:minInclusive/xs:maxInclusive我可以转换为RangeAttribute 但是如何处理我们创建的自定义验证属性呢?我可以添加自定义面/限制吗?怎么做?或者是否有其他解决方案/最佳实践 我希望将所有内容都收集到一个(xsd)文件中,以便其中一个文件包含类(模型)的结构,包括必须添加的验证(属性)C# XSD、限制和代码生成,c#,xml,code-generation,xsd,C#,Xml,Code Generation,Xsd,我正在为一个现有项目进行一些代码生成,我想从xsd开始。因此,我可以使用Xsd2Code/xsd.exe等工具来生成代码,还可以使用xsd来验证xml。那部分工作没有任何问题 我还想将一些限制转换为DataAnnotation(丰富Xsd2Code)。 例如,xs:minInclusive/xs:maxInclusive我可以转换为RangeAttribute 但是如何处理我们创建的自定义验证属性呢?我可以添加自定义面/限制吗?怎么做?或者是否有其他解决方案/最佳实践 我希望将所有内容都收集到一
<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>
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元素也是一个问题