XML validation with Schematron/XSD in C#(在 C# 中使用 Schematron/XSD 进行 XML 验证)
问题描述
我一直在寻找一种方法来对 XML 文档进行一些更高级的业务规则验证.到目前为止,Schematron 似乎能够做到,我需要什么.
I've been looking around for at a way to make some more advanced business rule validation of XML documents. So far Schematron seems to be able to do, what I need.
我一直在环顾四周,发现的几个库都非常老旧,似乎不再受支持.Schematron 在 2002 年只是热"吗?是否有任何库可以在 C# 中进行验证 - 或者我该怎么做?
I've been looking around, and the few libraries I've found was very old and seemingly not supported any longer. Was Schematron only "hot" in 2002? Are there any libraries that can do the validation in C# - or how do I do it?
或者还有其他可以进行高级验证并拥有 C# 库并进行标准化的吗?
Or are there others that can do the advanced validation and have C# libraries and are standardized?
推荐答案
对于它的价值,这是我的经验......
For what it's worth, this has been my experience...
我曾经希望架构可以在业务规则验证方面做得更多.但是,根据我的经验,有一个模式来定义数据协定(格式、类型等)...... 不 来强制执行业务规则.试图让它变得更多会遇到各种各样的问题,这可能就是为什么 Schematron 的受欢迎程度似乎已经下降(可能是我无法备份的错误假设).
I've had moments where I wish schemas could do more along the lines of business rule validation. However, in my experience a schema is there to define a data contract (format, types, etc)... NOT to enforce business rules. Trying to make it more than that runs into all sorts of problems and may be why Schematron seems to have died down in its popularity (possibly bad assumption that I cannot backup).
要解决这个问题,通常可以采用两遍方法:
To get around this, one can generally do a two pass approach:
- 使用架构验证验证 xml 结构/数据类型等.
- 对 xml 应用业务规则检查(在普通 c# 代码中).
我了解您是否希望采用一体化的方法进行验证,但从长远来看,尝试为此使用架构会导致更多的麻烦.最后,您将通过隔离代码来更好地控制业务规则检查.
I understand if you're wanting to do an all-in-one approach to validation but attempting to use schema for this causes more headaches in the long run. In the end you'll end up having finer control over your business rule checking by isolating to code.
这篇关于在 C# 中使用 Schematron/XSD 进行 XML 验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 C# 中使用 Schematron/XSD 进行 XML 验证
基础教程推荐
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- 如何激活MC67中的红灯 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- rabbitmq 的 REST API 2022-01-01