2

我目前正在使用Schematron进行 XML 文档 [数据] 验证。Schematron 似乎可以正常工作,至少在初始测试中是这样,我喜欢以用户为中心的验证与 XPath 上下文/规则1相结合的一般方法。

但是,我希望在 POCC(普通旧 C# 代码)中设置同样类型的“声明式验证”,因为一些需要完成的验证超出了 Schematron 可以处理的范围 - 至少不需要额外的转换或管道我不太喜欢 XML 。

我找到了一些库,如 Fluent Validation类似的帖子书籍,但似乎没有什么是针对 XML/XPath 量身定制的——但也许我太迷恋于简洁的 XPath 语法,无法理解 Linq-to-XML 如何真正适合..

所以问题是;

是否有一个 C# (.NET) 流利/声明性验证库专为利用 XPath 和处理 XML 文档而设计?

在投票将其作为“购物问题”结束之前,请考虑这样一个图书馆的明显稀缺/默默无闻。似乎某些声明式验证库可以在这种支持下被破解,但是在玩了一会儿之后,它就“感觉不自然”。在这方面扩展 fluent 验证库以支持 XPath 的任何实际经验也将是一个很好的答案,特别是如果它已被证明是一种合适的方法。


1该项目还使用 XSD Schema 验证进行结构/类型验证(即“类型良好”的验证)。这一阶段的验证是关于“正确语义”的验证;但是,XSD 不会生成“友好的”错误消息,它不能处理 [co-]dependent 值,并且......更冗长。RELAX NG 至少可以解决其中一个问题,但不是全部。

4

1 回答 1

0

XSLT 2.0 可用于基于声明性 XPath 的验证。这里有一些好处:

随着 2.0 版的发布,XSLT 现在允许您将样式表设计为可感知模式。模式感知 XSLT 系统提供了许多好处,包括在 XSLT 转换之前验证输入树以确保 XSLT 样式表仅处理有效输入的能力,以及验证输出树以确保 XSLT 转换产生的能力有效的 XML 输出。您还可以为以下内容指定数据类型:

  • 变量
  • 输入参数
  • 用户定义函数
  • 模板
  • 返回值

XSLT 2.0 与 .Net 的集成在以下问题和答案中进行了详细说明:

参考

于 2014-06-19T23:17:22.360 回答