这是我想要解决的场景/问题 - 在我的XSD中的一系列元素中,我有一个元素 - 比如说 XYZ ,如果前面的元素之一可以是nillable - 说 ABC - 有一定的价值 - 比如说“Alpha”。如果前一个元素 - ABC 具有不同的值,则元素 XYZ 必须不可为空。
解决此问题的最佳方法是什么?
我正在使用C#& SQL Server。
是否可以在XSD中定义新属性?
答案 0 :(得分:4)
确实应修复XSD以控制元素和属性的结构和格式。您尝试执行的操作是实现无法使用XSD验证的业务规则。
但是,有一个框架可用于在XML中实现业务规则,它是一个名为Schematron的ISO标准。 Schematron基本上使用XPath的组合来实现逻辑,并使用XSLT来执行验证。
有一个.NET项目,我们称之为Schematron.NET。
这可能是有趣的阅读'Improving XML Document Validation with Schematron'。