是否存在用于Xml / XDocument的声明式基于XPath的验证(即“Fluent Schematron”)库?

时间:2013-02-20 07:32:07

标签: c# .net xml validation linq-to-xml

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

但是,我想在POCC(Plain Old C#Code)中进行相同类型的“声明性验证”设置,因为需要完成的一些验证超出了Schematron可以处理的范围 - 至少没有额外的转换或管道,我不喜欢XML

我找到了few libraries like Fluent Validationsimilar postsbooks,但似乎没有任何内容适合XML / XPath - 但也许我太熟悉简洁的XPath语法了解Linq-to-XML如何真正适合..

所以问题是;

是否有适合利用XPath并使用XML文档的C#(.NET)流畅/声明性验证库?

在投票结束这个“购物问题”之前,请考虑这样一个图书馆的明显稀缺/模糊。似乎某些声明性验证库可以被这种支持所黑客攻击,但是在玩了一下之后,它就不会“感觉自然”了。在这方面扩展流畅的验证库以支持XPath的任何实践经验也会得到一个很好的答案,特别是如果它已被证明是一种合适的方法。


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

1 个答案:

答案 0 :(得分:0)

XSLT 2.0可用于基于声明的XPath验证。以下是一些好处:

  

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

指定数据类型
  • 变量
  • 输入参数
  • 用户定义的函数
  • 模板
  • 返回值

XSLT 2.0与.Net的集成详见以下问题和答案:

<强>参考