2011-03-26 132 views
1

这是我想解决的场景/问题 - 在我的XSD中的一系列元素中,我有一个元素 - 比如说XYZ,如果上述其中之一元素 - 说ABC - 有一定的价值 - 说“阿尔法”。如果前面的元素 - ABC具有不同的值,那么元素XYZ必须不能为空。XML架构验证 - 现场验证

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

我使用C#& SQL服务器。

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

回答

4

确实应该修正XSD以控制元素和属性的结构和格式。您试图执行的是实施业务规则,这些规则无法使用XSD进行验证。

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

有这个知道的Schematron.NET一个.NET项目。

这可能是有趣的阅读 'Improving XML Document Validation with Schematron'。