1

这是我要解决的场景/问题 - 在我的 XSD 中的一系列元素中,我有一个元素 - 比如说XYZ,如果前面的元素之一 - 比如说ABC - 具有一定的值 - 比如说“Alpha ”。如果前面的元素 - ABC具有不同的值,则元素XYZ不能为空。

解决此问题的最佳方法是什么?

我正在使用 C# 和 SQL Server。

是否可以在 XSD 中定义新属性?

4

1 回答 1

4

确实应该固定一个 XSD 来控制元素和属性的结构和格式。您尝试做的是实施业务规则,无法使用 XSD 对其进行验证。

但是,有一个框架可用于在 XML 中实现业务规则,它是一个称为Schematron的 ISO 标准。Schematron 基本上结合使用 XPath 来实现逻辑和 XSLT 来执行验证。

为此有一个 .NET 项目,称为Schematron.NET

阅读“使用 Schematron 改进 XML 文档验证”可能会很有趣。

于 2011-03-26T21:20:27.420 回答