我一遍又一遍地搜索,但我认为我没有使用正确的单词进行查询。
我需要验证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)'类型定义'组件。
谢谢你看看这个!对不起,如果有什么不清楚的地方,请先发帖,尽力而为。
答案 0 :(得分:1)
任何架构验证程序都将具有内置架构文档的架构,因此任何架构验证程序都应该能够验证架构文档。
检查错误的外部引用不仅仅是检查模式文档的模式有效性;对于我使用的一些验证器,如果要求验证模式文档,验证器会检查外部引用;与他人一起,却没有。
因此,通常,获取验证程序检查模式文档的最可靠方法是尝试使用它来验证XML实例。我发现有一个具有良好理解的有效性错误的实例很方便。如果验证器在XML实例中发出有关该问题的错误消息,则架构正常;如果验证器根本没有发出任何错误消息,那么它不会构建架构或其他错误。如果它发布了关于模式中问题的投诉列表,那么,那就是你要找的东西,不是吗?
可以从命令行调用的模式验证器包括Xerces-J,Xerces-C,Saxon,msv和libxml(但是n.b. libxml对XSD的支持不完整)。