来自 XSD 的 属性 验证的最佳实践

Best practice for property validation from XSD

我可以使用 xsd.exe 从 XSD 生成 C# 模型 类,但是如果我将验证属性添加到模型属性,下次生成 类 我会失去变化。

仅添加一次验证的最佳做法是什么?

生成 类 是一种用于在尝试使用 .net 针对 XSD 进行编码时提高工作效率的方法。正如您所发现的,它不是双向工具。我认为您必须继续分别维护代码和 XSD - 但是您可能会考虑反转您的工作流程 - 从您的 类 生成 XSD 模式。

XSD.EXE 工具文档说 "If you specify a runtime assembly file (.exe or .dll extension), Xsd.exe generates schemas for one or more types in that assembly. You can use the /type option to specify the types for which to generate schemas." (https://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.110).aspx)

如果您能够在 XML 架构 (XSD) 中表示所有验证约束,那么您将受益于所有约束

  • 在一个地方定义,
  • 根据明确定义的标准表示,并且
  • 独立于 C#、Java、PhP、Python、Ruby 或任何其他语言进行通信 实现语言。

获得这些好处的最佳做法是纯粹使用 XML 架构,例如 XSD 来表示所有验证约束。

当开发人员在 XML 模式(例如 XSD 1.0)中可以表达的内容遇到瓶颈时,他们通常会选择以下几个方向之一:

  1. 使用 XSD 1.1
  2. 中可用的断言
  3. 迁移到另一个 XML 模式,例如 Schematron 或 RelaxNG。
  4. 用另一个验证层替换或增加 XSD 验证 基于他们选择的实现语言。通过分离 来自自动生成的验证的附加验证,两者 自动和自定义验证可以和平共存。