验证 XSD 架构?

Posted

技术标签:

【中文标题】验证 XSD 架构?【英文标题】:Validate an XSD Schema? 【发布时间】:2010-11-15 01:22:33 【问题描述】:

我正在编写一个 XML 模式(一个 XSD)来描述我们的合作伙伴应该向我们发送数据的格式。

而且我很难找到可以验证我编写的 XSD 架构文件的工具。

到目前为止,我发现的最佳方法是首先编写一个示例输入 XML 文件,然后尝试使用 XSD 验证 that。但这感觉不像是最佳实践策略。

那么,我应该如何验证 XML 架构?

【问题讨论】:

好问题。也许“验证”不是这里最好的动词,因为您针对 xsd“验证”xml,这不是您要问的。但是我经历了相同的过程,使用示例输入来检查 xsd,后来发现自己不得不更改 xsd,因为没有测试过极端情况。 @Daniel,不完全是。存在相当多的工具来验证模式本身,包括商业工具;您还可以基于 Apache Xerces 库构建一个。 因为已经提到了一些商业编辑器,同时也有其他工具可用,价格更合理。比如XML ValidatorBuddy也支持XML批量校验。 批量验证可以帮助您测试您的模式并进行更好的回归测试。所以拥有支持某种批处理任务的工具绝对是一个好处。 在Java中我已经成功地将XSOM用作suggested here 【参考方案1】:

W3C 在http://www.w3.org/2001/03/webdata/xsv 上有一个用于 XML 模式的在线验证器。由于 W3C 是 XML Schema 规范的来源,因此它们的验证器应该是值得信赖的。

【讨论】:

(18 个月后...)检查您的链接,它似乎已损坏。关于新网站在哪里的任何想法? 至少在 Chrome 上,无论如何。在 Safari 和 Firefox 上完美运行。 @todda.speot.is 他们一定在第 16 版中修复了它 该链接有时似乎无法访问,但如果您再试一次,它会再次找到。 “XML Schema Validator 服务已停止。”【参考方案2】:

如果这是短期的事情,您可以使用像 Stylus Studio 这样的工具的评估副本。

如果是长期维护,您可能需要考虑购买 XML 模式编辑器,例如 Stylus、Oxygen 或 Altova。

您没有指定源语言,但用 Java 或 .Net 编写模式验证器只需几行代码。

【讨论】:

如果您刚开始项目会产生相互引用的模式,或者 WSDL 到 WSDL 到 Schema,那么还要看看 Altova SchemaAgent,它不仅可以可视化和验证此类引用,但也可以为您的组织或 Internet 提供一组架构。 我发现的一个开源工具是 xmllint,我这样使用它:xmllint --noout --schema w3.org/2001/XMLSchema.xsdmySchema.xsd @AlexanderKjäll 你应该把它作为一个(的)答案。 Stylus Studio 工具工作正常,您只需给他们您的邮件地址,他们就会向您发送 14 天激活试用版。在他们的工具中,当您将 xsd 放入工具中时,它可以验证并创建图表。最好的,【参考方案3】:

Java SDK 附带一个名为 xjc 的标准工具。此工具生成解析您的模式的类。您可以使用此代码来验证您的合作伙伴的输入。

另请参阅:http://www.java2s.com/Tutorial/Java/0440__XML/ThexjcTool.htm

【讨论】:

这比寻找下载或使用在线表格的工具要容易得多。 xjc 的官方 Java 8 文档【参考方案4】:
cd /the/dir/with/your/schema
curl -O https://www.w3.org/2012/04/XMLSchema.xsd
xmllint.exe --noout --schema XMLSchema.xsd <your schema>

在 *nix(包括 Windows 上的 git-bash 或类似)中,如果架构有效,则 $? == 0 否则 $? == 1。我确定有一些等效的 powershell ...

这来自@AlexanderKjäll 对@lavinio 其他地方的回答的评论。我添加了我自己的评论说@AlexanderKjäll 应该添加这个作为答案。但是(至少对我而言),它并不完全正确,因为它无法使用远程文件 URI。因此我的回答。如果您对此表示赞同,请您支持他们的评论。

【讨论】:

【参考方案5】:

那么,我应该如何验证 XML 架构 (XSD)?

你问的问题很好。只是“挥舞它”可能会给你带来麻烦。来自***文章XML Schema Editor(强调我的)

[W3C XML Schema] 标准是通用的,允许编程 继承和类型创建等概念,但它很复杂标准本身技术含量很高,并分 3 个不同的部分发布,因此如果没有就很难理解 投入大量时间

那么,鉴于 W3C XML Schema 标准的复杂性,您如何确保您创建的模式符合该标准?来自同一篇***文章:

用户在使用 XSD 标准时面临的问题可能是 使用图形编辑工具缓解。虽然任何 基于文本的编辑器可用于编辑 XML Schema、图形 编辑器提供优势;允许文件的结构是 以图形方式查看和编辑,带有验证支持、入口助手 和其他有用的功能。

在该 Wikipedia 文章的底部,您会找到 XML 模式编辑器的列表,其中一些被许可为“免费软件”。

【讨论】:

以上是关于验证 XSD 架构?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Spring的PayloadValidatingInterceptor验证多个XSD架构

无法针对xsd架构验证xml doc(无法找到元素'replyMessage'的声明)

如何验证XML架构中的命名约定

在 C# 中针对引用的 XSD 验证 XML

XmlSchemaValidationException:这是一个无效的 xsi:type 'Book' 尝试反序列化使用 XSD 架构验证它的 XML 时

具有相同元素名称但属性值不同的XML的XSD架构[关闭]