验证XSD文件的格式和内容

时间:2014-12-16 19:43:55

标签: validation command-line xsd

我一遍又一遍地搜索,但我认为我没有使用正确的单词进行查询。

我需要验证XML Schema(xsd)文件的格式和内容。我还需要通过命令行执行此操作。为了提供更多指导,我想像Eclipse模式编辑器那样(但是通过命令行)。

假设我有这个架构:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
  targetNamespace="http://www.example.org/ExampleXMLSchema" 
  xmlns:tns="http://www.example.org/ExampleXMLSchema" 
  xmlns:external="http://www.example.org/ExternalXMLSchema" 
  elementFormDefault="unqualified">

    <import schemaLocation="ExternalXMLSchema.xsd" 
      namespace="http://www.example.org/ExternalXMLSchema">
    </import>
    <complexType name="ExampleComplexType">
      <sequence>
        <element name="ExternalElement" 
          type="external:ExternalComplexType"></element>
      </sequence>
    </complexType>
</schema>

我想要一个验证格式的工具(没有丢失括号,没有丢失的结束标记等),但也要确保外部引用是正确的。在此示例中,如果验证程序找不到ExternalXMLSchema.xsd文件及其类型,则会失败。

eclipse编辑器为这种情况提供了这个错误:

  

src-resolve:无法将名称'external:ExternalComplexType'解析为(n)'类型定义'组件。

谢谢你看看这个!对不起,如果有什么不清楚的地方,请先发帖,尽力而为。

1 个答案:

答案 0 :(得分:1)

任何架构验证程序都将具有内置架构文档的架构,因此任何架构验证程序都应该能够验证架构文档。

检查错误的外部引用不仅仅是检查模式文档的模式有效性;对于我使用的一些验证器,如果要求验证模式文档,验证器会检查外部引用;与他人一起,却没有。

因此,通常,获取验证程序检查模式文档的最可靠方法是尝试使用它来验证XML实例。我发现有一个具有良好理解的有效性错误的实例很方便。如果验证器在XML实例中发出有关该问题的错误消息,则架构正常;如果验证器根本没有发出任何错误消息,那么它不会构建架构或其他错误。如果它发布了关于模式中问题的投诉列表,那么,那就是你要找的东西,不是吗?

可以从命令行调用的模式验证器包括Xerces-J,Xerces-C,Saxon,msv和libxml(但是n.b. libxml对XSD的支持不完整)。