我在下面搜索了一遍又一遍,但我认为我没有使用正确的词进行查询。
我需要验证 XML 架构 (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 文件及其类型,则会失败。
对于这种情况,日食编辑器会给出此错误:
src-resolve:无法将名称"external:ExternalComplexType"解析为(n("类型定义"组件。
感谢您查看此内容!对不起,如果有什么不清楚的地方,请在这里发布第一个帖子,尽力而为。
任何架构验证程序都将内置架构文档的架构,因此任何架构验证程序都应该能够验证架构文档。
检查错误的外部引用不仅仅是检查模式文档的模式有效性;对于我使用过的一些验证器,如果你要求验证架构文档,验证器会检查外部引用;对于其他验证器,它不会。
因此,一般来说,让验证程序检查架构文档的最可靠方法是尝试使用它来验证 XML 实例。我发现拥有一个具有很好理解的有效性错误的实例很方便。 如果验证程序在 XML 实例中发出有关该问题的错误消息,则架构正常;如果验证器根本没有发出任何错误消息,则它没有构建架构或其他错误。 如果它发出有关架构中问题的投诉列表,那么,这就是您要找的,不是吗?
可以从命令行调用的模式验证器包括Xerces-J,Xerces-C,Saxon,msv和libxml(但注意libxml对XSD的支持不完整(。