使用SchematronvalidationXML
我正在尝试使用SchematronvalidationXML文件,这比XSD更复杂。 我google了很多,最好的事情是这个微软网站 。 但这只展示了如何使用NMatrix.SchematronvalidationXSD,这不是我需要的。 我有NMatrix.Schematron DLL但我不知道如何使用它们。 有谁知道如何使用它?
我建议您使用Rick Jelliffe的ISO Schematron参考实现,使用纯XSLT,最好是XSLT 2.0,使用已建立的XSLT处理器,如Michael Kay的Saxon 。
使用Nuget的Saxon-HE会更好,因为它现在支持的不仅仅是Schematron在.NET上的日子
我正在使用Schematron.NET – Downlaod的源代码和示例,编译它或只是在示例中使用DLL。
然后我完全删除了图片的XSLT,因为我不需要它。 但是缺少一些像选择和类似的东西,但大多数都可以使用XPath进行测试。 因为它有点旧它没有实现所有function:(
这是使用Schematronvalidation的扩展版本
using NMatrix.Schematron; ... Schema schematronSchema = new Schema(); schematronSchema.Load(new FileStream("C:/thefile.sch", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); vld.AddSchema(schematronSchema); vld.Validate(new MemoryStream(Encoding.UTF8.GetBytes(XML_String)));
我使用文件流加载,以便文件不被锁定,这是.NET的XSLT引擎中的构建常见的烦恼
然后在“.sch”文件中,它只是简单,更简洁,以我的方式来validation架构数据。
Error Message
例如。
1 ppumkin na No name specified This is not the ppumkin I know! Not a number or not specified Your under age. Get 'outa!ahere!
请记住,只有在测试失败时才会出现错误。 即如果你对18岁以下的阻塞感兴趣,你需要测试它们是否超过18岁。它习惯了有点奇怪。
我以前从未使用过Schematron,老实说,现在有一天我像对待埃博拉这样的XML,以及与此有关的任何事情 – 但有时我们别无选择。
Schematron.NET中的示例向您展示了如何将XSLT1 / XLST2与Schematron混合以进行额外的控制和决策。
有些程序,比如oXygen,支持schematronvalidation,但是他们可能会使用像RI这样的东西。
- SqlCommand()ExecuteNonQuery()截断命令文本
- 为什么我在C#服务中得到这个SocketException?
- 在WinRT中下载网页会引发exception
- 如何使用selenium webdriver鼠标来查看隐藏的菜单而不执行任何鼠标点击?
- WPF:为代码隐藏中的元素添加一个drophadow效果
- 以原生速度运行动态编译的C#代码……怎么样?
- .NET Core 2.1 – 循环中的正则表达式200x比2.0慢(简单基准中为3x)
- DocumentDb在transactioncope中写入
- 如何访问Windows 8.1存储中的Hubsection Datatemplate内的任何控件