XML Schema (XSD) 验证工具?

标签 xml validation xsd schema

<分区>

在办公室,我们目前正在编写一个应用程序,该应用程序将根据给定的模式生成 XML 文件。我们在 .XSD 文件中有架构。

是否有工具或库可用于自动测试以检查生成的 XML 是否与架构匹配?

我们更喜欢适合商业用途的免费工具,尽管我们不会捆绑模式检查器,因此它只需要在开发期间供开发人员使用。

如果有任何区别,我们的开发语言是 C++,尽管我认为它不应该,因为我们可以生成 xml 文件,然后通过在测试中调用单独的程序来进行验证。

最佳答案

经过一些研究,我认为最好的答案是 Xerces ,因为它实现了所有 XSD,所以是跨平台的并且被广泛使用。我创建了一个 small Java project on github使用默认的 JRE 解析器(通常是 Xerces)从命令行进行验证。这可以在 Windows/Mac/Linux 上使用。

还有一个C++ version of Xerces如果您愿意使用它,则可用。 StdInParse utility可用于从命令行调用它。此外,下面的评论者指出了这个 more complete wrapper utility .

您还可以使用 xmllint,它是 libxml 的一部分.您可能已经安装了它。用法示例:

xmllint --noout --schema XSD_FILE XML_FILE

一个问题是 libxml 没有实现所有规范,因此您可能会遇到问题 :(

或者,如果您使用的是 Windows,您可以使用 msxml ,但您需要某种包装器来调用它,例如此 DDJ article 中描述的 GUI .但是,Windows 上的大多数人似乎都使用 XML 编辑器,例如 Notepad++(如 Nate's answer 中所述)或 XML Notepad 2007作为suggested by SteveC (还有几个商业编辑器,这里就不说了)。

最后,不幸的是,您会发现不同的程序会给出不同的结果。这主要是由于 XSD 规范的复杂性。您可能希望使用多种工具测试您的架构。

更新:我在 blog post 中对此进行了扩展.

关于XML Schema (XSD) 验证工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124865/

相关文章:

xml - XSLT 1.0 将特定的后代/子注释重新排列到与父/祖先相同的级别

C++ 感知字符

java - Spring WS : Add custom SOAP header

java - 解析 xml 找不到架构文件

java - JAXB -EclipseLink MOXy-嵌套复合对象未正确编码

c# - 此操作失败,因为在事件期间所做的一项或多项更改无效

php - 使用 XPath 搜索和打印 XML

c# - ASP.NET MVC 数据注释验证 ErrorMessageResourceType

asp.net-mvc - 使用 Select2 ASP.NET MVC 时进行不显眼的验证

javascript - xsd 类型 javascript 的限制