Linux命令行工具验证XSD 1.1?

时间:2013-09-13 09:21:57

标签: command-line command-line-interface xml-validation xsd-1.1

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

Xmllint不验证版本1.1。

4 个答案:

答案 0 :(得分:2)

我在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 lib,将新的Xerces-J放入其中,然后将其重新压缩到jar

Reference

编辑:更新了下载链接

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

以下是该程序可用于克服xmllint限制:

  1. 基于Oxygen Editor反向生成器(基于已有的XML文件)实现验证XML Schema 1.1版。 it could be downloaded from here with the 1 month license free

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

    class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
                pass
    
    def start_server():
                server = ThreadedHTTPServer((HOST, PORT), handler.Handler)
                server_thread = threading.Thread(name='server', target=server.serve_forever)
                server_thread.setDaemon(True)
                server_thread.start()
                server_thread.join()
                server.shutdown()
                server.server_close()
    
    if __name__ == "__main__":
            start_server()
    

    然而,在RNGConv工具的帮助下,xml架构可以转换为relaxng架构,该工具是Kohsuke Kawaguchi的MSV项目的一部分 应用以下转换命令:

    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
    
  3. 生成的relaxng模式文件可以与xmllint一起使用:

    java -jar rngconv-20060319/rngconv.jar user.xsd > user.rng
    

答案 3 :(得分:0)

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