我非常不幸地与XML交叉,并且需要根据目前保存在XSD中的规则来验证XML数据。
问题是同一DOC的XML有3个版本,每个版本都有基于元素值的独立规则和子规则。
我想知道在过去几年中是否有任何nuget package thing可以用更好的引擎、语法或其他东西来验证XML,以避免使用旧的、不灵活的.NET垃圾。
我知道的一种方法是解析XML,检查值,例如版本,然后使用和XSD作为文件的那个版本。但有些规则适用于不同版本的相同元素,即男性/女性类型的问题。因此,从技术上讲,我将不得不从9个XSD文件开始,随着规则变得复杂,我将得到更多的文件。所有版本的规则都在使用中,这使得它更加复杂。
我看到一些东西从我的屏幕上弹出断言。但.NET不支持这一点。是否有某种验证引擎和语法。我真的只想要一个文件根据XML保存的数据应用规则。
发布于 2014-10-10 09:23:40
谢谢@kjhughes!这就是我所看到的,Schematron“断言”,但我认为这仅仅是为了像Perl一样。但进一步调查发现了Schematron.NET
下载文件时,它有一个基本的win验证程序,或者只需自己打开DLL项目,签出源代码并编译DLL。
然后在模式中,您可以这样声明它。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/po-schematron" xmlns="http://example.com/po-schematron" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:annotation>
<xsd:appinfo>
<schema xmlns="http://www.ascc.net/xml/schematron">然后,您只需花一些时间阅读Schematron ISO并继续验证XML。即使你知道你真的不想..。但有时候你只需要。
如果您从未使用过Shematron或对XPath知之甚少,那么她的介绍就是对Shematron的介绍。它有一些示例代码和对整个过程的足够好的演练。
https://stackoverflow.com/questions/26281806
复制相似问题