C# 在C中使用Schematron/XSD进行XML验证#

C# 在C中使用Schematron/XSD进行XML验证#,c#,.net,xml,xsd,schematron,C#,.net,Xml,Xsd,Schematron,我一直在寻找一种对XML文档进行更高级业务规则验证的方法。到目前为止,Schematron似乎能够做到我所需要的 我一直在四处寻找,发现的几个库非常古老,似乎不再受支持。Schematron在2002年只是“热门”吗? 是否有任何库可以在C#中进行验证?或者如何进行验证 或者还有其他人可以进行高级验证,拥有C#库并实现标准化吗?这是我的经验 我曾经希望模式能够在业务规则验证方面做得更多。然而,根据我的经验,有一个模式可以定义数据契约(格式、类型等)不执行以强制执行业务规则。试图做得更多会遇到各种

我一直在寻找一种对XML文档进行更高级业务规则验证的方法。到目前为止,Schematron似乎能够做到我所需要的

我一直在四处寻找,发现的几个库非常古老,似乎不再受支持。Schematron在2002年只是“热门”吗? 是否有任何库可以在C#中进行验证?或者如何进行验证


或者还有其他人可以进行高级验证,拥有C#库并实现标准化吗?

这是我的经验

我曾经希望模式能够在业务规则验证方面做得更多。然而,根据我的经验,有一个模式可以定义数据契约(格式、类型等)不执行以强制执行业务规则。试图做得更多会遇到各种各样的问题,这可能就是为什么Schematron似乎已经不再流行了(可能是我不能备份的错误假设)

为了解决这一问题,通常可以采用双通道方法:

  • 使用模式验证验证xml结构/数据类型等
  • 对xml应用业务规则检查(在普通c#代码中)

我理解,如果您想使用一种一体化的方法进行验证,但尝试使用模式进行验证会在长期内带来更多麻烦。最终,通过与代码隔离,您将能够更好地控制业务规则检查。

这非常值得!我自己也有一些相同的想法,但问题不在于我需要一个一体化的方法——而是我需要一个“验证包”,可以在许多应用程序之间共享——其中许多应用程序不是我的附属应用程序。因此,更重要的是需要某种开放标准来验证XML上的业务规则。这正是我在几个月后与Schematron发生冲突后所做的。同样值得注意的是,Schematron现在是ISO标准。我知道这是一个老问题,但是:你找到解决方案了吗?我现在处于这种情况——我使用XSD进行模式验证,但我希望使用类似Schematron的方法进行业务规则验证。事实上,直到我开始研究“制作我自己的XSLT验证器”时我才知道这一点,如果存在Schematron(或其他)的实际实现,我更愿意使用现有的验证器。。