【问题标题】:Validating an XML structure against a local XML Schema根据本地 XML 模式验证 XML 结构
【发布时间】:2014-04-24 22:47:18
【问题描述】:

我的代码正在创建一个 XML 文档(使用 JDOM 1.1),我希望针对 XSD 文件对其进行验证。但是,根据http://www.w3.org/TR/xmlschema-1/#schema-loc,提供给解析器的schemaLocation 属性似乎只适用于可访问的URL。

没有办法引用本地 XSD 文件吗?针对无法在全球范围内访问的 XSD 进行验证是不可能的吗?没看懂……

【问题讨论】:

    标签: xml xsd jdom


    【解决方案1】:

    首先,schemaLocation 属性只是指定架构位置的一种方式,而且在很多情况下它并不是最好的方式(如果您不相信文档是有效的,为什么要相信它会告诉您它的架构在哪里?)。大多数模式验证器可能会提供在外部提供模式位置的选项,例如在命令行上或通过 API 或 GUI。

    其次,schemaLocation 是一个 URI。因此,它可以是一个相对 URL,例如“test.xsd”标识与源文档位于同一目录中的模式文档。

    【讨论】:

      【解决方案2】:

      我强烈建议您升级到 JDOM 2.0.5。 JDOM2 中用于模式验证的机制更易于理解和实现。考虑这段代码(采用from the JDOM2 package documentation (near the bottom)):

       File xsdfile = new File("myschema.xsd");
       XMLReaderJDOMFactory factory = new XMLReaderXSDFactory(xsdfile);
       SAXBuilder sb = new SAXBuilder(factory);
       Document doc = sb.build(new File("file.xml"));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-26
        • 2015-12-24
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 2011-07-07
        相关资源
        最近更新 更多