这是我要解决的场景/问题 - 在我的 XSD 中的一系列元素中,我有一个元素 - 比如说XYZ,如果前面的元素之一 - 比如说ABC - 具有一定的值 - 比如说“Alpha ”。如果前面的元素 - ABC具有不同的值,则元素XYZ不能为空。
解决此问题的最佳方法是什么?
我正在使用 C# 和 SQL Server。
是否可以在 XSD 中定义新属性?
这是我要解决的场景/问题 - 在我的 XSD 中的一系列元素中,我有一个元素 - 比如说XYZ,如果前面的元素之一 - 比如说ABC - 具有一定的值 - 比如说“Alpha ”。如果前面的元素 - ABC具有不同的值,则元素XYZ不能为空。
解决此问题的最佳方法是什么?
我正在使用 C# 和 SQL Server。
是否可以在 XSD 中定义新属性?
确实应该固定一个 XSD 来控制元素和属性的结构和格式。您尝试做的是实施业务规则,无法使用 XSD 对其进行验证。
但是,有一个框架可用于在 XML 中实现业务规则,它是一个称为Schematron的 ISO 标准。Schematron 基本上结合使用 XPath 来实现逻辑和 XSLT 来执行验证。
为此有一个 .NET 项目,称为Schematron.NET。
阅读“使用 Schematron 改进 XML 文档验证”可能会很有趣。