3

是否有任何命令行工具可以根据 XSD 版本1.1验证 XML ?

Xmllint 不验证 1.1 版。

4

4 回答 4

5

我在 Xerces-J 周围找到了一个方便的包装器:https ://www.dropbox.com/s/939jv39ihnluem0/xsd11-validator.jar

java -jar xsd11-validator.jar -sf my.xsd -if my.xml

您可以通过解压缩 jar,将新的 Xerces-J 放入其中,然后将其重新压缩到 jar 来更新 Xerces-J 库

参考

编辑:更新的下载链接

于 2015-04-17T21:02:31.580 回答
2

Saxon 和 Xerces J 目前支持 XSD 1.1。两者都应该在 Linux 下顺利运行。

于 2013-09-15T23:31:12.327 回答
0

我在 AskUbuntu 上回答了这个问题。
它包括指向 Xerces-J 包装器的工作链接xsd11-validator.jar和一个易于使用的舒适 bash 脚本。

于 2019-06-12T19:14:36.747 回答
0

不幸的是,xmllint 不能支持 XML Schema 1.1,但它支持基于 RelaxNG 的 Schema(包括所有类似于 XML Schema 1.1 的改进)。

以下是可用于克服 xmllint 限制的过程:

  1. 基于 Oxygen Editor 反向生成器(基于现有的 XML 文件)实现您的验证 XML Schema 版本 1.1。 可以从这里下载 1 个月的免费许可证

  2. xmllint 将不接受生成的 XSD 1.1 文件,并显示以下错误消息:

    xmllint --schema user.xsd --noout user.xml 
    user.xsd:565: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': Invalid value for maxOccurs (must be 0 or 1).
    user.xsd:741: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': Invalid value for maxOccurs (must be 0 or 1).
    WXS schema user.xsd failed to compile
    

    然而,通过应用以下转换命令,可以借助作为 Kohsuke Kawaguchi 的 MSV 项目的一部分的RNGConv工具将 xml 模式转换为松弛模式:

    java -jar rngconv-20060319/rngconv.jar user.xsd > user.rng
    
  3. 生成的relaxng 模式文件可以与 xmllint 一起使用:

    xmllint --relaxng user.rng --noout user.xml 
    user.xml validates
    
于 2017-04-24T13:31:16.110 回答